我正在构建一个用于操作图形元素的编辑器,每个元素必须代表API规范中的一种元素。
API的元素基本上是一些类ad接口,它们有一定的使用约束,比如元素A不能是元素B的子元素,或者不能与元素C等连接。
编辑器应该允许您根据您绘制的内容生成代码,生成的代码必须是与您绘制的内容相对应的API实现。
我对模型驱动的架构一无所知(在实践中)以及我如何从图形模型生成代码到一些实现。
我不想将图形模型(包含大小和坐标等图形信息......)与实现API规范的业务模型混合在一起。
我使用eclipse GEF构建编辑器 这是我面临的问题:
由于图形模型和业务模型是分开的,我正在考虑定义一个emf模型,编辑器将是该emf模型的编辑器。是否有可能将使用emf模型作为基本构造元素的编辑器中绘制的模型转换为API规范的相应实现?
我知道,由于图形模型和业务模型是分开的,我必须实现某种语法,因为使用约束antlr非常适合我想要做的事情(谈论代码生成和语法)或者我应该使用xtext?
什么eclipse框架工具可以帮助我做我想做的事情?
答案 0 :(得分:0)
如果您已经有图形编辑器,那么创建较低级别的文本模型格式(例如使用antlr / Xtext)来执行代码生成似乎大多没必要。特别是,如果您的模型已经在EMF中。
EMF模型有各种代码生成器技术(例如,也可以使用Acceleo或Xtend);这些生成器将使用EMF模型作为输入,并提供特定于您似乎使用的API的输出代码。在这两个工具中,您必须通过定义模板手动组装输出文件,然后序列化这些模板的结果。此序列化在Acceleo中是自动的,或者您可以在Xtend中使用类似Java的API。
如果您的模型现在不在EMF中,您仍然可以直接使用Xtend - 但是,我相信,在这种情况下,Acceleo不会有用。