在XText中正确使用Syntactic Predicates

时间:2016-02-27 10:11:53

标签: antlr grammar dsl xtext

我的语法有一些我需要解决的问题。 其中一条规则采用以下形式:

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

Or this image, if you prefer

规则Anys有可能以PNumb开头。我可以看到模糊性的位置,但是如果它看到一个PNumb后跟双点,我怎么告诉XText采取第二条路径?

据推测,如果我使用

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

然后,如果它看到一个数字,它将始终选择第一个,如果它看到" ...",我会遇到问题。

这里语法谓词的正确用法/位置是什么,以允许Antlr展望未来,看看" .."在场?

提前干杯。

1 个答案:

答案 0 :(得分:1)

您还需要包含'..'

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