0

我仍然对这条规则感到困惑

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

我得到了同样的警告,词法分析器规则在哪里

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

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

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

1 回答 1

0

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

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

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

于 2013-06-04T13:21:13.550 回答