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

8 grammar antlr antlr3

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

2001-05-03
Run Code Online (Sandbox Code Playgroud)

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

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

FOUR_DIGIT
    : TWO_DIGIT TWO_DIGIT ; 

TWO_DIGIT
    : DIGIT DIGIT ;

DIGIT   : ('0'..'9') ;
Run Code Online (Sandbox Code Playgroud)

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

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

Bar*_*ers 7

Jarrod Roberson写道:

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

不,DIGIT DIGIT是唯一匹配两位数的方法.ANTLR并不会支持类似DIGIT{2},很遗憾.


Dan*_*rov 3

*我很确定 ANTLR 3 除了,+和 之外没有量词?DIGIT DIGIT DIGIT DIGIT似乎是获得您想要的行为的最合理的方法。

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