我想在我的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
?
答案 0 :(得分:7)
Jarrod Roberson写道:
虽然这有效,但有没有更简单的语法来指定我想要完全匹配2 DIGIT?
不,DIGIT DIGIT
是唯一匹配两位数的方法。不幸的是,ANTLR 不支持DIGIT{2}
之类的内容。
答案 1 :(得分:3)
我很确定除*
,+
和?
之外,ANTLR 3没有量词。 DIGIT DIGIT DIGIT DIGIT
似乎是获得所需行为的最合理方式。