Как использовать yylval со строками в yacc

Крупное приложение, что я раньше продолжал работать в начале 1990-х, содержало обработку исключений на базе С с помощью setjmp и longjmp. Энергозависимое ключевое слово было необходимо на переменных, значения которых должны были быть сохранены в блоке кода, который служил пунктом "выгоды", чтобы они Вар быть сохраненным в регистрах и вытертым longjmp.

5
задан neuromancer 5 December 2009 в 10:35
поделиться

1 ответ

См. раздел руководства Flex по взаимодействию с YACC .

15 Взаимодействие с Yacc

Одним из основных применений flex является компаньон по yacc парсер-генератор. парсеры yacc ожидают вызвать процедуру с именем yylex () для найти следующий входной токен. Рутина должен возвращать тип следующий токен, а также любой связанное значение в глобальном yylval. Чтобы использовать flex с yacc, нужно указать параметр -d для yacc, чтобы указать ему для создания файла y.tab.h содержащие определения всех % токенов, появляющихся во вводе yacc. Затем этот файл включается в гибкий сканер. Например, если один из токенов - TOK_NUMBER, часть сканер может выглядеть так:

 % {
 #include "y.tab.h"
 %}

 %%

[0-9] + yylval = atoi (yytext); вернуть TOK_NUMBER;
7
ответ дан 18 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: