2013-12-24 64 views
0

我在XText中定義了以下語法。在Xtext中,如何定義具有相同定義的終端?或交叉循環EString要求?

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

我具有限定交叉引用因爲顯然INT不返回ecore::EString對象的問題。

我試圖限定STRINT終端:

STRINT returns ecore::EString: 
    INT 
; 

然而,這隱藏了前面定義的INT端子,這是另一個問題。

問題:

  • 有沒有辦法來定義具有相同模式的新終端的另一個,而不是隱藏第一個?
  • 是否有此ecore::Estring問題的解決方法,因爲我想使用整數進行交聯。

回答

1

如果將STRINT定義爲數據類型規則,則不會隱藏其他終端。所以基本上你所描述的將會起作用:

STRINT: 
    INT 
;