我已经从 Antlr 3 升级到 Antlr 4。我正在使用这段代码来使用这段代码捕获异常。但这不适用于 Antlr 4。
partial class XParser
{
public override void ReportError(RecognitionException e)
{
base.ReportError(e);
Console.WriteLine("Error in Parser at line " + ":" + e.OffendingToken.Column + e.OffendingToken.Line + e.Message);
}
}
这是出现的错误
'Parser.ReportError(Antlr4.Runtime.RecognitionException)': no suitable method found to override
在 Antlr 4 中,累积输入流中发生的错误的预期方式是什么。我无法在网上找到实现这一目标的方法。请给我一些指导。
编辑:
我已经实现了 XParser 如下
partial class XParser : IAntlrErrorListener<IToken>
{
public void SyntaxError(IRecognizer recognizer, IToken offendingSymbol, int line, int charPositionInLine, string msg, RecognitionException e)
{
Console.WriteLine("Error in parser at line " + ":" + e.OffendingToken.Column + e.OffendingToken.Line + e.Message);
}
}
正如你所说,我可以使用任何提到的类来扩展这个解析器类。但是我无法注册这个监听器,在主程序中我对将参数传递为listener
. 请帮我注册。
正如我所看到的,这些类具有产生更有意义的错误消息的能力,不是吗?