런타임에 Lexing을 할 때 렉서 오류를 누적하려고합니다. this answer에서와 같이 파서 오류에 대해이를 달성하는 정확한 방법을 따랐습니다. 하지만 내가 이것을 렉서에게하려고 할 때.ANTLR 4 누적 오류 Lexer 4
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
나에게 이런 일이 왜 어떤 이유를주십시오.
는 렉서의 클래스 서명과 일치하기 위해
class Class2 : IAntlrErrorListener<int>
정의 다음과 같이 : 다음과 같이 Class2의 선언해야하기 때문에