Выбор DSL фреймворка - PullRequest
8 голосов
/ 21 мая 2009

Я работаю над проектом, который требует от меня определения DSL. Поскольку создание правильного DSL является критически важным для моего проекта, я решил оценить существующие платформы, которые помогают в определении DSL, его синтаксическом анализе и генерации кода (который должен быть на языке .NET). Я рассмотрел следующие платформы:

  1. Язык Boo, имеющий настраиваемый компилятор и синтаксис Pythonish, идеально подходящий для определения DSL.
  2. Windows powershell, поддерживающий расширяемые командлеты.
  3. Инструменты Microsoft DSL, поддерживающие визуальное моделирование, но менее гибкие (на мой взгляд)
  4. ANTLR, который является проверенным инструментом
  5. Свободные интерфейсы C #. (Не очень доволен этим)
  6. Каркас в Осло (он готов для использования в производстве?)

Есть плюсы и минусы каждой из упомянутых выше структур, и я не могу принять решение. Предоставил выбор между вышеупомянутыми структурами, какую из них вы бы выбрали и почему?

Есть ли какая-либо другая основа, настолько фундаментальная, что я мог бы пропустить?

Любая помощь или руководство будут с благодарностью.

Ответы [ 5 ]

3 голосов
/ 10 сентября 2010
1 голос
/ 25 ноября 2010

Если вы планируете внедрить внешние DSL, Spoofax (http://strategoxt.org/Spoofax) является хорошим языковым рабочим столом для этого. Это основанный на синтаксическом анализаторе текстовый Langauge Workbench, использующий несколько современных технологий, таких как SDF, Stratego. Помимо реализации DSL, вы могли бы получить очень богатые сервисы редактирования, такие как, завершение кода, представление структуры, intellisense и т. Д.

Он поставляется с хорошим примером реализации DSL и генерацией кода на Java. Это также может послужить отправной точкой для начала работы с инструментами.

Ниже приведены подробные инструкции по использованию этого языка: http://strategoxt.org/Spoofax/Tour.

Надеюсь, это поможет!

Редактировать -1:

Ниже приведен пример языка, реализованного с использованием этого Langauge Workbench: http://mobl -lang.org / .

1 голос
/ 21 мая 2009

В моем вопросе , который затрагивал тему DSL, мне было предложено использовать комбинацию Irony и DLR . Я не знаю, стабильны они, однако. Ирония - это Альфа, и DLR, хотя и стабильный, все еще находится в v0.9. Я собираюсь начать использовать Irony сам через неделю или две, так что тогда я смогу дать некоторую обратную связь. С другой стороны, они оба с открытым исходным кодом, так что вы можете сами исправлять ошибки.

0 голосов
/ 06 февраля 2010

DMS Software Reengineering Toolkit - это интегрированный набор инструментов для определения произвольных языков, включая DSL, автоматизации создания анализаторов, анализаторов и генераторов кода для определенных языков.

0 голосов
/ 09 сентября 2009

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

...