kcr*_*ris 5 parsing antlr ambiguous-grammar
我需要匹配ANTLR
包含由 / 分隔的 2 个字段的消息,第一个字段可以有1..3
数字,第二个字段可以有1..2
数字,
这不起作用
msg: f1 '/' f2;
f1: DIGIT(DIGIT(DIGIT)?)? ;
f2: DIGIT(DIGIT)?
Run Code Online (Sandbox Code Playgroud)
ANTLR
?非常感谢克里斯
AFAIR(我上次使用 ANTLR 是在不久前),您可以使用“fragment”来避免将 f1 和 f2 作为顶级令牌:
msg: f1 '/' f2;
fragment f1: DIGIT(DIGIT(DIGIT)?)? ;
fragment f2: DIGIT(DIGIT)?
Run Code Online (Sandbox Code Playgroud)
这使得 f1 和 f2 之间存在歧义,因为它们不必单独匹配。