' A-ZA-Z'在匹配替代方案时,我完全惊讶于此

时间:2014-06-17 15:43:01

标签: antlr grammar antlr4

我在使用antlr v4生成语法定义时遇到问题:

grammar TagExpression;

expr : not expr
| expr and expr
| expr or expr
| '(' expr ')'
| tag
;

tag : [a-zA-Z]+ ;

and : '&' ;

or : '|' ;

not : '!' ;

WS : [ \t\n\r]+ -> skip ;

语法错误发生在此处:tag : [a-zA-Z]+ ;

error(50): c:\temp\antlr\TagExpression.g4:10:6: syntax error: 'a-zA-Z' came as a complete surprise to me while matching alternative

我看到的例子有非常相似的结构。知道为什么会这样吗?

由于

1 个答案:

答案 0 :(得分:11)

字符集表示法只能用于词法分析器规则(以大写字母开头的规则,并生成令牌而不是解析树)。

Tag : [a-zA-Z]+;