Bison 1.35 - Table of Contents
Bison
Генератор синтаксических анализаторов, совместимый с YACC
для Bison версии 1.35, 25 февраля 2002
Чарльз Доннелли Ричард Столлмен
- Введение
- Условия использования Bison
- GNU GENERAL PUBLIC LICENSE
- Preamble
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- Appendix: How to Apply These Terms to Your New Programs
- 2. Принципы Bison
- 2.1 Языки и контекстно-свободные грамматики
- 2.2 От формальных правил к входному тексту Bison
- 2.3 Семантические значения
- 2.4 Семантические действия
- 2.5 Положения
- 2.6 Выходной текст Bison: файл анализатора
- 2.7 Этапы использования Bison
- 2.8 Обзор схемы грамматики Bison
- 3. Примеры
- 3.1 Калькулятор обратной польской нотации
- 3.1.1 Объявления для
rpcalc
- 3.1.2 Правила грамматики для
rpcalc
- 3.1.3 Лексический анализатор
rpcalc
- 3.1.4 Управляющая функция
- 3.1.5 Подпрограмма сообщения об ошибках
- 3.1.6 Запуск Bison для создания анализатора
- 3.1.7 Компиляция файла анализатора
- 3.2 Калькулятор инфиксной нотации:
calc
- 3.3 Простое восстановление после ошибок
- 3.4 Калькулятор с отслеживаием положений:
ltcalc
- 3.5 Многофункциональный калькулятор:
mfcalc
- 3.6 Упражнения
- 4. Файлы грамматики Bison
- 4.1 Структура грамматики Bison
- 4.1.1 Секция объявлений C
- 4.1.2 Секция объявлений Bison
- 4.1.3 Секция правил грамматики
- 4.1.4 Секция дополнительного кода на C
- 4.2 Символы, терминальные и нетерминальные
- 4.3 Синтаксис правил грамматики
- 4.4 Рекурсивные правила
- 4.5 Определение семантики языка
- 4.5.1 Типы данных семантических значений
- 4.5.2 Несколько типов значений
- 4.5.3 Действия
- 4.5.4 Типы данных значений в действиях
- 4.5.5 Действия внутри правил
- 4.6 Отслеживание положений
- 4.7 Объявления Bison
- 4.7.1 Имена типов лексем
- 4.7.2 Приоритет операций
- 4.7.3 Набор типов значений
- 4.7.4 Нетерминальные символы
- 4.7.5 Подавление сообщений о конфликтах
- 4.7.6 Начальный символ
- 4.7.7 Чистый (повторно входимый) анализатор
- 4.7.8 Обзор объявлений Bison
- 4.8 Несколько анализаторов в одной программе
- 5. Интерфейс анализатора на C
- 5.1 Функция анализатора
yyparse
- 5.2 Функция лексического анализатора
yylex
- 5.2.1 Соглашения о вызове
yylex
- 5.2.2 Семантические значения лексем
- 5.2.3 Позиции лексем в тексте
- 5.2.4 Соглашения о вызове для чистых анализаторов
- 5.3 Функция сообщения об ошибках
yyerror
- 5.4 Специальные возможности, используемые в действиях
- 6. Алгоритм анализатора Bison
- 6.1 Предпросмотренные лексемы
- 6.2 Конфликты сдвиг/свёртка
- 6.3 Приоритет операций
- 6.3.1 Когда необходим приоритет
- 6.3.2 Задание приоритета операций
- 6.3.3 Примеры приоритета
- 6.3.4 Как работает приоритет
- 6.4 Контекстно-зависимый приоритет
- 6.5 Состояния анализатора
- 6.6 Конфликты свёртка/свёртка
- 6.7 Загадочные конфликты свёртка/свёртка
- 6.8 Переполнение стека и как его избежать
- 7. Восстановление после ошибок
- 8. Обработка контекстных зависимостей
- 8.1 Семантическая информация в типах лексем
- 8.2 Лексическая увязка
- 8.3 Лексическая увязка и восстановление после ошибок
- 9. Отладка вашего анализатора
- 10. Вызов Bison
- 10.1 Параметры Bison
- 10.2 Переменные среды
- 10.3 Перекрёстный список параметров
- 10.4 Ограничения на расширения под DOS
- 10.5 Вызов Bison под VMS
- A. Символы Bison
- B. Глоссарий
- C. Копирование настоящего руководства
- Указатель
Этот документ был создан June, 7 2003 при помощи texi2html 1.57.