gpt4 book ai didi

eclipse - 使用 Xtext 或 XTend 为现有 EMF 模型构建代码生成器

转载 作者:行者123 更新时间:2023-12-01 20:22:41 26 4
gpt4 key购买 nike

我有一个模型转换序列,最终输出一个 EMF 模型,一些 EMF 元模型的实例(我自己定义的元模型)。

我正在寻找一种从中生成代码的好方法。当然,还有 XPand,我曾经在其他项目中使用它,但我想知道 XText 或 XTend 是否是合适的替代方案(因为它的开发非常活跃)。

换句话说,我有一个 EMF 模型,不需要编辑器(因此不需要 XText 来实现此目的),但我确实需要构建一个代码生成器。我可以仅在该部分使用 XText 吗?

相比 XPand 或 Acceleo 是否更明智?

任何建议都会很棒。

最佳答案

我尝试对这些工具进行公平的比较,但这确实很难。

Xtext 与代码生成无关 - 它用于创建编辑器和解析器。

Xtend2 被设计为具有类似语法的 Xpand 的后继者 - 然而,它并不是专门为代码生成而定制的,而是作为一种通用语言,也可以很好地用于代码生成。其他生成引擎之间的主要区别在于您在源代码级别上工作(基本上,Xtend2 翻译为 Java),并且您必须提供自己的引擎来驱动生成 - 尽管当然可以使用 Modeling Workflow Engine这个原因 - 就像 Xpand 的情况一样。

Acceleo 更适合简单的代码生成。它的语法基于 OMG 代码生成规范,并提供用于开发代码生成的全功能 IDE。但是,如果您在代码生成过程中需要复杂的控制结构,这可能不是最好的解决方案。

关于 M2T-JET,正如 Chris 所建议的,我会投票反对,除非有非常具体的需求。它的开发支持要弱得多(例如它的编辑器),并且更多地基于具有单个输出模板的想法,而不是 Xpand/Xtend/Acceleo 的更高级别、基于规则的方法。这会在代码生成过程中带来更好的性能,但是,它通常会导致模板更难理解。 忽略本段,因为它太消极了。

总而言之,如果您仅使用 EMF 模型,Acceleo 和 Xtend 都是代码生成的不错选择,您应该根据您(或您的团队)的专业知识和更具体的需求在它们之间进行选择。如果您需要同时支持 EMF 模型和其他数据源,那么 Acceleo 并不是最佳选择;但是,JET 和 Xtend 都不是基于您的输入是 EMF 模型这一事实,而是提供了调用任何可用 Java 代码的简单方法。

关于eclipse - 使用 Xtext 或 XTend 为现有 EMF 模型构建代码生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12283378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com