Я работаю над новым языком и при записи грамматики, я хотел бы смочь протестировать грамматику на полноту, конфликты и подобный. Я не действительно озабоченность по поводу базового парсера-генератора (но один для.NET было бы предпочтительно),
Таким образом, список функций короче говоря был бы:
Проект CodePlex под названием Ирония действительно имеет что-то simlar к тому, что я прошу, но не поддерживаю запись грамматики как BNF, который требуется.
Я бы порекомендовал ANTLR как парсер генератор. Это очень функция завершается и поддерживает C #, а также множество других целевых языков.
Для IDE есть плагин для Eclipse под названием IDE ANTLR и автономной IDE называется AntlRworks , оба из которых работают хорошо.
Обратите внимание, однако, что ANTLR использует алгоритм LL (*) вместо алгоритма LR (K). Тем не менее, это очень приятно, а AntlRworks может сделать большую часть необходимого левого факторинга.
Когда «работает на новом языке» и пытается получить ссылку BNF, вы, вероятно, не хотите предлагать свою справочную грамматику к любому конкретному генератору парсеров. Одним из проблем с написанием тестируемой грамматики для бизона (LALR (1)) или ANTLR (LL *) Вы только что именно это. Вы также не хотите, чтобы он был подвешен в «Как мне ввести правила BNF таким образом, чтобы сделать его на самом деле разбирать», по-видимому, потому что вы заинтересованы в работе на грамматике, не работая на генераторе парсера.
Итак, я бы порекомендовал использовать полный контекст бесплатный генератор парсера. Это позволит вам написать грамматику в самую естественную форму с наименьшими усилиями. Это может означать сдачу «Text Editor», «Editor Test Window», ... но в моем опыте (проверьте мой переполнение стека BiO), используя контекстный бесплатный анализатор генератора абсолютно полностью. Редактировать-анализ-анализ просто не принимает много усилий.
Я понимаю, что Bison имеет вариант GLR, который обеспечил бы создание без контекста, и является открытым исходным кодом, и поэтому он может сделать только для тестирования грамматики.
Наши DMS-программное обеспечение Reengineing Toolkit - это коммерческий, а также обеспечивает анализатор GLR, который использовался для реализации около 30+ полных ланга, включая C, C ++ и Cobol в ряде диалектов, а также более Современные языки, такие как Python, Ruby, PHP, ....
Разница между DMS и BISOCON заключается в том, что DMS предназначен для поддержки всех аспектов строительства полноценного анализатора / переводчика (Lexing Unicode, Parsing GLR с ошибкой Отчетность и восстановление, автоматическое строительство деревьев, конструкция таблицы символов, контроль и анализ потока данных, преобразования, преобразования, ...). Если вы хотите серьезно оценить вашу «новую Langauge», вы в конечном итоге должны делать все эти вещи, а Бизон - это всего лишь крошечный шаг вдоль этой дороги. DMS будет нести вас весь путь.
Посмотрите на BNFC, который может генерировать рабочий код и Makefile, от BNF-файла BNF, для ряда целевых языков, таких как: haskell, ocaml, c, c ++ и java. Вы получаете симпатичный принтер, абстрактный синтаксис Checker / Printer, скелет для вашего собственного компилятора или переводчика, а также языковая документация.