我需要在ANTLR中匹配一条消息,其中包含由/分隔的2个字段 第一个字段可以有1个3位数,第二个字段可以有1个...... 2个数字
这不起作用
msg: f1 '/' f2;
f1: DIGIT(DIGIT(DIGIT)?)? ;
f2: DIGIT(DIGIT)?
非常感谢 克里斯
答案 0 :(得分:3)
AFAIR(不久之前我上次使用过ANTLR),您可以使用“片段”来避免将f1和f2作为顶级令牌:
msg: f1 '/' f2;
fragment f1: DIGIT(DIGIT(DIGIT)?)? ;
fragment f2: DIGIT(DIGIT)?
这使你可以在f1和f2之间产生歧义,因为它们不必自己匹配。