Я работаю над проектом, который требует от меня определения DSL. Поскольку создание правильного DSL является критически важным для моего проекта, я решил оценить существующие платформы, которые помогают в определении DSL, его синтаксическом анализе и генерации кода (который должен быть на языке .NET). Я рассмотрел следующие платформы:
- Язык Boo, имеющий настраиваемый компилятор и синтаксис Pythonish, идеально подходящий для определения DSL.
- Windows powershell, поддерживающий расширяемые командлеты.
- Инструменты Microsoft DSL, поддерживающие визуальное моделирование, но менее гибкие (на мой взгляд)
- ANTLR, который является проверенным инструментом
- Свободные интерфейсы C #. (Не очень доволен этим)
- Каркас в Осло (он готов для использования в производстве?)
Есть плюсы и минусы каждой из упомянутых выше структур, и я не могу принять решение. Предоставил выбор между вышеупомянутыми структурами, какую из них вы бы выбрали и почему?
Есть ли какая-либо другая основа, настолько фундаментальная, что я мог бы пропустить?
Любая помощь или руководство будут с благодарностью.