3

我想开发一个逻辑表达式评估器来计算某些逻辑表达式对特定表达式的适用性。例如,

表达式可以是以下形式

(A AND B) NOT C

然后应该用另一个表达式来评估这个表达式

(B AND C) OR D

上述情况下的评估结果为 FALSE,因为第二个表达式没有填满第一个。

表达式也可以更复杂,例如它可以具有数值范围 R(1-100),这意味着表达式的适用性在范围内有效,例如正则表达式中的 [A-Za-z0-9]。

所以表达式可以很复杂

(A AND B) OR C AND R(1-100) NOT R(80-100)

然后必须通过类似的表达式对其进行评估

(C OR D) AND B NOT R(1-7) AND R(25-100)

关于一个表达式何时满足另一个表达式有明确的规则。因此,如果必须编写表达式评估器,最好的方法是什么。因为,我以前没有做过任何事情,所以我想抢先一步。任何相关的指针或类似的实现都可能有很大的帮助。

4

1 回答 1

0

您可以使用堆栈相当容易地评估布尔表达式。

基本上,当您看到“值”时,您将它们推入堆栈,当您看到运算符时,您会应用它们。谷歌“布尔表达式堆栈”会给你很多点击。

于 2012-11-16T01:35:24.020 回答