当解析器/词法分析器遇到错误时,它会将其打印到console
并恢复,以便进行解析。对于最终用户,这是一个API调用,我想告诉他解析错误,以便他纠正。目前,我只能检测到发生了错误。
我的问题:如何将错误消息传播给最终用户?我无法收到错误消息,因为这是在 ANTLR 生成的解析器/词法分析器文件中处理的。
为 Java 生成的语法。
编辑1:语法是在某个时候写的。所以,只需要ANTLR2中的解决方案。
编辑 2:我发现如果我们设置defaultErrorHandler=false;
,那么默认的错误处理程序不会在词法分析器/解析器中生成,我们可以直接在处理代码中捕获这些异常。