如何检查ANTLR令牌仅在解析器中使用一次或更少

时间:2010-06-15 10:32:05

标签: parsing antlr rules antlr3

在Antlr中,如果我有一个例子:

someRule : TOKENA TOKENB;

它会接受:“tokena tokenb”

如果我希望TOKENA是可选的,我可以说,

someRule : TOKENA* TOKENB;

然后我可以:“tokena tokenb”或“tokenb”或“tokena tokena tokenb”

但这也意味着它可以重复一次。无论如何我可以说这个令牌可以有1次或更少但不超过1次吗?所以它会接受:

“tokena tokenb”或“tokenb”但不是“tokena tokena tokenb”?

非常感谢

1 个答案:

答案 0 :(得分:6)

  

......无论如何我可以说这个令牌可以有1次或更少但不超过1次吗? ...

以下是:

someRule 
  :  TOKENA? TOKENB
  ;

或:

someRule 
  :  TOKENA TOKENB
  |  TOKENB
  ;