Dick Grune, Ceriel J.H. Jacobs. Parsing Techniques: A Practical Guide (Monographs in Computer Science) 2nd ed. 2008 Edition
пока пусто
Комментарий от @ksromanov. Приятно написанная книга для начинающих: хороший баланс между строгостью и понятностью, в последних двух главах просто и понятно рассказывается про некоторые типы контекстно-свободных грамматик, рассказывается про разные методы разбора, в том числе и метод рекурсивного спуска. Фактически, главы 15 и 16 самодостаточны, и являются «дешёвым и сердитым» введением в задачу грамматического (синтаксического) разбора, чтобы понимать о чём вообще идёт речь, и как примерно всё устроено.
https://pure.uva.nl/ws/files/36086100/Thesis.pdf
Комментарий от @gsvgit. Хороший материал для желающих более глубоко изучить одно из современных направлений развития алгоритмов синтаксического анализа — обощённый нисходящий синтаксический анализ. Рассмотрены не только особенности алгоритма, но и такие вопросы как разрешение неоднозначеностей, подходы к data-dependent parsing. Работа интересна как сама по себе, так и представленными в ней ссылками на другие работы.
Комментарий от @gsvgit. Хороший материал для того, чтобы начать изучать различные варианты обобщённого LR разбора. От классического варианта Томиты, до современных модификаций типа BRNGLR или RIGLR.
пока пусто
пока пусто
Комментарий от @ksromanov.
- flex/bison — классическая связка генераторов лексического и синтаксического разбора. Работают с форматами lex/yacc соответственно. Не очень удобны для разработки парсеров, т.к. теряют типы при передаче в основную программу, но зато обладают феноменальной обратной совместимостью — написал и забыл. Можно быть уверенным, что написанная и отлаженная грамматика не потребует поддержки лет 20.
Комментарий от @ksromanov.
-
ocamllex/Menhir — современная свзяка генераторов лексического и синтаксического разбора. Menhir по всем параметрам превосходит ocamlyacc, у него были несовместимые изменения, но давно.
-
ocamllex/ocamlyacc — классическая связка генераторов лексического и синтаксического разбора, аналогичная flex/bison, не теряет типы при передаче в основную программу. Аналогично flex/bison поддерживает совместимость. Увы, ocamlyacc устарел и постепенно меняется на Menhir.
Грамматику, разработанную на ocamllex/ocamlyacc очень легко портировать на flex/bison, поэтому OCaml с этой связкой можно использовать для прототипирования.
- angstrom — популярная библиотека комбинаторов.
Комментарий от @ksromanov.
-
alex/happy — связка генераторов, используется в GHC, поэтому можно более-менее надеяться на стабильность.
-
parsec — классическая библиотека комбинаторов. Удобна и проста в использовании. По её мотивам написаны megaparsec, attoparsec и пр.
Комментарий от @ksromanov.
-
ANTLR4 — универсальный инструмент: реализует и лексический, и синтаксический разбор, поддерживает очень широкий спектр возможностей по заданию грамматики и семантических действий, имеет несколько бэкендов для генерации кода на разных языках, может генерировать как традиционную CST + Visitor, так и событийно-ориентированную инфраструктуру, используется в ряде промышленных проектов. Сообщество пользователей ANTLR поддерживает довольно обширный репозиторий грамматик.
-
BNFC — универсальный инструмент схожий с ANTLR4, поддерживает языки Haskell, Agda, C, C++, Java, Ocaml.