0

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

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

我本质上要问的是,我由模型 Inferrer 创建的 Java 类是否真的可以用作真正的 Java 类,它们可以在一个完全不同的项目中调用它们的方法并从 Java 代码访问字段,如果可以的话,这怎么能做完了?

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

4

1 回答 1

2

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

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

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

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

于 2012-06-29T21:45:36.787 回答