我想在我的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?
Jarrod Roberson写道:
虽然这是有效的,是否有一个更简单的语法来指定我想要完全匹配2 DIGIT?
不,DIGIT DIGIT是唯一匹配两位数的方法.ANTLR并不会支持类似DIGIT{2},很遗憾.
*我很确定 ANTLR 3 除了,+和 之外没有量词?。DIGIT DIGIT DIGIT DIGIT似乎是获得您想要的行为的最合理的方法。
请参阅http://www.antlr.org/wiki/display/ANTLR3/Grammars