如何从图形模型生成代码到特定的api?

时间:2013-04-15 02:29:40

标签: code-generation antlr xtext eclipse-gef emf

我正在构建一个用于操作图形元素的编辑器,每个元素必须代表API规范中的一种元素。

API的元素基本上是一些类ad接口,它们有一定的使用约束,比如元素A不能是元素B的子元素,或者不能与元素C等连接。

编辑器应该允许您根据您绘制的内容生成代码,生成的代码必须是与您绘制的内容相对应的API实现。

我对模型驱动的架构一无所知(在实践中)以及我如何从图形模型生成代码到一些实现。

我不想将图形模型(包含大小和坐标等图形信息......)与实现API规范的业务模型混合在一起。

我使用eclipse GEF构建编辑器 这是我面临的问题:

由于图形模型和业务模型是分开的,我正在考虑定义一个emf模型,编辑器将是该emf模型的编辑器。是否有可能将使用emf模型作为基本构造元素的编辑器中绘制的模型转换为API规范的相应实现?

我知道,由于图形模型和业务模型是分开的,我必须实现某种语法,因为使用约束antlr非常适合我想要做的事情(谈论代码生成和语法)或者我应该使用xtext?

什么eclipse框架工具可以帮助我做我想做的事情?

1 个答案:

答案 0 :(得分:0)

如果您已经有图形编辑器,那么创建较低级别的文本模型格式(例如使用antlr / Xtext)来执行代码生成似乎大多没必要。特别是,如果您的模型已经在EMF中。

EMF模型有各种代码生成器技术(例如,也可以使用Acceleo或Xtend);这些生成器将使用EMF模型作为输入,并提供特定于您似乎使用的API的输出代码。在这两个工具中,您必须通过定义模板手动组装输出文件,然后序列化这些模板的结果。此序列化在Acceleo中是自动的,或者您可以在Xtend中使用类似Java的API。

如果您的模型现在不在EMF中,您仍然可以直接使用Xtend - 但是,我相信,在这种情况下,Acceleo不会有用。