Antlr4 解析日期

Antlr4 Parsing dates

我正在尝试使用以 C# 作为目标的 Antlr4 来解析日期。在我的案例中,有效日期应具有以下内容

我知道这里已经有类似的问题,但他们的解决方案似乎对我不起作用

我在某处读到过类似优先级的解析,其中首先评估基于语法文件编写方式的最顶层规则。所以考虑一下,除了日期之外,我的语法还应该能够解析整数。

我拥有并有效的语法(但它不遵循上述规则如下)

/*
 *  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。

我想这应该可行。 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];