解析规则警告中的隐式声明

时间:2013-06-04 06:01:56

标签: antlrworks

我仍然对此规则感到困惑

block
    :  '{'
       (variable   |    stat)* 
       (    LINE_COMMENT 
       |    COMMENT
       |    WS
       )*
       '}'
    ;

我得到了同样的警告,其中词法分析器规则是

WS
    :   (' ' | '\r'|'\t'|'\u000C'|'\n') -> skip 
    ;

COMMENT
    :   '/*' .*? '*/' -> skip 
    ;

LINE_COMMENT
    :   '//' ~('\n'|'\r')* '\r'? '\n' -> skip 
    ;

1 个答案:

答案 0 :(得分:0)

词法分析器规则中的skip命令告诉ANTLR实际上不会从这些规则生成令牌。 ANTLR识别出此命令的存在并完全禁止创建这些令牌类型,这就是为什么在尝试从解析器规则引用它们时会看到警告。

  • 如果您希望解析器处理空格和注释标记,请从词法分析器规则中删除-> skip

  • 如果您希望词法分析器阻止空格和注释标记到达解析器,请从任何解析器规则中删除对WSCOMMENTLINE_COMMENT的引用,按原样保留词法规则。