Аннотация 3
Теоретическое введение 3
Формальные грамматики 3
Формальное определение грамматики. Форма Бэкуса-Наура 3
Принцип рекурсии в правилах грамматики 4
Задача разбора 5
Виды рекурсий и разбора 6
Классификация языков и грамматик 6
Классификация грамматик по Хомскому 6
Тип 0: грамматики с фразовой структурой 6
Тип 1: контекстно-зависимые (КЗ) и неукорачивающие грамматики 6
Тип 2: контекстно-свободные (КС) грамматики 7
Тип 3: регулярные грамматики 7
Соотношения между типами грамматик 7
Трансляторы 8
Формальное определение транслятора 8
Этапы трансляции. Общая схема работы транслятора 8
Интерпретаторы 10
Lex и Yacc 11
Обзор генераторов кода 11
Совместное использование Lex и Yacc. 11
Lex 13
Theory 13
Practice. 15
Реализация lex в Unix 18
YACC- Yet Another Compiler Compiler 19
Структура YACC-программы 20
Семантические действия 21
Лексический анализ 22
Реализация Yacc в Unix 24
YACC(1) 24
Постановка задачи 26
Транслятор 26
Грамматика синтаксического анализатора 26
Исходная грамматика 26
Эквивалентная грамматика без левой рекурсии 26
Лексический анализатор 27
Синтаксический анализатор 27
Взаимодействие анализаторов 27
Оптимизатор 27
Алгоритм оптимизации 27
Пример оптимизации 28
Интерпретатор 30
Заключение 30
Приложения 31
Analyser.h 31
Analyser.cpp 35
error.h (структуры исключений и перечисления ошибок) 48
transl.cpp (транслятор) 49
interpret.cpp (интерпретатор) 50
Список литературы 51
|