2013-04-15 27 views
0

我正在构建一个用于处理图形元素的编辑器,每个元素都必须表示API规范中的一种元素。如何从图形模型生成代码为specefic api?

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

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

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

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

我使用eclipse GEF建立编辑 我这里还有我面临的问题:

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

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

什么eclipse框架工具能帮我做我想做的事情?

回答

0

如果您已经有图形编辑器,那么似乎大多不需要创建较低级的文本模型格式(例如使用antlr/Xtext)来执行代码生成。特别是,如果你的模型已经在EMF中。对于EMF模型,存在各种代码生成器技术(例如Acceleo或Xtend也可用于此)。这些生成器将使用EMF模型作为输入,并提供特定于您似乎正在使用的API的输出代码。在这两个工具中,您必须通过定义模板手动组合输出文件,然后序列化这些模板的结果。这个序列化在Acceleo中是自动的,或者你可以在Xtend中使用类似Java的API来完成。

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

+0

thnaks,你的回答非常有用 – user1125516