【发布时间】:2011-03-22 06:46:22
【问题描述】:
【问题讨论】:
【问题讨论】:
我们使用 MPS 创建了整个 bug tracker。代码生成不是目标,而是意味着获得一些可执行代码。目标是为开发人员提供一个工具,让他们能够以最小的努力创建 DSL。
MPS 很酷的一点是,它还为您提供了适用于您的语言的 IDE。您创建的不同 DSL 是兼容的,即您可以创建使用闭包扩展 Java 的 DSL 和启用外部方法的另一个 DSL,这些扩展将协同工作。
【讨论】:
They are different in term of document storing the metamodel.
关于 XText,this article 说明了一种用法,即您创建自己的编程语言和特定领域语言 (DSL)。
一旦您有了一种语言,您就想对其进行处理,这通常意味着将您的模型转换为另一种表示形式。
负责这种转换的工具称为生成器,由一堆转换模板(例如XPand)和一些执行它们的代码组成。在某些情况下,模型会被读入并应用转换来生成代码。
Example of such a model transformation:
dot3zest,带有一个 DOT 到 Zest 解释器(现在使用为 DOT 语法生成的 Xtext 开关 API),它支持 ad-hoc DOT 边缘定义。
关于 MPS,您有 here a serie of practical examples,
像这样code generation to GPL such as Java, C#, C++ or XML:
(来源:googlecode.com)
【讨论】:
我认为 XText 的主要用途首先是根据您定义的语法创建一个 DSL,并为您自动生成一个 eclipse 工作台。其次,它可以将您的 DSL 中编写的脚本转换为 java。 XText2 的内置表达式是一个优点。 该框架为您提供了一个免费的 IDE,以支持您创建的编写 DSL。 DSL 是提供的终极产品。它可以用来从现实世界中抽象出规则和逻辑。例如,在我们的项目中,产品配置规则。只有专家知道他们,所以他们会在您创建的 DSL 中编写一些内容。
【讨论】: