如何在ANTLR4中终止Lexer

时间:2014-03-19 13:41:50

标签: antlr4

是否有一种终止词法分析器的简单方法?

还有一些我不想处理的令牌。但是如果输入包含那些令牌,我也希望Lexer发出警报。我的简单策略是在动作中抛出RuntimeException:

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

但是该操作会产生编译错误,因为生成的Lexer在操作之后有一个break命令,并且Java编译器抱怨break是一个无法访问的语句。

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

是否有一个终止Lexer的简单策略?

1 个答案:

答案 0 :(得分:1)

你可以欺骗编译器:

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