Парсер рекурсивного спуска

Анализатор рекурсивного спуска Основы синтаксического анализатора с рекурсивным спуском Рекурсивный синтаксический анализатор основан на взаимно рекурсивных процедурах, соответствующих нетерминалам грамматики.  […]

Анализатор рекурсивного спуска

  • Основы синтаксического анализатора с рекурсивным спуском

    • Рекурсивный синтаксический анализатор основан на взаимно рекурсивных процедурах, соответствующих нетерминалам грамматики. 
    • Структура программы отражает структуру грамматики. 
  • Предиктивный синтаксический анализатор

    • Предиктивный анализатор не требует обратного отслеживания и работает с контекстно-свободными грамматиками LL(k). 
    • Грамматики LL(k) исключают неоднозначность и левую рекурсию. 
    • Прогностический анализ выполняется за линейное время. 
  • Рекурсивный спуск с возвратом

    • Рекурсивный спуск с возвратом определяет продукт, пробуя каждый по очереди. 
    • Не ограничивается грамматиками LL(k) и может требовать экспоненциального времени. 
  • Выбор между предиктивными и табличными парсерами

    • Программисты часто предпочитают табличные парсеры, созданные генераторами, для языков LL(k) или других альтернатив. 
    • Прогнозирующие парсеры могут быть сгенерированы автоматически, например, с помощью ANTLR. 
  • Визуализация синтаксического анализатора

    • Диаграммы переходов используются для представления предикативных парсеров. 
  • Пример грамматики и реализации на C

    • Приведен пример грамматики PL/0 Никлауса Вирта в форме LL(1) и реализация на C. 
    • Реализация анализирует исходный код и выдает сообщение об ошибке при неудачном синтаксическом анализе. 
  • Генераторы синтаксических анализаторов

    • Упомянуты некоторые популярные генераторы синтаксических анализаторов, включая TMG, JavaCC, Кокос/R, ANTLR и Spirit Parser Framework. 
  • Дополнительные ресурсы

    • Ссылки на книги и ресурсы по компиляторам и рекурсивному программированию. 

Полный текст статьи:

Парсер рекурсивного спуска — Википедия

Оставьте комментарий

Прокрутить вверх