Знаете ли вы о синтаксическом синтаксическом модуле (написанном на Ruby, Python, Javascript ...), который, учитывая список токенов и грамматику в виде EBNF (передается как простая строка), возвращает проанализированное дерево? Ближайший я нашел это SimpleParse, который является хорошей библиотекой, но, к сожалению, он использует одноэтапный синтаксический анализ (без токенизации). Если возможно, я предпочел бы не использовать библиотеки, в которых реализация запутывается самим языком (pyparsing, treetop, ...).Модуль синтаксиса синтаксиса EBNF
Я не беспокоюсь о лексинге/токенизации, потому что есть много доступных библиотек (и даже писать собственное довольно просто), но реализация парсера ENBF - не совсем тривиальная задача. Я проверил Python wiki LanguageParsing и протестировал некоторые из них безрезультатно (возможно, я забыл тот, который я ищу, есть так много ...)
Ну, какой синтаксический анализатор жизнеспособный, в значительной степени зависит от грамматики, которую вы анализируете, и чего вы хотите сделать с помощью ввода ... Почему это должно быть языковым агностиком и EBNF, кстати? Если вы хотите что-либо из ввода (AST или что-то еще), вам все равно придется писать код вручную, а чистый EBNF полезен только для распознавания «совпадений/не соответствует». – delnan
@delnan: Я пишу транкомпилятор (в основном, чтобы играть с лексерами и парсерами, ничего серьезного), и в качестве первого шага я хотел бы, чтобы мой язык описывался как EBNF (или любой другой описатель синтаксиса) и анализировался от него (и позже генерировал из него AST или что-то еще). Советы в любом направлении добро пожаловать. – tokland