分配给块的标签值不是一组 ANTLR 4?
label value assigned to a block which is not a set ANTLR 4?
什么时候,我制定了这样的规则,
/* date type */
date: 'date' '(' value = STRING ')' ;
/* field["value"] */
key: name = ID '[' value = STRING ']';
whereExpr: key op =('>'|'<'|'>='|'<='|'=') value = (STRING | ID | INTEGER | DOUBLE | date ) ;
在我的语法中,ANTLR 显示以下错误。
error(130): WhereParser.g4:14:43: label value assigned to a block which is not a set
1 error(s)
为什么?
我该如何解决?
您只能将标签分配给一组标记,而不能分配给解析器规则。换句话说,value = (STRING | ID | INTEGER | DOUBLE | date)
是无效的,因为 date
是解析器规则。通过删除 value =
标签修复它:
whereExpr
: key op=('>'|'<'|'>='|'<='|'=') (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 ) ;
在我的语法中,ANTLR 显示以下错误。
error(130): WhereParser.g4:14:43: label value assigned to a block which is not a set
1 error(s)
为什么? 我该如何解决?
您只能将标签分配给一组标记,而不能分配给解析器规则。换句话说,value = (STRING | ID | INTEGER | DOUBLE | date)
是无效的,因为 date
是解析器规则。通过删除 value =
标签修复它:
whereExpr
: key op=('>'|'<'|'>='|'<='|'=') (STRING | ID | INTEGER | DOUBLE | date)
;