是否有一种终止词法分析器的简单方法?
还有一些我不想处理的令牌。但是如果输入包含那些令牌,我也希望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的简单策略?
答案 0 :(得分:1)
你可以欺骗编译器:
CHARIZING
: '#@'
{
if (true) { throw new RuntimeException("charizing op not supported yet"); }
}
;