我仍然对此规则感到困惑
block
: '{'
(variable | stat)*
( LINE_COMMENT
| COMMENT
| WS
)*
'}'
;
我得到了同样的警告,其中词法分析器规则是
WS
: (' ' | '\r'|'\t'|'\u000C'|'\n') -> skip
;
COMMENT
: '/*' .*? '*/' -> skip
;
LINE_COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' -> skip
;
答案 0 :(得分:0)
词法分析器规则中的skip
命令告诉ANTLR实际上不会从这些规则生成令牌。 ANTLR识别出此命令的存在并完全禁止创建这些令牌类型,这就是为什么在尝试从解析器规则引用它们时会看到警告。
如果您希望解析器处理空格和注释标记,请从词法分析器规则中删除-> skip
。
如果您希望词法分析器阻止空格和注释标记到达解析器,请从任何解析器规则中删除对WS
,COMMENT
和LINE_COMMENT
的引用,按原样保留词法规则。