Анализатор рекурсивного спуска
-
Основы синтаксического анализатора с рекурсивным спуском
- Рекурсивный синтаксический анализатор основан на взаимно рекурсивных процедурах, соответствующих нетерминалам грамматики.
- Структура программы отражает структуру грамматики.
-
Предиктивный синтаксический анализатор
- Предиктивный анализатор не требует обратного отслеживания и работает с контекстно-свободными грамматиками LL(k).
- Грамматики LL(k) исключают неоднозначность и левую рекурсию.
- Прогностический анализ выполняется за линейное время.
-
Рекурсивный спуск с возвратом
- Рекурсивный спуск с возвратом определяет продукт, пробуя каждый по очереди.
- Не ограничивается грамматиками LL(k) и может требовать экспоненциального времени.
-
Выбор между предиктивными и табличными парсерами
- Программисты часто предпочитают табличные парсеры, созданные генераторами, для языков LL(k) или других альтернатив.
- Прогнозирующие парсеры могут быть сгенерированы автоматически, например, с помощью ANTLR.
-
Визуализация синтаксического анализатора
- Диаграммы переходов используются для представления предикативных парсеров.
-
Пример грамматики и реализации на C
- Приведен пример грамматики PL/0 Никлауса Вирта в форме LL(1) и реализация на C.
- Реализация анализирует исходный код и выдает сообщение об ошибке при неудачном синтаксическом анализе.
-
Генераторы синтаксических анализаторов
- Упомянуты некоторые популярные генераторы синтаксических анализаторов, включая TMG, JavaCC, Кокос/R, ANTLR и Spirit Parser Framework.
-
Дополнительные ресурсы
- Ссылки на книги и ресурсы по компиляторам и рекурсивному программированию.