在Xtext中,如何定义具有相同定义的终端?或交替的环节EString要求?

时间:2013-12-24 04:53:35

标签: parsing grammar xtext

我在XText中定义了以下语法。

Object:
    "object" (name=INT)? ("extends" superType=[Object|INT] "{" 
        (comps+=Component)* 
    "}"
;

我在定义交叉引用时遇到问题,因为INT显然没有返回ecore::EString个对象。

我尝试定义STRINT终端:

STRINT returns ecore::EString:
    INT
;

然而,这隐藏了之前定义的INT终端,这是另一个问题。

问题:

  • 有没有办法定义一个与另一个终端具有相同模式的新终端,而不是隐藏第一个终端?
  • 是否存在此ecore::Estring问题的解决方法,因为我想使用整数进行交联。

1 个答案:

答案 0 :(得分:1)

如果将STRINT定义为数据类型规则,则不会隐藏另一个终端。所以基本上你所描述的将起作用:

STRINT:
  INT
;