2013-06-04 118 views
0

再次,我仍然感到困惑與此規則隱式聲明

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

我得到了同樣的警告,其中的詞法規則是

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

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

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

回答

0

skip命令將在詞法規則告訴ANTLR實際上並沒有從這些規則中產生令牌。 ANTLR認識到這個命令的存在,並且完全禁止這些標記類型的創建,這就是爲什麼當你試圖從解析器規則中引用它們時看到警告的原因。

  • 如果你想解析器來處理空白和註釋標記,然後從你的詞法規則-> skip

  • 如果你希望詞法分析器防止空白和註釋標記到達分析器,然後從任何語法規則消除對WSCOMMENTLINE_COMMENT引用和離開詞法規則原樣。