我试图在运行时进行 Lexing 时累积词法分析器错误。我已经按照这个答案中的解析器错误实现这一点的确切方法。但是当我尝试对 Lexer 执行此操作时。
class Class2 : IAntlrErrorListener<IToken>
{
public void SyntaxError(IRecognizer recognizer, IToken offendingSymbol, int line, int charPositionInLine, string msg, RecognitionException e)
{
Console.WriteLine("Error in lexer at line " + ":" + e.OffendingToken.Column + e.OffendingToken.Line + e.Message);
}
}
并按如下方式注册此侦听器。
Class2 z = new Class2();
lexer.AddErrorListener(z);
但这会产生一个意外的错误。
Argument 1: cannot convert from 'CSSParserAntlr.Class2' to 'Antlr4.Runtime.IAntlrErrorListener<int>'
和
The best overloaded method match for 'Antlr4.Runtime.Recognizer<int,Antlr4.Runtime.Atn.LexerATNSimulator>.AddErrorListener(Antlr4.Runtime.IAntlrErrorListener<int>)' has some invalid arguments
请给我一些为什么会发生这种情况的原因。