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