Chapter5.5布尔表达式的翻译1.概述布尔表达式布尔表达式是布尔运算量和逻辑运算符按一定语法规则组成的式子。逻辑运算符逻辑运算符通常有∧、∨、﹃三种(在某些语言中,还有≡(等价)及→(蕴含)等等);逻辑运算对象逻辑运算对象可以是逻辑值(True或False)、布尔变量、关系表达式以及由括号括起来的布尔表达式。不论是布尔变量还是布尔表达式,都只能取逻辑值True或False。在计算机内通常用1(或非零整数)表示真值(True),用0表示假值(False)。关系表达式关系表达式是形如EE11RopRopEE22的式子,其中EE11和EE22为简单算术表达式,RopRop为关系运算符(<,>,=,<=,>=,<><,>,=,<=,>=,<>)。若EE11和EE22之值使该关系式成立,则此关系表达式之值为True,否则为False。2.布尔表达式的语义及作用布尔表达式的语义在于指明计算一个逻辑值的规则.布尔表达式在程序设计语言中有两个基本的作用:一是在某些控制语句中作为实现控制转移的条件;另一个则是用于计算逻辑值本身。约定:各类运算符的优先顺序(由高至低)如下:⒈括号⒉算术运算符*、/+、-⒊关系运算符<、<=、=、>、>=、<>⒋逻辑运算符┒∧∨3.布尔表达式的等价解释-求值角度为了方便起见,下面我们仅讨论由文法为了方便起见,下面我们仅讨论由文法E→E∧E|E∨E|┑E|(E)|I|iRopiE→E∧E|E∨E|┑E|(E)|I|iRopi(5.1)(5.1)11)可采用类似算术表达式的方式来进行。例如,对于布尔)可采用类似算术表达式的方式来进行。例如,对于布尔表达式表达式A∨B∧CA∨B∧C,可翻译为:,可翻译为:(∧,(∧,B,B,C,C,T1)T1)(∨,(∨,A,A,T1,T1,T2)T2)3.布尔表达式的等价解释-过程角度但是,对于一个布尔表达式而言,我们的目的仅但是,对于一个布尔表达式而言,我们的目的仅仅是为了判定它的真假值。因此,有时只需计仅是为了判定它的真假值。因此,有时只需计算它的一个子表达式,便能确定整个布尔表达算它的一个子表达式,便能确定整个布尔表达式的真假值。例如,对于式的真假值。例如,对于A∨BA∨B,只要知道,只要知道AA为为真,则无论真,则无论BB取何值,表达式的结果一定为真。取何值,表达式的结果一定为真。可见,对于三种常见逻辑运算,可作如下等价的可见,对于三种常见逻辑运算,可作如下等价的解释:解释:A∧BA∧B(A)?B:0(A)?B:0(5.2)(5.2)A∨BA∨B(A)?1:B(A)?1:B(5.3)(5.3)﹃﹃AA(A)?0:1(A)?0:1(5.4)(5.4)4.布尔表达式的出口对于对于布尔表达式布尔表达式A∨A∨((B∧B∧(┑(┑C∨DC∨D)))),其等价的表述是,其等价的表述是AA??11:(:(BB?((?((CC??00::11)?)?11::DD):):00))显然,采用此种结构可产生更为有效的中间代码。这里需假显然,采用此种结构可产生更为有效的中间代码。这里需假定原定原布尔表达式布尔表达式的计算过程中不含有任何的的计算过程中不含有任何的副作用副作用。。在上式的计算中,根据在上式的计算中,根据AA、、BB、、CC、、DD的取值不同,计算的取值不同,计算的结果以及运算的终止点亦不同。例如,当的结果以及运算的终止点亦不同。例如,当A=1A=1(真)(真)时,结果为时,结果为11且终止于左边第一个且终止于左边第一个‘‘1’1’处。处。这样终止的点我们称为该这样终止的点我们称为该布尔表达式布尔表达式的的出口出口,同时,把使,同时,把使布布尔表达式尔表达式取值为取值为真真的的出口出口称为称为真出口真出口,反之称为,反之称为假出口假出口。。对一个对一个布尔表达式布尔表达式而言,它至少有一个而言,它至少有一个真出口真出口和一个和一个假出口假出口(当然可以有多个)。在用于控制流程的(当然可以有多个)。在用于控制流程的布尔表达式布尔表达式EE的的计算中,这些计算中,这些出口出口分别指出当分别指出当EE值为值为真真和和假假时,时,控制所应控制所应转向的目标转向的目标(即某一四元式的序号)。(即某一四元式的序号)。5.控制语句中的布尔表达式ifEthenS1elseS2或whileEdoSTE的代码S1的代码S2的代码E的代码S的代码TFF(a)(a)ifif语句语句(b)(b)whilewhile语句语句6.布尔表达式真假值的确定一个布尔...