在 XText 中正确使用句法谓词

Correct use of Syntactic Predicates in 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
;

那么如果它看到一个数字,它总是会选择第一个,不管它是否看到“..”,我会 运行 出问题。

为了让 Antlr 提前查看“..”是否存在,这里语法谓词的正确 usage/placement 是什么?

提前干杯

您还需要包含“..”

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