この質問は十分に基本的です。文と文法がある場合、この文が文法の一部であるかどうかを効率的にチェックするにはどうすればよいですか。効率的な方法とは、最小限の計算/リソースを使用する方法を意味します。これが私がしたことです。ErrorListener
既に定義されている を拡張するクラスを実装しましたBaseErrorListener
。このクラスには、解析フェーズ中に解析エラーが発生したかどうかをErrorListener
示す単一のフィールドがあります。boolean error
開始時error
に に設定され、呼び出されるとfalse
更新されます。また、パーサーの開始状態が呼び出される前に、ステートメントtrue
public void syntaxError(...)
ErrorListener listener = new ErrorListener();
parser.removeErrorListeners();
parser.addErrorListener(listener);
呼ばれます。したがって、いくつかのテストを実行した後、特にこれがクエリとして形成されている場合、このアプローチは最適なアプローチではない可能性があると考えました。だから私は、これをすべて行う別の方法があるのだろうかと思っていましたか?