1

実行時にレクサーを実行するときに、レクサー エラーを蓄積しようとしています。この回答のように、パーサーエラーに対してこれを達成する正確な方法に従いました。しかし、これをレクサーに行おうとすると。

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

どうしてこうなったのか理由を教えてください。

4

1 に答える 1