引用 Xtext/Xbase 语法中的生成类型

Referring to generated types in Xtext/Xbase grammar

我正在使用 Xbase 研究 Xtext 语法。该语法允许用户从一个 DSL 文件中创建一组具有超类型的 Java classes。因此,我创建了如下规则:

javaClass:
  name=ID ':' supertype=JvmParameterizedTypeReference

只要类型不引用由 DSL 创建的 class 文件,我的 class 文件生成器就可以很好地工作。例如,当在第 3 行创建一个 class ClassA,并在第 4 行定义另一个具有 supertype=ClassA 的 class ClassB 时,解析器不接受该文件。

我知道这是因为在解析 ClassB 时 ClassA 不是已知类型,因为生成器是在整个文件被解析后启动的。

是否有可能解决我的问题并使用户能够引用先前在同一 DSL 文件中声明的 classes?

你推断出JVM模型了吗?它允许第一个索引可用 类,然后在所有 类 已知时为它们推断 JVM 模型。参见:https://eclipse.org/Xtext/documentation/305_xbase.html#xbase-inferred-type