0

これは以前に行われたと確信していますが、見つけることができません。

「((A OR B) AND C) OR D」のようなものを属性のデータベース クエリに変換する必要があります。具体的には、Ruby Sequel を使用しています。誰かが例やユーティリティ、または私が車輪の再発明を妨げるものを教えてもらえますか?

4

1 に答える 1

2

ANTLRを使用して文法を定義し、それらのタイプの文字列用の Ruby パーサーを自動的に生成できます。ANTLR はパーサー ジェネレーターであり、言語 (説明したブール言語など) の文法を定義できます。

解析後、目的のデータ構造を構築するために実行する必要があるアクションを指定できます (この場合、クエリの構造をキャプチャするツリー データ構造)。

ANTLR は他の言語用のパーサーも生成できるため、これは特に Ruby の問題ではありません。あなたの場合、アプリケーションに統合して文字列を解析し、必要なデータ構造を生成できる Ruby パーサーを生成します。

于 2012-08-28T21:16:25.300 に答える