0

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

javaClass:
  name=ID ':' supertype=JvmParameterizedTypeReference

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

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

尽管如此,是否有可能解决我的问题并使用户能够引用之前在同一个 DSL 文件中声明的类?

4

1 回答 1

1

您是否推断出 JVM 模型?它允许首先索引可用的类,然后在所有类都已知时为它们推断 JVM 模型。请参阅:https ://eclipse.org/Xtext/documentation/305_xbase.html#xbase-inferred-type

于 2017-06-02T02:37:58.413 回答