请问在antlr中 如何能实现 正则中的   \d{3,5} 这样的 识别问题。

解决方案 »

  1.   

    唉,谢了,我自己找到答案了 在这里标记一下。
    翻了好几遍官方的document,在www.antlr.org上面找了好久,终于明确知道 antlr 不支持 类似正则的 element{3,5}  这样重复 3到5次之间这样的语法。
    但是abnf 和ebnf 里面是有支持的。abnf 见
    http://www.ietf.org/rfc/rfc2234.txtebnf 见
    http://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf唉,这不完整的蛋疼的实现让我了好久。解决的方法有两种,
    1,换 jflex + CUP 这两个对bnf的支持比较好,但迁移的工作量不小
    2、采用 antlr的 gagted semantic predicate + valid semantic predicate. 

    rule
    @init {int n = 0;}
    :
    ({n<=5}?=> factor {n++} )+  {n>=3}?让我郁闷的是,我需要生成第二个.g文件。期望后续的版本能够在语法层支持这一特性而不需要带到语义层去实现。