【问题标题】:Do I need to use Xtend/Acceleo?我需要使用 Xtend/Acceleo 吗?
【发布时间】:2014-06-16 15:49:09
【问题描述】:

我创建了一个 Ecore 元模型并通过 EMF 生成了一个编辑器。为了生成我的输出代码,我在创建图表时解析资源集 (XMI),然后将这些资源映射到我自己的 Java 类。这些 Java 类负责生成我的输出,这些输出是基于少数模板文件 (.stg) 的一些 javascript 文件。 一切正常,但我的问题是 Xtend/Acceleo 等技术从何而来?我需要其中任何一个吗?我知道它们是基于模板的,但由于我有自己的模板,这些模板通过我的 Java 类呈现,为什么我需要使用 Xtend?我完全糊涂了。

非常感谢

【问题讨论】:

    标签: java xtend


    【解决方案1】:

    Xtend 是一种通用语言。您可以称其为“更好的 Java”。对于模板尤其如此,因为 Xtend 有很好的template expressions。因此,如果您希望生成器代码更具可读性,可以将一些 Java 类替换为 Xtend 类。您无需重写所有内容,Xtend 与 Java 无缝互操作。只需重写从 Xtend 丰富的语言功能中受益最多的部分。

    【讨论】:

      【解决方案2】:

      您正在使用 eclipse 企业建模框架 (EMF)。这为您提供了 ECore 元模型,并且可以生成基于基本对话框的编辑器。基本上,EMF 将您的图表从 XMI 文件格式转换为标准化的对象模型,类似于 DOM。

      您可能还使用图形编辑器框架 (GEF) 来可视化您的图表。它获取您的 DOM 并将其呈现为图形表示。通常你也可以使用图形用户界面修改图形,这也会改变你的 DOM 的内容。

      与 GEF 平行,还有一个名为 xText 的文本编辑器框架。它将您的 DOM 带入文本表示。然后,您可以使用文本编辑器更改文本表示。 xText 可以解析这些更改的文本并相应地更改 DOM。此外,它还生成了一个漂亮的 Eclipse 编辑器,具有语法高闪电、代码折叠、代码完成以及扩展自定义代码完成和重构的可能性。

      xText 可以被 XBase 扩充。 XBase 是一种在 Java VM 上运行的基本编程语言。然后,您可以提供从 ECore 工件到 XBase 概念的映射(例如,哪个 ECore 对象表示 if 语句或循环)。然后 XBase 可以生成 Java 字节码,从而将您的 ECore 模型转换为可运行代码。

      XTend 是一种通用语言。它通常被用作一个非常先进的模板引擎来将您的 ECore 模型转换为文本。与 xText 相比,没有办法将生成的文本转换回 ECore DOM。当然,您可以根据需要使用任何模板引擎甚至 xText/xbase 生成可运行代码。

      【讨论】:

        猜你喜欢
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 2020-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多