我有一个基于自定义元模型的DSL,而该元模型又基于EMF / Ecore。我试图找出要选择的解决方案,但在任何地方都找不到任何不错的比较。

有谁有任何理由让我选择一个?

到目前为止,我所知道的是Acceleo使用OMG标准化语言,但是似乎比Xpand难使用。

最佳答案

首先,我想知道为什么您认为Acceleo比Xpand更难学习,而两种语言都有差异(例如,块和定界符),它们的结构非常相似。我不会详细介绍两种语言的所有元素,但是,例如,我看不到以下类似的区别:


«FOREACH myAttributes as a»«a.name»«ENDFOREACH»





[for(a:Attribute | myAttributes)] [a.name/][/for]


两者都是基于模板的语言,因此它们具有完全相同的结构。 Acceleo和Xpand之间的主要区别在于Acceleo基于OMG和工具的标准MOFM2T和OCL。

我对Xpand工具不是很熟悉,但是您可以在他们的wiki上找到更多有关它的信息。另一方面,Acceleo包含一个具有语法高亮显示,代码完成,错误检测,重构等功能的编辑器。它还包含调试器,事件探查器,Ant和Maven支持。您还可以轻松地将生成器作为Eclipse插件部署给其他用户,或者在常规Java应用程序中从Eclipse中使用它们。您可以在Acceleo here上找到更多信息。您可以在视频中的Obeo Network上看到Acceleo的大多数功能(需要注册)。

最终,开发了Acceleo的同时在a year ago上进行的xPand上的最新活动。如果需要,您甚至可以在actively上关注Acceleo开发。

斯蒂芬·贝高多(Stephane Begaudeau)

免责声明:我是Acceleo开发团队的成员之一。

07-27 21:37