我正在使用Xbase编写Xtext语法。该语法允许用户从一个DSL文件创建一组具有超类型的Java类。因此,我创建了如下规则:
javaClass:
name=ID ':' supertype=JvmParameterizedTypeReference
我的类文件生成器非常有效,只要该类型不引用由DSL创建的类文件即可。当在例如第3行中创建类ClassA,并且在第4行中定义了另一个具有超类型= ClassA的类ClassB时,解析器不接受该文件。
我知道这是因为ClassA在解析ClassB时不是已知的类型,因为生成器在整个文件被解析后启动。
是否可以解决我的问题并使用户能够引用先前在同一DSL文件中声明的类?
答案 0 :(得分:1)
您推断出JVM模型吗?它允许第一个索引可用类,然后在知道所有类时为它们推断JVM模型。请参阅:https://eclipse.org/Xtext/documentation/305_xbase.html#xbase-inferred-type