LEPL не совсем генератор парсера - он лучше!Парсеры определены в коде Python и созданы во время выполнения (отсюда некоторая неэффективность, но гораздо проще в использовании).Он использует перегрузку операторов для создания вполне читаемого DSL.Такие вещи, как c = a & b | b & c
для BNF c := a b | b c.
.
Вы можете передавать результаты (под) синтаксического анализатора в вызываемую по абрите, и это очень удобно для генерации AST (также полезно для преобразования, например, числа).литералы для объектов числа уровня Python).Это парсер рекурсивного спуска, поэтому вам лучше избегать левой рекурсии в грамматике (существуют объекты-памятники, которые могут заставить работать левую рекурсию, но "Поддержка Лепла для них исторически была ненадежной (ошибочной)" ).