Antlr4 Parsing dates
我正在尝试使用Antlr4以C#为目标来解析日期。就我而言,有效日期应具有以下
-
格式为
year / month / day - 年份必须只有4位数字
- 月和日必须只有2位数字
我知道类似的问题已经在这里,但是他们的解决方案似乎对我不起作用
- 如何创建将解析日期的antlr4语法
- Antlr:识别日期和数字的最简单方法是?
我在某处读到有类似优先级的解析,其中首先评估基于语法文件编写方式的最上层规则。因此,请考虑除日期外,我的语法还应该能够解析整数。
我掌握并使用的语法(但不遵循上述规则)如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /* * Parser Rules */ dateFormat : DECIMAL '/' DECIMAL '/' DECIMAL ; /* * Lexer Rules */ DECIMAL: DEC_DIGIT+; fragment DEC_DIGIT: [0-9]; |
我试图放下
之类的东西
YEAR or year : DEC_DIGIT DEC_DIGIT DEC_DIGIT DEC_DIGIT;
在词法分析器或解析器规则中为
,但它不起作用。
有什么想法/建议吗?
注意:无论何时我不应该使用Antlr,请不要提出正则表达式的替代方案或争论。
我想这应该起作用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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]; |