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

How to use semantic tests in the listeners with ANTLR 4?

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

谢谢。

编辑:我说词法分析器,这是一个错误。我是说解析器。

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

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

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