如何在xtext项目之外使用xtext推断的JVM模型?

时间:2012-06-29 10:33:36

标签: xtext

在Xtext文档(http://www.eclipse.org/Xtext/documentation.html#_17)的推断JVM模型部分,它首先说: “在许多情况下,您将希望您的DSL概念可用作Java元素。例如,实体将成为Java类,并且应该可以使用它。”

在上面的示例中,如何使用xbase生成的Entity类 ,即在与xtext不同的项目中的真实Java代码中?

我基本上要问的是,模型Inferrer创建的Java类是否可以实际用作真正的java类,可以在一个完全不同的项目中调用它们的方法和从java代码访问的字段,如果是这样的话怎么做到这一点?

我浏览文档让我担心生成的“Java类”只是Xbase类型,只能在xtext上下文中引用,因此不是真正的java类...

1 个答案:

答案 0 :(得分:2)

Xbase编译器可以将所有Xbase表达式编译为可在Java代码可用的任何地方使用的普通Java代码。

如果将自己的元素添加到语言中,则必须扩展生成器以支持这些元素 - 因此,您需要定义自己的JVMModelInferrer。

然后,基本的Xtext编译器执行JVMModelInferrer,计算可能(或可能不)包含Xbase表达式的JVM模型;然后,可以将此JVM模型生成为Java可编译(因此可以重复使用Java)的代码。

如果要测试此功能,只需生成Xtext域模型示例(可从Xtext / Examples类别的New ...向导中获得),并评估结果:编辑域模型时,Xtext会自动生成可用的Java代码(如果设置了所需的依赖项)。