这两个框架都处理元模型:
您是否有使用这些工具基于元模型转换的实际应用示例?
我们使用 MPS创建了整个错误跟踪器。代码生成不是目标,而是意味着获得一些可执行代码。目标是为开发人员提供一个工具,让他们能够以最小的努力创建 DSL。
MPS 很酷的一点是它还为您提供了适用于您的语言的 IDE。并且您创建的不同 DSL 是兼容的,即您可以创建使用闭包扩展 Java 的 DSL 和启用外部方法的另一个 DSL,并且这些扩展将一起工作。
关于XText,本文说明了一种用法,即创建自己的编程语言和特定领域语言 (DSL)。
一旦你有了一种语言,你就想处理它,这通常意味着将你的模型转换为另一种表示。
负责此转换的工具称为生成器,由一堆转换模板 (eGXPand
) 和一些执行它们的代码组成。在某些情况下,模型会被读入并应用转换来生成代码。
dot3zest附带一个 DOT 到 Zest 解释器(现在使用为 DOT 语法生成的 Xtext 开关 API),它支持 ad-hoc DOT 边缘定义。
关于 MPS,这里有一系列实际示例,
例如将代码生成到 GPL,例如 Java、C#、C++ 或 XML:
(来源:googlecode.com)
我认为 XText 的主要用途首先是从您定义的语法创建一个 DSL,并为您自动生成一个 eclipse 工作台。其次,它可以将您的 DSL 中编写的脚本转换为 java。XText2 的内置表达式是一个优点。该框架为您提供了一个免费的 IDE,以支持您创建的编写 DSL。DSL 是提供的终极产品。它可以用来从现实世界中抽象出规则和逻辑。例如,在我们的项目中,产品配置规则。只有专家知道他们,所以他们在你创建的 DSL 中写了一些。