当前位置: 首页 > 知识库问答 >
问题:

ANTLR4中的数字范围?lexer规则应该在ANTLR4中明确吗?

伯向晨
2023-03-14
hour: DIGIT09 | (DIGIT1 DIGIT09) | (DIGIT2 DIGIT04);

month: DIGIT19 | (DIGIT1 DIGIT02);

DIGIT12: '1'..'2';

DIGIT1: '1';

DIGIT2: '2';

DIGIT19: '1'..'9';

DIGIT09: '0'..'9';

DIGIT04: '0'..'4';

DIGIT04: '0'..'2';

我可以在parser中而不是在lexer中定义范围吗?

共有1个答案

元景天
2023-03-14

这种类型的验证最好在侦听器或访问器中执行,这些侦听器或访问器在创建解析树后执行。从一个数字开始:

NUMBER : [0-9]+;

然后根据以下内容定义小时:

hour : NUMBER;
month : NUMBER;

有了解析树之后,实现enterhourentermonth,以验证其中包含的编号是否有效。

 类似资料: