编译原理----布尔表达式到四元式的翻译
布尔表达式(E)是由布尔算符(∧,∨,┐)作用于布尔变量或关系表达式而形成的。
形式 E1 rop E2(rop是关系符,E1和E2是算术式。)
文法 E→ E∧E | E∨E | ┐E | (E) | i | i rop i
设定 布尔算符的优先顺序:┐,∧,∨。 ∧,∨服从左结合。所有关系符的优先级相同,高于任何布尔算符,低于任何算术算符。
关系符不得结合,如 A>B>C不合法。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
布尔表达式(E)在语言中的用途
求值 X:=A∨B<D
条件控制 WHILE A∨B<D DO S
IF A∨B<D THEN S1 ELSE S2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
布尔表达式的求值
1 通常算法,如同算术表达式求值一样,一步步地计算各部分的值,进而计算出整个表达式的值。
2 采用优化措施
A∨B if A then true else B
A∧B if A then B else false
┐A if A then false else true
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
说明
上述两种计算方法对于不包含布尔函数调用的式子是没有什么差别的。仅当遇到布尔函数调用,并且这种函数调用引起副作用时,上述两种算法不等价。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
对于第一种方法而言,可以如同翻译算术表达式一样来翻译布尔表达式。
A∨B∧C=D
翻译成
= C D T1
∧ B T1 T2
∨ A T2 T3
第二种方法是本节主要内容,下面将详细讨论。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用自下而上语法分析方法,语法制导生成A∨B<D的四元式