0

「(A < 5) & (B = xyz*)」のような検索文字列を受け取り、正しい結果を返す API に取り組んでいます。このカスタム クエリ言語は事前定義されており、変更できません。この式の CFG を指定し、ANTRL を使用して解析ツリーを構築し、この機能を実装できることを知っています。Javaでこれを行う簡単で効率的な方法はありますか? この種の汎用クエリ言語を処理できるライブラリはありますか?

4

2 に答える 2

2

Antlr によって生成されたパーサーは非常に効率的です。それらを書くのは簡単ではありませんが、はるかに簡単な代替手段は考えられません。

この種の汎用クエリ言語を処理できるライブラリはありますか?

問題は、一般的なクエリ言語のようなものがないことです。それぞれが異なっており、あなたのものも例外ではありません...見た目では.

これが単なる式言語であり、それらを「解析して評価」したいだけの場合は、Antlr を使用することをお勧めしますが、解析ツリーは作成しないでください。代わりに、評価コードを文法自体に埋め込み、各プロダクションに一致する部分式を評価した結果を提供させます。(チュートリアルでこれを行う例があるに違いない...)

于 2013-05-09T10:25:53.737 に答える
0

オンザフライで Java クラスを生成するか、利用可能なスクリプト言語のいずれかを使用できます。たとえばJavaScript、JDK の一部です。有効なJavaScriptステートメントを作成して評価するだけです。

他の利用可能な言語はGroovyなどですJython。ただし、それらの使用には外部依存関係が必要です。あなたの選択は、他の要件によって駆動されるべきだと思います。それらをコミュニティと共有すると、おそらくより具体的な推奨事項を得ることができます.

于 2013-05-09T10:03:27.673 に答える