Я пытаюсь написать грамматику в EBNF (за исключением действительно хорошей причины, она должна быть EBNF), и я ищу пару утилит для нее - если есть интерфейс GUI, который может сделать один, это было бы здорово, но то, что я ищу больше всего, - это то, что может проверить грамматику, например, чтобы увидеть, является ли она LALR (n), и если да, то какое значение имеет значение n. Существуют ли такие утилиты? Есть ли другие полезные инструменты для написания грамматики, о которых я должен знать (я не ищу генераторы парсеров).
Инструменты для грамматики
Ответ 1
Принимая предложение Стивена Ди на один шаг дальше, вы можете проверить ANTLRWorks, который является интерактивным инструментом разработки графического интерфейса для грамматик ANTLR.
Ответ 2
Используйте TinyPG! Это потрясающий компилятор компилятора с легким графическим интерфейсом, где вы создаете парсер с RegEx, EBNF и пишите С#/VB, чтобы что-то сделать с деревом синтаксического анализа
Вот краткое и информативное резюме, которое я сделал ранее, что также связывает вас с загрузками.
Мое понимание TinyPG:
TinyPG позволяет писать и разрабатывать:
- Определить Терминалы с помощью Регулярные выражения.
- Определите Non-terminal и правила парсера в расширенный BNF метасинтакс.
- Введите компилятор в С# или VB, в TinyPG.
Он имеет встроенную среду IDE, только Windows (созданную на С#.NET, с открытым исходным кодом).
Он позволяет вам попробовать и просмотреть Регулярные выражения с помощью встроенного инструмента RegEx. Синтаксис RegEx поддерживается в .NET, что означает, что даже ваш синтаксический анализатор code использует регулярные выражения .NET.
Вы пишете EBNF для описания языка по вашему выбору (Вот некоторые свободно доступные BNF Grammers, которые описывают современные языки программирования (C, Java, JavaScript, С#, VB.NET, SQL-89)
Используя TinyPG, ваш RegEx вместе с вашим EBNF выводит синтаксический анализ (см. эту диаграмму).
Теперь, что вы делаете с деревом синтаксического анализа? Вы пишете код С#/VB (в пределах TinyPG, за правило грамматики BNF) для вашего компилятора/интерпретатора/переводчика. (внутри TinyPG откройте файл "simple expression2.tpg" в пределах предоставленных образцов, чтобы увидеть демонстрацию компилятора калькулятора)
TinyPG позволяет Компилировать и тестировать ваш токенизатор + парсер + complier в рамках TinyPG IDE и, наконец, выводит исходный код для парсера в С#.NET или VB.NET(ваш выбор), с готовыми к использованию классами.
Отличный компилятор компилятора "все-в-одном" для масс. Наслаждайтесь!
PS: Исправьте меня, если я ошибаюсь в этом.
Ответ 3
Чтобы проверить, разрешает ли грамматика определенный алгоритм парсера, просто поместите его в генератор парсера. В случае LALR (1) передайте грамматику в YACC, чтобы определить, обнаруживает ли она конфликты.
Ответ 4
CoCo/R С# отсутствует в списке. Он прост в использовании, очень универсален и особенно полезен, имеет генераторы кода для самых разных языков.
Coco/R для С#, Java, С++, F #, VB.Net, Oberon, других языков
Ответ 5
ANTLR - это генератор парсера GUI в Java, который обладает обширными возможностями для анализа грамматики и факторинга. Проверьте FAQ; он может поддерживать то, что вы ищете.