首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Antlr4解析日期

Antlr4解析日期
EN

Stack Overflow用户
提问于 2016-04-26 09:57:41
回答 1查看 1.6K关注 0票数 2

我试图使用以Antlr4为目标的C#来解析一个日期。在我的情况下,有效日期应具有以下内容

  • 采用year / month / day格式
  • 年份必须只有4位数字
  • 月和日必须只有2位数。

我知道类似的问题已经出现了,但他们的解决方案似乎对我不起作用。

我在某个地方读过这样的文章:有一种类似于优先级的解析,在这种情况下,基于语法文件编写方式的最高规则首先要进行评估。因此,考虑到除了日期之外,我的语法也应该能够解析整数。

我的语法和工作(但它不遵循上述规则如下)

代码语言:javascript
复制
/*
 *  Parser Rules
 */

dateFormat :  DECIMAL '/' DECIMAL '/' DECIMAL
   ;

/*
 *  Lexer Rules
 */

DECIMAL:            DEC_DIGIT+;

fragment DEC_DIGIT:    [0-9];

我试着把一些东西

年份或年份: DEC_DIGIT DEC_DIGIT;

无论是在lexer规则还是解析器规则中,它都无法工作。

有什么想法/建议吗?

注意:无论我是否使用Antlr,请不要提出regex的替代方案或争论。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 12:12:30

我想这应该能行。date解析日期规则,integer规则用于整数。

代码语言:javascript
复制
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];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36861517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档