Пролог: Хотя набор языков, распознаваемых парсерами (контекстно-свободные грамматики), строго больше, чем сканер (обычные грамматики), большинству генераторов парсеров нужен сканер.
(Пожалуйста, не пытайтесь объяснить причины этого, я их хорошо знаю).
Я видел парсеры, для которых не нужен сканер вроде
Существуют определенные преимущества использования сканера:
- Только одно понятие (контекстно-свободные грамматики) вместо двух
- Разбор нескольких языков в одном файле (например, HTML/Javascript)
- Разбирайте языки без зарезервированных ключевых слов (например, PL/1)
Часто "обходные пути" используются как переключение сканера на запрос парсера.
Вопрос: Знаете ли вы какие-либо другие генераторы синтаксического анализатора (любой язык)? Являются ли они практическими в использовании (или чисто академическими)? Существуют ли какие-либо другие подходы, кроме Tomita/GLR?
Ответы:
- boost:: spirit:: qi AraK
- Грамматический анализ выражений (LPEG для Lua) Норман Рамси
- Яккер от Норман Рамси
- MBase SK-logic
- Waxeye Тревор Робинсон