问题描述
我有以下ANTLR语法
relation
: IDENTIFIER EQUAL relative_date
;
relative_date
: K_NOW (PLUS | MINUS) NUMERIC_LITERAL TIME_UNIT
;
IDENTIFIER
: //'"' (~'"' | '""')* '"'
'`' (~'`' | '``')* '`'
| '[' ~']'* ']'
| [a-zA-Z_] [a-zA-Z_.0-9]*
;
TIME_UNIT
: ('h'|'m'|'s'|'d'|'w'|'M'|'y'|'q')
;
PLUS : '+';
MINUS : '-';
EQUAL: '=';
K_NOW : N O W;
NUMERIC_LITERAL
: [0-9]+ ;
如果我将TIME_UNIT
放在IDENTIFIER
解析器之前
-
something = now - 5d
有效 -
d = now - 5d
不起作用,并且首先失败d
并说IDENTIFIER
是必需的
如果我将TIME_UNIT
放在IDENTIFIER
解析器之后
-
something = now - 5d
在第二个d
失败,并说需要TIME_UNIT -
d = now - 5d
在第二个d
失败,并说需要TIME_UNIT
有人可以帮助我如何更改两种情况下的语法吗?就像是相对日期一样,请使用TIME_UNIT
词法分析器,否则使用IDENTIFIER
词法分析器
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)