选择DSL框架

时间:2009-05-21 08:40:20

标签: .net dsl

我正在开发一个需要我定义DSL的项目。由于提出正确的DSL对我的项目至关重要,我决定评估现有的框架,这些框架有助于定义DSL,解析它和代码生成(必须使用基于.NET的语言)我考虑的框架是:

  1. Boo语言,具有可定制的编译器和pythonish语法,非常适合定义DSL。
  2. 支持可扩展命令行开关的Windows PowerShell。
  3. 支持可视化建模的Microsoft DSL工具,但不太灵活(在我看来)
  4. ANTLR是经过验证的工具
  5. C#流畅的界面。(对此不太满意)
  6. 奥斯陆框架(在生产中使用是否成熟?)
  7. 上面提到的每个框架都有利弊,我无法做出决定。在上述框架之间做出选择,你会选择哪一个?为什么?

    还有其他任何框架如此根本以至于我可能错过了吗?

    非常感谢任何帮助或指导。

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

如果您计划实施外部DSL,Spoofax(http://strategoxt.org/Spoofax)是一个很好的语言工作台来完成这项工作。它是一个基于解析器的文本Langauge Workbench,它利用了SDF,Stratego等多种先进技术。除了DSL实现之外,您还可以获得非常丰富的编辑器服务,例如代码完成,大纲视图,智能感知等。

它带有一个很好的示例DSL实现和Java代码生成。它也可以作为开始使用这些工具的起点。

关于本langauge工作台的使用的教程详细信息:http://strategoxt.org/Spoofax/Tour

希望它有所帮助!

编辑-1:

以下是使用此Langauge Workbench实现的语言示例:http://mobl-lang.org/

答案 2 :(得分:1)

在触及DSL主题的question of mine中,建议我使用IronyDLR的组合。但是我不知道他们是稳定的。反讽是一个Alpha,而DLR虽然稳定,但仍然是v0.9。我打算在一两周内开始使用Irony,这样我就可以提供一些反馈。然而,在光明的一面 - 它们都是开源的,所以你可以自己修复bug。

答案 3 :(得分:0)

DMS Software Reengineering Toolkit是一套集成工具,用于定义任意语言,包括DSL,自动构建解析器,分析器和定义语言的代码生成器。

答案 4 :(得分:0)

Jetbrains有一个可视化的工具来帮助语言开发,忘记了名字,但他们的头版上面有它。我相信它的免费和部分开源。