Генератор лексического анализатора и генератор синтаксического анализатора языков программирования. (Глава 6)
Содержание
- 2. Архитектура
- 3. Определение Описание %% - разделение между секциями правила %% подпрограммы Используемые классы символов: [0-9] [0123456789] –
- 4. Секции Секция описания ИМЯ ВЫРАЖЕНИЕ Если потом это имя встречается, то оно заменяется на это выражение.
- 5. Замечания Если несколько правил дают код одинаковой длины , то выполняется подстановки соответствующие первому правилу. Если
- 6. Секция подпрограмм Все копируются в генерируемый Си файл. В ней описывается >=2 функций. Int YYWRAP() –
- 7. ПРИМЕР NODELIM [^ \ t \ n] %{ int l,w,c; l = w = c =
- 8. Полезные функции char yytex – буфер в котором накапливается выделяемая процедура. int yyleng – длина цепочки,
- 9. Еще пример. Калькулятор %{ #include #include "yycalc.h" extern int yylval; void yyerror(char *); %} L [a-z]
- 10. ГЕНЕРАТОР СИНТАКСИЧЕСКОГО АНАЛИЗАТОРА ГЛАВА 6
- 11. Yet Another Compiler Compiler Спецификация Секция определения %% Секция правил %% Секция подпрограмм Генерирует восходящий распознаватель
- 12. Разрешение конфликтов Если приоритеты альтернативных действий определены и различны, то выполняется действие с большим приоритетом. Если
- 13. Семантика Семантические действия – это код на Си заключённый в фигурные скобки Statmt: if ‘(‘expr’)’ statmt
- 14. Пример. Калькулятор %{ #include void yyerror(char*); int yylex(void); int sym[26]; %} %token INTEGER VARIABLE %left '+'
- 16. Скачать презентацию