2014-03-19 38 views
1

是否有簡單的方法來終止詞法分析器?如何在ANTLR4中終止詞法分析器

有一些令牌我不想處理。但是,如果輸入包含這些令牌,我也希望Lexer發出警報。我簡單的策略是在動作拋出一個RuntimeException:

CHARIZING: '#@' {throw new RuntimeException("charizing op not supported yet");}; 

但作用而生成編譯錯誤,因爲生成的詞法分析器的動作之後有一個休息命令和Java編譯器抱怨突破是一個無法言。

CPPDefineLexer.java:118: error: unreachable statement 
       case 1: throw new RuntimeException("charizing op not supported y 
et"); break; 

是否有一個簡單的策略來終止Lexer?

回答

1

你可以欺騙編譯器:

CHARIZING 
: '#@' 
    { 
    if (true) { throw new RuntimeException("charizing op not supported yet"); } 
    } 
;