ВУЗ:
Составители:
Рубрика:
S
T * T
T + T T - T
Пример наследуемых атрибутов приведен на следующем рисунке:
x:= if A then b else C
:=
i
x if i ri
A B C
b r i
7.18. YACC
yacc - программа синтаксического анализа (yet another compile of compiles).
Также как и lex – ‘она начально была написана, как команда для ОС UNIX.
Часто эти команды используются совместно.
Пример.
% token CONST VAR ZN EQ
%%
pr: VAR EQ vyr ((выражение)) {printf(“prog\n”);}
vyr : CONST ZN vyr {printf(“CONST ZN vyr\n”);}
VAR ZN vyr {printf(“VAR ZN vyr\n”);}
CONST {printf(“CONST\n”);}
VAR {printf(“VAR\n”);}
Работа над примером : а1 = а1 + с3 - 13
выдала :
CONST
VAR ZN vyr
VAR ZN vyr
prog
Для обработки ошибок есть стандартная функция ERROR.
flex - fast lexical analyzer generator
раздел деклараций
%%
раздел правил
%%
пользовательский код
Раздел деклараций :
имя значение
Раздел правил :
— 90 —
r
* i r
+ -
a b c d
r r i i
i - integer
r - real
S r * ir T * T + - T + T T - T a b c d r r i i i - integer r - real Пример наследуемых атрибутов приведен на следующем рисунке: x:= if A then b else C := i x if i ri A B C b r i 7.18. YACC yacc - программа синтаксического анализа (yet another compile of compiles). Также как и lex – ‘она начально была написана, как команда для ОС UNIX. Часто эти команды используются совместно. Пример. % token CONST VAR ZN EQ %% pr: VAR EQ vyr ((выражение)) {printf(“prog\n”);} vyr : CONST ZN vyr {printf(“CONST ZN vyr\n”);} VAR ZN vyr {printf(“VAR ZN vyr\n”);} CONST {printf(“CONST\n”);} VAR {printf(“VAR\n”);} Работа над примером : а1 = а1 + с3 - 13 выдала : CONST VAR ZN vyr VAR ZN vyr prog Для обработки ошибок есть стандартная функция ERROR. flex - fast lexical analyzer generator раздел деклараций %% раздел правил %% пользовательский код Раздел деклараций : имя значение Раздел правил : — 90 —
Страницы
- « первая
- ‹ предыдущая
- …
- 88
- 89
- 90
- 91
- 92
- …
- следующая ›
- последняя »