如何在ANTLR 4的监听器中使用语义测试?

时间:2018-03-15 15:14:08

标签: antlr4

我想避免在PARSER语法文件中使用编程并在侦听器中使用语义检查。我可以做吗 ?怎么做 ?我会抛出异常吗?调用解析器的方法?

谢谢。

编辑:我说lexer,这是一个错误。我的意思是PARSER。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用Recognizer#addErrorListener(ANTLRErrorListener)来捕获语义错误和其他错误 - 解析器扩展Recognizer

在解析器运行后检查是否存在捕获的错误,以确定是否/如何继续。

要影响解析器处理错误的方式,请使用Parser#setErrorHandler(ANTLRErrorStrategy)。运行时包含BailErrorStrategy,可用于在遇到语法错误时停止解析器。