Может ли кто-нибудь порекомендовать генератор синтаксического анализатора, который будет генерировать код win32 Delphi? Я пытаюсь создать простой доменный язык.Генератор Parser для Delphi?
ответ
Насколько сложна ваш DSL?
Я создал парсер (в Delphi) для нового языка Delphi RIDL для поддержки некоторых собственных средств создания COM-кода, которые мы используем.
Мой подход состоял в том, чтобы использовать ANTLR, чтобы играть с правилами синтаксиса, пока у меня не было чего-то, что анализировало различные тестовые файлы, которые у меня были. Затем я вручную кодировал рекурсивный парсер спуска (на основе Java, созданного ANTLR). Я также использовал Castalia Delphi Parser в проекте, поэтому я основал на этом мой лексический анализатор.
Рекурсивные анализаторы спуска на самом деле действительно простые (но утомительные :-)), чтобы писать вручную.
Попробуйте это:
Спасибо. Хотя это довольно старая школа. Написание DSL уже подталкивает границы приемлемости. lex/yacc просто заставляет людей паниковать. К сожалению, мне, возможно, придется делать DSL как язык XML. –
Nah, версия TP - старая школа: http://wiki.freepascal.org/Utilities#tply –
Я не пробовал это на всех, и я просто заметил информацию, пока я читал через документации, но FastScript, в их документации, которую вы можете получить here, говорит что вы можете использовать свой парсер для создания своего собственного языка, который вы указали в XML-файле. Это может дать вам то, что вы можете использовать.
делфийской версии Coco/R вполне нормально:
http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/
особенно Пэт Терри один:
Большинство реализаций Coco/R для Delphi очень устарели. Я обновил DCocoR для работы с Delphi XE2, источник находится здесь: http://code.google.com/p/dcocor/ –
Я нашел Antlr For Delphi 3.1.1.
SharpPlus Antlr Для Delphi Target 3.1.1, инструмент языка, который обеспечивает основу для построения распознования, интерпретаторы, компиляторы с Delphi!
Это коммерческий продукт. Я понятия не имею, что это такое.
Это хорошая идея. Мой DSL довольно прост. Мне нравится идея прототипирования в ANTLR. –