Использование UNIX для синтаксического и лексического анализа



         

Функции и переменные Yacc


Yacc создает для Вас функцию yyparse. Эта функция не имеет аргументов и возвращает 0 или 1 в случае успеха или отказа. Все используемые переменные (yytext, yylval и так далее) определены в лексическом анализаторе.

Интеграция Lex и Yacc Lex очень часто используется в качестве лексического анализатора для Yacc. Эти две программы были специально разработаны для эффективного совместного использования. Обычно, при определении лексем в Yacc ожидается, что анализатор yylex возвратит эти лексемы. Эти зависимости несложно установить. В Yacc можно определить строку типа

% token INTEGER

Эта лексема затем используется в грамматике. В Lex необходимо определить способ возврата этого целого числа:

%{ #include "y. tab. h" %} %% [1-9][0-9]* { yylval=atoi(yytext); return INTEGER;}

Необходимо включить заголовок в вывод Lex таким образом, чтобы значения лексем корректно передавались между лексическим и синтаксическим анализатором. Также необходимо сформировать вашу грамматику, используя опцию -d для Yacc, чтобы создать соответствующий файл заголовка.

[ ] [ ] [ ]

[ZEBR_TAG_td ALign="Left" vAlign="TOP">




Содержание  Назад