Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Antlr4 指定给不是集合ANTLR 4的块的标签值?_Antlr4 - Fatal编程技术网

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)
 ;