8

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

  1. Boo 语言具有可定制的编译器和 python 语法,非常适合定义 DSL。
  2. 支持可扩展命令行开关的 Windows PowerShell。
  3. 支持可视化建模的 Microsoft DSL 工具,但灵活性较差(在我看来)
  4. ANTLR 是经过验证的工具
  5. C# 流利的接口。(对此不太满意)
  6. Oslo 框架(在生产中使用是否成熟?)

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

是否有任何其他框架如此基础以至于我可能错过了?

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

4

5 回答 5

3

Xtext: http: //www.eclipse.org/Xtext/

于 2010-09-10T12:29:22.750 回答
1

的一个涉及 DSL 主题的问题中,有人建议我使用IronyDLR的组合。但是,我不知道它们是否稳定。Irony 是 Alpha,DLR 虽然稳定,但仍处于 v0.9 中。我的目标是在一两周内自己开始使用 Irony,这样我就可以提供一些反馈。然而,好的一面是——它们都是开源的,所以你可以自己修复错误。

于 2009-05-21T08:49:06.797 回答
1

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

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

以下有关此语言工作台用法的教程详细信息:http: //strategoxt.org/Spoofax/Tour

希望能帮助到你!

编辑 -1 :

以下是使用此语言工作台实现的语言示例: http ://mobl-lang.org/ 。

于 2010-11-25T17:27:21.983 回答
0

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

于 2009-09-08T22:30:49.857 回答
0

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

于 2010-02-06T19:49:42.017 回答