我正在开发高级搜索功能,需要评估的表达式应该是这样的(请保留括号):
((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).
如果我们看一下括号,condition1和condition2必须先被评估,然后再将其输出结果与condition3等进行执行...
我们有API可以同时评估两个条件。然而,在这种情况下的挑战是:
1)如何识别相应的括号并首先对它们进行评估?然后使用这个中间结果进行进一步的评估?
2)如何找到未使用的括号?例如 (((condition1 And condition2))),在这种情况下,虽然不需要它,但有3个起始和3个关闭括号是一个有效的表达式。
我尝试在此处以及这里找到一些算法。
然而,这需要基于标记的操作,逐字符读取,这是计算机理解的算术表达式评估。在我的情况下,这些东西是自定义的,因此我们应该找到一个算法来解决这个问题。有人可以为我的情况建议更好的方法吗?