在Antlr中,如果我有一个例子:
someRule : TOKENA TOKENB;
它会接受:“tokena tokenb”
如果我希望TOKENA是可选的,我可以说,
someRule : TOKENA* TOKENB;
然后我可以:“tokena tokenb”或“tokenb”或“tokena tokena tokenb”
但这也意味着它可以重复一次。无论如何我可以说这个令牌可以有1次或更少但不超过1次吗?所以它会接受:
“tokena tokenb”或“tokenb”但不是“tokena tokena tokenb”?
非常感谢
答案 0 :(得分:6)
......无论如何我可以说这个令牌可以有1次或更少但不超过1次吗? ...
以下是:
someRule
: TOKENA? TOKENB
;
或:
someRule
: TOKENA TOKENB
| TOKENB
;