ANTLR含糊不清

时间:2010-03-11 20:52:35

标签: antlr

我需要在ANTLR中匹配一条消息,其中包含由/分隔的2个字段 第一个字段可以有1个3位数,第二个字段可以有1个...... 2个数字

这不起作用

msg: f1 '/' f2;

f1: DIGIT(DIGIT(DIGIT)?)? ;
f2: DIGIT(DIGIT)?
  1. 在这种情况下如何避免含糊不清?
  2. 有没有更优雅的方式来表达ANTLR中的重复次数?
  3. 非常感谢    克里斯

1 个答案:

答案 0 :(得分:3)

AFAIR(不久之前我上次使用过ANTLR),您可以使用“片段”来避免将f1和f2作为顶级令牌:

msg: f1 '/' f2;

fragment f1: DIGIT(DIGIT(DIGIT)?)? ;
fragment f2: DIGIT(DIGIT)?

这使你可以在f1和f2之间产生歧义,因为它们不必自己匹配。