在遵循公认答案的处理 ANTLR4 问题中的错误的说明后,我遇到了以下错误。
CustomErrorListener.java:11:找不到符号
符号:变量 REPORT_SYNTAX_ERRORS
位置:类 CustomErrorListener
我知道在 ANTLR4 中处理错误的方法与 ANTLR3 不同,基于上述问题及其答案,我最终实现了以下错误侦听器。
public class DescriptiveErrorListener extends BaseErrorListener {
public static DescriptiveErrorListener INSTANCE = new DescriptiveErrorListener();
@Override
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol,
int line, int charPositionInLine,
String msg, RecognitionException e)
{
if (!REPORT_SYNTAX_ERRORS) {
return;
}
String sourceName = recognizer.getInputStream().getSourceName();
if (!sourceName.isEmpty()) {
sourceName = String.format("%s:%d:%d: ", sourceName, line, charPositionInLine);
}
System.err.println(sourceName+"line "+line+":"+charPositionInLine+" "+msg);
}
}
REPORT_SYNTAX_ERRORS
不幸的是,我在 ANTLR 文档中的任何地方都找不到有关此字段的任何信息。关于这可能来自什么的任何线索?