我有以下 ANTLR 语法:
grammar mygrammar;
ASSIGNMENT
: ID '=' INT
;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
INT : '0'..'9'+
;
WS : ( ' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
只有 ASSIGNMENT 规则实际上是我的,其余的是 ANTLRWorks 1.4.3 添加的默认值。
当我在解释器中尝试语法时,“a=5”之类的字符串成功,但“b[space]=[space]6”之类的字符串失败:由于空格,我得到一个 MismatchedTokenException:
通过阅读 ANTLR 网站,以及
忽略规则:WS和
{$频道=隐藏}文本/语法规则,似乎应该忽略空格,但事实并非如此。
我究竟做错了什么?