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
ます. 登録のお手伝いをお願いします。
ご覧のとおり、これらのクラスには、より意味のあるエラー メッセージを生成する機能がありますね。