Antlr4 指定给不是集合ANTLR 4的块的标签值?
当我制定这样的规则时Antlr4 指定给不是集合ANTLR 4的块的标签值?,antlr4,Antlr4,当我制定这样的规则时 /* date type */ date: 'date' '(' value = STRING ')' ; /* field["value"] */ key: name = ID '[' value = STRING ']'; whereExpr: key op =('>'|'<'|'>='|'<='|'=') value = (STRING | ID | INTEGER | DOUBLE | date ) ; 为什么?。 如何解决这个问题?您只能
/* date type */
date: 'date' '(' value = STRING ')' ;
/* field["value"] */
key: name = ID '[' value = STRING ']';
whereExpr: key op =('>'|'<'|'>='|'<='|'=') value = (STRING | ID | INTEGER | DOUBLE | date ) ;
为什么?。
如何解决这个问题?您只能将标签分配给一组令牌,而不能分配给解析器规则。换句话说,
value=(STRING | ID | INTEGER | DOUBLE | date)
无效,因为date
是解析器规则。通过删除值=
标签来修复它:
whereExpr
: key op=('>'|'<'|'>='|'<='|'=') (STRING | ID | INTEGER | DOUBLE | date)
;
whereExpr
:键op=('>'|'='|'
whereExpr
: key op=('>'|'<'|'>='|'<='|'=') (STRING | ID | INTEGER | DOUBLE | date)
;