私は評価する必要がある表現が代わりに括弧を使用してこのようなものになります高度な検索機能に取り組んでいます:私たちが見ればC#でカスタム括弧の式を評価する方法は?
((Loan number is 1000 And
Lock Date is less than 12/03/2015) Or
Borrower SSN contains 12345) And
((Buy date is between 12/01/2015 and 23/02/2016 And
APR is less than 20000) Or
Loan amount is greater than 60000)
または単純な言葉で
((condition1 And condition2) Or condition 3) And ((condition4 And condition5) Or condition6).
を括弧、条件1および条件2を最初に評価し、次にこれの出力を条件3などで実行する必要があります。
一度に2つの条件を評価するAPIがあります。しかし、この文脈での挑戦は
1)どのように対応するかっこを特定し、最初にそれらを評価するかです。そして、この中間結果をさらに評価するために使用しますか?
2)使用されていない括弧はどのように見つけるのですか?たとえば、(((条件1と条件2))))、この場合は必須ではありませんが、3つの開始括弧と3つの閉じ括弧が有効な式です。
を発見しようとしたが、これは一度に一つの文字を読み取り、それをコンピュータが理解できる算術式の評価であるトークンベースの操作を要します。私の場合、これらのことはカスタムであり、これを行うアルゴリズムを見つけるべきです。誰も私のシナリオのより良いアプローチを提案することができますか?
私は式ツリーをあなたのAPIと一緒に使っています(または、表現木を自分で作成したくない場合はlinqkitを使用します)。 –
あなたの式にパーサーが必要です。作成方法は次のとおりです。http://stackoverflow.com/questions/2245962/is-there-an-alternative-for-flex-bison-that-is-usable-on-8-bit-embedded-systems/2336769# 2336769この記事では、後で評価できるようにツリーを構築する方法や、解析されたときに式を評価する方法について説明します。 –
shunting-yardアルゴリズムを使うと、中置の表記法を後の表記法に変換することができます。これらの記事のように結果を評価できますが、ASTやAPIに必要なフォーマットに変換することもできます。だから...あなたのAPIにはどんなフォーマットが必要ですか? –