2016-02-27 46 views
0

我有一些語法,需要解決某些ambuguities。 的規則的一個採用以下形式:正確使用XText中的句法謂詞

TArg: 
    anys=Anys 
    | rnumb1=PNumb ".." (rnumb2=PNumb)? 
; 

Or this image, if you prefer

規則Anys必須先從PNumb的潛力。我可以看到模糊的位置,但是如何告訴XText在看到一個PNumb後跟雙點的第二條路徑?

據推測,如果我用

TArg: 
    (=> rnumb1=PNumb ".." (rnumb2=PNumb)?) 
    |anys=Anys 
; 

則總是選擇第一個,如果它看到一個數字,如果它看到「..」,我會遇到問題的regargless。

這裏的句法謂詞的正確用法/位置是什麼?爲了讓Antlr能夠預見「..」是否存在?

提前歡呼。

回答

1

您還需要包括 '..'

TArg: 
    =>(rnumb1=PNumb "..") (rnumb2=PNumb)? 
    | anys=Anys 
;