実行時にレクサーを実行するときに、レクサー エラーを蓄積しようとしています。この回答のように、パーサーエラーに対してこれを達成する正確な方法に従いました。しかし、これをレクサーに行おうとすると。
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
どうしてこうなったのか理由を教えてください。