クエリフィルターを操作できるパーサーを探しています。ただし、用語がよくわからないので、大変な作業になっています。誰かが私を助けてくれることを願っています。「再帰下降パーサー」について読んだことがありますが、これは私が探している論理式の評価ではなく、本格的な言語パーサー用であるのではないかと思います。
理想的には、.NETコード(C#)だけでなく、T-SQLで機能する同様のパーサーも探しています。
私が欲しいのは何かを解析することです例えば:
((a = b)|(e = 1))&(c <= d)
理想的には、演算子は定義可能であり(たとえば、'<' vs'lt'、'=' vs'==' vs'eq'など)、関数型ラベルを指定できます(たとえば、(left(x、1)= 'e'))。パーサーはこれをロードし、順序の優先順位に従い(理想的には角かっこがないことを処理します)、ブール結果に評価する式を使用してコードにコールバックします(例:'a = b'?)。パーサーが式のカスタム関数を理解することは期待していません(ただし、文字列の分割など、いくつかの基本的な関数は便利です)。式を(左側と右側の部分に)分割すると便利です。
パーサーは、最終結果を計算するために最小限の質問をすることが望ましいです。たとえば、ANDの一方の側が偽の場合、もう一方の側を評価する意味はなく、最も簡単な側を最初に評価します(つまり、上記の式、'c <= d'はより高速であると想定されるため、最初に評価されます。
これはやるべきことがたくさんあると想像できますが、かなり一般的です。誰かが私に何か指針を与えることができますか?上記のように柔軟なパーサーがない場合、最初に使用できる基本的なパーサーはありますか?
どうもありがとう
リー