【问题标题】:What is practical use of IDEA MPS and Eclipse XtextIDEA MPS 和 Eclipse Xtext 的实际用途是什么
【发布时间】:2011-03-22 06:46:22
【问题描述】:

这两个框架都处理元模型:

您有使用这些工具进行元模型转换的实际应用示例吗?

【问题讨论】:

    标签: eclipse xtext mps


    【解决方案1】:

    我们使用 MPS 创建了整个 bug tracker。代码生成不是目标,而是意味着获得一些可执行代码。目标是为开发人员提供一个工具,让他们能够以最小的努力创建 DSL。

    MPS 很酷的一点是,它还为您提供了适用于您的语言的 IDE。您创建的不同 DSL 是兼容的,即您可以创建使用闭包扩展 Java 的 DSL 和启用外部方法的另一个 DSL,这些扩展将协同工作。

    【讨论】:

    • 你能帮我找到java的闭包扩展吗?我找不到一些如何扩展 java synthax 的示例。
    • 要在 MPS 中使用 Java 闭包,您只需导入语言 jetbrains.mps.baseLanguage.closures
    【解决方案2】:

    They are different in term of document storing the metamodel.

    关于 XTextthis 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

    【讨论】:

    • 注意:conference in October 2010 将说明两个框架的实际示例。有关差异,请参阅also here
    • 代码生成是最终目标还是我看不够?
    • @S.R:不,最终目标仍然是模型转换。您将 AST(抽象语法树)转换为另一个,这将为您提供:代码(代码生成)或节点(第一个示例中的节点图)或任何其他 AST,它们将代表目标模型的任何内容.
    【解决方案3】:

    我认为 XText 的主要用途首先是根据您定义的语法创建一个 DSL,并为您自动生成一个 eclipse 工作台。其次,它可以将您的 DSL 中编写的脚本转换为 java。 XText2 的内置表达式是一个优点。 该框架为您提供了一个免费的 IDE,以支持您创建的编写 DSL。 DSL 是提供的终极产品。它可以用来从现实世界中抽象出规则和逻辑。例如,在我们的项目中,产品配置规则。只有专家知道他们,所以他们会在您创建的 DSL 中编写一些内容。

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 2011-04-02
      • 2019-05-17
      • 2015-04-22
      • 2021-07-22
      • 1970-01-01
      • 2011-09-20
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多