2009-05-21 70 views
8

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

具有用于定义DSL定制编译器和pythonish语法理想
  1. 嘘语言。
  2. 支持可扩展命令行开关的Windows powershell。
  3. 微软DSL工具,支持可视化建模,但不灵活(在我看来)
  4. ANTLR这是证明工具
  5. C#流利的接口。(这个不那么快乐)
  6. 奥斯陆框架(是否成熟)

上面提到的每个框架都有优点和缺点,我无法做出决定。给出上述框架之间的选择,你会选择哪一个,为什么?

有没有其他的框架如此基本,我可能错过了?

任何帮助或指导将不胜感激。

+0

+1 - 一个很好的问题,我也在努力。我研究了Boo中构建域特定语言的早期版本,发现它令人沮丧 - 这些工具似乎并不成熟。我也相信PowerShell在这方面显示出很大的希望。我也拿起了关于ANTLR的书。 ;) – TrueWill 2009-09-08 22:40:57

回答

1

question of mine涉及DSL的问题,有人建议我使用IronyDLR的组合。但我不知道他们是否稳定。反讽是一种阿尔法,而DLR虽然稳定,仍然在v0.9。我打算在一两周内开始使用Irony,那么我将能够提供一些反馈。然而,光明的一面 - 它们都是开源的,所以你可以自己修复错误。

+0

感谢您的信息。反讽看起来很有希望。 – Prashanth 2009-05-25 05:05:43

+0

**反讽被搁置。** http://irony.codeplex.com/Thread/View.aspx?ThreadId=230812 – 2010-11-24 08:29:37

0

Jetbrains的有一个可视化工具,在语言的发展援助,忘了名字,但他们的头版有它它。我相信它的自由和部分开源。

0

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

1

如果您打算实现外部DSL,Spoofax(http://strategoxt.org/Spoofax)是一个很好的语言工作台来做到这一点。这是一个基于语法分析器的文本语言工作台,可以利用SDF,Stratego等几种最先进的技术。除了DSL实行,你可以得到一个非常丰富的编辑服务,如代码完成,大纲视图,智能感知等

它配备了一个很好的样本DSL实现和代码生成到Java。它也可能成为开始使用这些工具的起点。

以下有关使用教程详细,这里的langauge工作台:http://strategoxt.org/Spoofax/Tour

希望它有帮助!

编辑-1:

下面是使用这种语言特点工作台实现语言的例子:http://mobl-lang.org/