我已经创建了一个Ecore Metomodel并通过EMF生成了编辑器。要生成我的输出代码,我会在创建图表时解析资源集(XMI),然后将这些资源映射到我自己的Java类。这些Java类负责生成我的输出,这是基于一些模板文件(.stg)的JavaScript文件。 一切都适用,但我的问题是Xtend / Acceleo等技术在哪里进来?我需要哪一个?我知道它们是基于模板的,因为我有自己的模板,通过我的Java类呈现为什么我需要使用Xtend?我完全困惑。

非常感谢你

有帮助吗?

解决方案

xtend是一种通用语言。你可以称之为“更好的java”。这尤其如此,因为XTEND有很好的模板表达式。因此,如果您希望生成代码更可读,您可以使用Xtend类替换一些Java类。您不需要重写所有内容,Xtend与Java无缝互操作。只需重写XTEND丰富的语言特征的大多数零件。

其他提示

您正在使用Eclipse Enterprise建模框架(EMF)。这为您提供了Ecore Meta Modell,可以生成基于基于基于对话框的编辑器。基本上EMF将您的图表从XMI文件格式带到标准化对象模型,类似于DOM。

可能还使用图形编辑器框架(GEF)来可视化您的图表。它需要您的DOM并将其呈现为图形表示。通常,您还可以使用图形用户界面修改图形,然后将更改DOM的内容。

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

xtext可以由xbase增强。 XBase是一种在Java VM上运行的基本编程语言。然后,您可以从eCore artefacts到xbase概念提供映射(例如,eCore对象代表if语句或循环)。然后,XBase可以生成Java字节码,因此将eCore模型转换为可运行的代码。

xtend是一种通用语言。它通常用作非常高级的模板引擎,以将eCORE模型转换为文本。与XText对比,返回生成的文本将生成的文本转换回Ecore DOM。当然,您可以使用任何模板引擎甚至XText / xBase根据您的需求来生成可运行的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top