Какую технологию использовать при создании DSL для движка правил? - PullRequest
6 голосов
/ 13 февраля 2009

Какую технологию вы бы порекомендовали для создания DSL для блока бизнес-правил и приложений проверки для .NET ? А почему?

Архитектура каркаса установлена ​​и проверена производством. Я просто хочу создать процессор .NET для преобразования понятных человеку правил в скомпилированные реализации Правил.

Варианты, которые мне известны:

  • Использовать конвейер компилятора .NET Boo
  • Используйте компоновщики синтаксических анализаторов, которые поставляются с F # - FsLex и FsYacc

К сожалению, ни один из этих подходов не обеспечивает чего-либо для создания более или менее дружественной IDE для редактирования DSL, учитывая синтаксис DSL (который будет развиваться).

Есть идеи или подсказки?

Ответы [ 11 ]

0 голосов
/ 13 февраля 2009

Если вы хотите создать дружественную IDE, которая редактирует DSL, сделать IDE полностью графической и скомпилировать в объекты .NET (или использовать что-то вроде IronPython в качестве связующего языка).

Если правила достаточно просты, вы можете реализовать всю структуру правил графически. Если правила достаточно сложны, «читабельность» становится невозможной целью.

В любом случае, если набор классов .NET или объектов IronPython, которые создают промежуточный код, недостаточно «читабелен» человеком, то есть вероятность, что вам понадобится нечто более фиктивное, чем грамматика.

Тем не менее, если вы просто хотите создать простой язык, который программисты могут использовать для создания бизнес-правил, не стесняйтесь использовать любое из вышеперечисленного и сделать синтаксис достаточно минималистичным, чтобы не нуждаться в IDE Visual Studio.

...