如何匹配ANTLR 3中固定数量的字符?

时间:2011-05-03 05:31:16

标签: antlr grammar antlr3

我想在我的ANTLR语法中解析ISO 8601日期。

2001-05-03

我的语法文件中有以下条目:

date    : FOUR_DIGIT ('-')? TWO_DIGIT ('-')? TWO_DIGIT ;

FOUR_DIGIT
    : TWO_DIGIT TWO_DIGIT ; 

TWO_DIGIT
    : DIGIT DIGIT ;

DIGIT   : ('0'..'9') ;

我知道我可以将一个或多个与DIGIT+匹配,将零个或多个与DIGIT*匹配

虽然这有效,但有没有更简单的语法来指定我想要完全匹配2 DIGIT

2 个答案:

答案 0 :(得分:7)

  

Jarrod Roberson写道:

     

虽然这有效,但有没有更简单的语法来指定我想要完全匹配2 DIGIT?

不,DIGIT DIGIT是唯一匹配两位数的方法。不幸的是,ANTLR 支持DIGIT{2}之类的内容。

答案 1 :(得分:3)

我很确定除*+?之外,ANTLR 3没有量词。 DIGIT DIGIT DIGIT DIGIT似乎是获得所需行为的最合理方式。

请参阅http://www.antlr.org/wiki/display/ANTLR3/Grammars