Вопрос

Я работаю над новым языком, и во время написания грамматики я хотел бы проверить грамматику на полноту, конфликты и аналогичных. Я не на самом деле беспокоюсь о подлежном генераторе анализатора (но один для .NET был бы предпочтительным)

Так что список функций - это будет:

  • Текстовый редактор сборка
  • Отчет об ошибках синтаксиса/семаней
  • Конфликты отчетности
  • Функциональность тестирования грамматики (т.е. окно для записи кода в предполагаемой грамматике, чтобы проверить правильность определения грамматики)

Проект Codeplex под названием ирония имеет что -то смягченное к тому, о чем я прошу, но не поддерживает написание грамматики как BNF, что требуется.

Это было полезно?

Решение

я бы порекомендовал Antlr как генератор анализатора. Это очень полная функция и поддерживает C#, а также множество других целевых языков.

Для Ides есть плагин для затмения под названием Antlr Ide и отдельная IDE под названием Antlrworks, оба из которых работают хорошо.

Обратите внимание, однако, что ANTLR использует алгоритм LL (*) вместо алгоритма LR (K). Тем не менее, это очень приятно, и Antlrworks может сделать большую часть необходимого левого факторинга.

Другие советы

Когда «работа на новом языке» и пытаясь получить справочный BNF, вы, вероятно, не хотите смещать свою справочную грамматику в отношении любого конкретного генератора анализатора. Одна из проблем с написанием тестовой грамматики для бизона (LALR (1)) или ANTLR (LL*) - это именно то именно это. Вы также не хотите зацикливаться на «Как мне кодировать правила BNF таким образом, чтобы сделать его на самом деле анализировать», предположительно, потому что вы заинтересованы в работе над грамматикой, не работая над генератором анализатора.

Поэтому я бы порекомендовал использовать полный контекст -генератор анализатора. Это позволит вам написать грамматику в самой естественной форме с наименьшими усилиями. Это может означать отказ от «текстового редактора», «Окно тестирования редактора», ... но по моему опыту (проверьте мою биографию переполнения стека), используя генератор без контекста, генератор анализатора, полностью перегружает эти тонкости. Редактировать-сале-парсе просто не требует больших усилий.

Я понимаю, что у Bison есть вариант GLR, который обеспечит генерацию синхронизатора без контекста и является открытым исходным кодом, и поэтому он может сделать только для проверки грамматики.

Наш DMS Software Reenerineering Toolkit коммерческий, а также предоставляет анализатор GLR, который использовался для реализации около 30+ полных лангаугес, включая C, C ++ и COBOL в ряде диалектов, а также более современные языки, такие как Python, Ruby, PHP, ....

Разница между DMS и Bison заключается в том, что DMS предназначен для поддержки всех аспектов построения полноценного анализатора/переводчика (Unicode Lexing, SAINGING GLR с отчетностью об ошибках и восстановлении, автоматической конструкции деревьев, конструированием таблиц символов, управлении и анализом потока данных , преобразования, красивые отпечатки, ...). Если вы хотите серьезно оценить свой «новый Langauge», вам в конечном итоге нужно будет делать все это, и Bison - это лишь крошечный шаг на этой дороге. DMS будет нести вас весь путь.

Может быть, вы найдете этот инструмент полезным: Золотой сияющий строитель

К сожалению, это только Windows.

Посмотрите на BNFC, который может генерировать рабочий код и Makefile, от Almodd BNF, для ряда целевых языков, таких как: Haskell, OCAML, C, C ++ и Java. Вы получаете симпатичный принтер, абстрактный синтаксис -контроль/принтер, код скелета для вашего собственного компилятора или интерпретатора и документацию по постбресксутному языку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top