我需要使用Xtend / Acceleo吗?

时间:2014-06-04 04:16:18

标签: java xtend

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

非常感谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您正在使用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根据您的需要生成可运行的代码。