ANTLRでは、ANTLRErrorListenerを実装することにより、ANTLR 4のエラー/例外処理を拡張できます。それは、レクサーとパーサーを使って作成されたツリーをたどるときだけ、イベントが発生します。例: ANTLR 4リスナー・イベントをトリガーする前に事前にエラーと例外を処理する
parser.removeErrorListeners();
parser.addErrorListener(new MyTryDSLErrorListener());
ParseTreeWalker walker = new ParseTreeWalker();
MyTryDSLListener listener = new MyTryDSLListener(); // Can be replaced by default Base listener(empty implementation)
walker.walk(listener, parser.test()); // At this line tree will be traversed and if any error then MyTryDSLErrorListener's callback will be called.
私はリスナー/ビジターを起動せずに入力 文字列からエラーを取得する任意のきれいな方法があるかどうかを知りたいです。
注:デフォルトの実装でリスナーを置き換えることによって、これを処理する方法がありますが。そして再び、以下のようにのように、独自の実装リスナーにツリーをトラバース:
walker.walk(new TryDSLBaseListener(), parser.test()); // Find if has any errors.
walker.walk(new MyTryDSLListener(), parser.test()); // Actual use case.
解析中にパーサーをインラインで詳しく説明できますか?可能であれば、私にチュートリアルを提供してください。私がそれを理解していれば、それを 'parser.test();'に変更すべきですか?リスナーを加えて木を歩く? –