Специальная математика. Соловьев А.Е. - 79 стр.

UptoLike

Составители: 

Рубрика: 

2a S b<cE>
2b <cE> cE правило 2.
2c E .
3a S a<bbS>
3b S cA правило 3
3c S
7.9. LEX
lex и yacc - программы, содержащие средства для написания компилятора.
lex – программа (в терминах UNIX – команда) лексического анализа облегчает задачу
выделения лексем.
yacc - программа синтаксического анализа.
Структура lex – программ:
%{ Вставка фрагмента программы на Си
%}
Раздел деклараций : имя_значение.
%%
Раздел правил : шаблон_действие.
%%
Пользовательский код.
Раздел деклараций:
%token лексемы
Раздел правил:
нетерминал: | цепочка символов { код на Си }
;
%%
start : ‘x’ lettera ‘y lettera ‘\n’ { (printf(“Ok\n”); }
;
lettera : ‘z’ letterb
| ‘z’
;
letterb : ‘,’ ‘z’ letterb
| ‘,’ ‘z’
;
Пример 1:
%%
yyerror( str )
char *str;
{ printf( “error: %s”,str); }
yylex()
{
int c=getchar();
return(c);
}
main()
{ yyparse();}
____________________prog.y
— 79 —
{
}
{
}
       {                 }
            2a S  b
            2b   cE                правило 2.
            2c E   .



{                       }
   3a S  a
   3b S  cA                   правило 3
   3c S  

                                                7.9. LEX

lex и yacc - программы, содержащие средства для написания компилятора.
lex – программа (в терминах UNIX – команда) лексического анализа облегчает задачу
выделения лексем.
yacc - программа синтаксического анализа.


Структура lex – программ:
%{ Вставка фрагмента программы на Си
%}
Раздел деклараций : имя_значение.
 %%
Раздел правил : шаблон_действие.
 %%
Пользовательский код.
Раздел деклараций:
      %token лексемы
Раздел правил:
нетерминал: | цепочка символов { код на Си }
                 ;
%%
start : ‘x’ lettera ‘y’ lettera ‘\n’ { (printf(“Ok\n”); }
                ;
lettera :         ‘z’ letterb
                | ‘z’
                ;
letterb :         ‘,’ ‘z’ letterb
                | ‘,’ ‘z’
                ;
Пример 1:
%%
yyerror( str )
char *str;
{ printf( “error: %s”,str); }
yylex()
{
int c=getchar();
return(c);
}
main()
{ yyparse();}
____________________prog.y
                                                 — 79 —