xtext中的交叉引用 - 也适用于本机类型

时间:2014-05-29 16:23:53

标签: xtext

我正在尝试设置具有以下特征的xtext语法。

草图(!):

Class:
    properties += Property*
;

Resource:
    properties += Property* 
;


Link :
    // no classes here, so no common for Resource and Class
    [Resource]  <-> [Resource]
;

BasicType:
    'int' | 'long'
;

Property:
    // this is not supported
    name ':' BasicType | [Resource] | [Class]

    // i tried
    // name ':' EObject
;

我的问题是:

如何解决这种情况,将属性类型交叉引用为“资源”或“类”或BasicType?

我尝试使用EObject作为BaseType并解析自定义ScopeProvider中的交叉引用, 但后来我不知道如何使用BasicTypes(int或long)作为属性的类型。

1 个答案:

答案 0 :(得分:1)

首先,您可以通过定义不要调用的规则

来引入常见的超类型
Parent: Child1 | Child2

然后你只能引用其他地方定义的东西。 因此你必须明确地定义它们或改变语法

XText entity example, primitive type