1

我有类似于此处描述的 xtext 的 xtext 文件:(www.ebpml.org/blog2/index.php/2010/11/05/mde-xtext-and-json)

JSONDataSource: root = Object ;
Object: '{' firstObject=TerminalObject (',' objects+=TerminalObject)* '}';
Array: '['firstItem=ObjectValue (',' items+=ObjectValue)* ']';
EmptyObject: isEmpty?= '{}' ;
EmptyArray: isEmpty?= '[]' ;
ObjectValue: value=STRING | Object | Array | EmptyObject | EmptyArray ;
TerminalObject: element=STRING ':' (content = ObjectValue) ;

因此,在生成代码后,我拥有了在 java 中生成的所有对象。现在我想在那些生成的 java 文件中有更多的方法。

最好的方法是什么?
谢谢 :)

4

1 回答 1

0

好吧,没有简单的方法来定制这些类。你基本上可以做两件事:

  1. 创建您自己的 EMF (Ecore) 模型,并以重用您的 Ecore 模型的方式创建您的语法。这样,您可以定义新的操作,并手动创建它们的实现。
  2. 您还可以为填充内容的 Ecore 模型生成器设置后处理器。有关详细信息,请参见http://christiandietrich.wordpress.com/2011/07/22/customizing-xtext-metamodel-inference-using-xtend2/ - 但要有所不同,因为模型推理不能直接输出自定义代码;有一些基于 EMF genmodel-annotation 的方法来创建生成的代码主体(有关详细信息,请参阅http://jevopisdeveloperblog.blogspot.hu/2011/03/implement-tostring-with-xtexts.html的最后部分)。

总之,自定义生成的 EMF 模型非常困难,我不建议这样做。尽管似乎没有必要引入新的辅助类,但从技术上讲,这样做要容易得多。

于 2012-10-28T17:39:19.590 回答