我试图使用以Antlr4为目标的C#来解析一个日期。在我的情况下,有效日期应具有以下内容
year / month / day格式我知道类似的问题已经出现了,但他们的解决方案似乎对我不起作用。
我在某个地方读过这样的文章:有一种类似于优先级的解析,在这种情况下,基于语法文件编写方式的最高规则首先要进行评估。因此,考虑到除了日期之外,我的语法也应该能够解析整数。
我的语法和工作(但它不遵循上述规则如下)
/*
* Parser Rules
*/
dateFormat : DECIMAL '/' DECIMAL '/' DECIMAL
;
/*
* Lexer Rules
*/
DECIMAL: DEC_DIGIT+;
fragment DEC_DIGIT: [0-9];我试着把一些东西
年份或年份: DEC_DIGIT DEC_DIGIT;
无论是在lexer规则还是解析器规则中,它都无法工作。
有什么想法/建议吗?
注意:无论我是否使用Antlr,请不要提出regex的替代方案或争论。
发布于 2016-04-26 12:12:30
我想这应该能行。date解析日期规则,integer规则用于整数。
date
: year=FOUR_DIGITS SLASH month=TWO_DIGITS SLASH day=TWO_DIGITS
;
integer
: INTEGER
| FOUR_DIGITS
| TWO_DIGITS
;
FOUR_DIGITS: DIGIT DIGIT DIGIT DIGIT;
TWO_DIGITS: DIGIT DIGIT;
INTEGER: DIGIT+;
SLASH: '/';
fragment DIGIT: [0-9];https://stackoverflow.com/questions/36861517
复制相似问题