我想避免在PARSER语法文件中使用编程并在侦听器中使用语义检查。我可以做吗 ?怎么做 ?我会抛出异常吗?调用解析器的方法?
谢谢。
编辑:我说lexer,这是一个错误。我的意思是PARSER。答案 0 :(得分:1)
最简单的方法是使用Recognizer#addErrorListener(ANTLRErrorListener)
来捕获语义错误和其他错误 - 解析器扩展Recognizer
。
在解析器运行后检查是否存在捕获的错误,以确定是否/如何继续。
要影响解析器处理错误的方式,请使用Parser#setErrorHandler(ANTLRErrorStrategy)
。运行时包含BailErrorStrategy
,可用于在遇到语法错误时停止解析器。