2009-08-09 6 views
4

Может ли кто-нибудь порекомендовать генератор синтаксического анализатора, который будет генерировать код win32 Delphi? Я пытаюсь создать простой доменный язык.Генератор Parser для Delphi?

ответ

5

Насколько сложна ваш DSL?

Я создал парсер (в Delphi) для нового языка Delphi RIDL для поддержки некоторых собственных средств создания COM-кода, которые мы используем.

Мой подход состоял в том, чтобы использовать ANTLR, чтобы играть с правилами синтаксиса, пока у меня не было чего-то, что анализировало различные тестовые файлы, которые у меня были. Затем я вручную кодировал рекурсивный парсер спуска (на основе Java, созданного ANTLR). Я также использовал Castalia Delphi Parser в проекте, поэтому я основал на этом мой лексический анализатор.

Рекурсивные анализаторы спуска на самом деле действительно простые (но утомительные :-)), чтобы писать вручную.

+0

Это хорошая идея. Мой DSL довольно прост. Мне нравится идея прототипирования в ANTLR. –

4

Попробуйте это:

http://www.grendelproject.nl/dyacclex/

+0

Спасибо. Хотя это довольно старая школа. Написание DSL уже подталкивает границы приемлемости. lex/yacc просто заставляет людей паниковать. К сожалению, мне, возможно, придется делать DSL как язык XML. –

+0

Nah, версия TP - старая школа: http://wiki.freepascal.org/Utilities#tply –

2

Я не пробовал это на всех, и я просто заметил информацию, пока я читал через документации, но FastScript, в их документации, которую вы можете получить here, говорит что вы можете использовать свой парсер для создания своего собственного языка, который вы указали в XML-файле. Это может дать вам то, что вы можете использовать.

0

Я нашел Antlr For Delphi 3.1.1.

SharpPlus Antlr Для Delphi Target 3.1.1, инструмент языка, который обеспечивает основу для построения распознования, интерпретаторы, компиляторы с Delphi!

Это коммерческий продукт. Я понятия не имею, что это такое.