布尔表达式的确定

2024-05-17 02:45

1. 布尔表达式的确定

一个布尔表达式E的真假值的确定,是在语法翻译过程中,根据(5.2)-(5.4)等价解释式逐步进行的。例如,对于布尔表达式 E = E(1)∨E(2)若E(1)为真,则E必为真,故E(1)的真出口必是E的真出口(之一);若E(1)为假,则E的真假值取决于E(2)的真假值,此时,需对E(2)进行计算,由此可见,E(1)的假出口应为E(2)对应的四元式的序号(E(2)的入口),同时,E(2)的真、假出口也是E的真、假出口。类似地,可确定E(1)∧E(2)、﹃E及更复杂的表达式的真、假出口。

布尔表达式的确定

2. 布尔表达式的语义函数

1.NXQ—全局变量,用于指示所要产生的下一四元式的序号;2.GEN(…)—其意义同前,每次调用,NXQ++;3. int Merge(int p1,int p2)—将链首“指针”分别为p1和p2的两条链合并为一条,并返回新链的链首“指针”(此处的“指针”实际上是四元式的序号,应为整型值)我们假定四元式是以一结构形式表示(存储)的:struct _Quadruple{int Op, arg1, arg2, Result;} QuadrupleList[];4.void BackPatch(int p,int t)—用四元式序号t回填以p为首的链,将链中每个四元式的Result域改写为t的值。函数Merge( )及BackPatch( )的程序见书

3. 布尔表达式的译结果

在设计布尔表达式翻译算法(即编写语义动作)时,可定义和使用如下三类四元式:(jnz, A1, ,p)—当A1为真(非零)时,转向第p四元式;(jrop,A1,A2,p)当关系A1 rop A2成立时,转向第p四元式;(j, , ,p)无条件转向第p四元式例如,对于条件语句if A∨B<C then S1 else S2经翻译后,可得四元式序列:(1) (jnz, A, -, 5)(2) (j, - ,- , 3)(3) (j<, B, C, 5)(4) (j, -, -, p+1)(5) S1相应的四元式序列(p) (j, -, -, q)(p+1) S2相应的四元式序列(q) …其中,表达式A的真出口为5(也是整个表达式的真出口),假出口为3(即表达式B<C的第一四元式);B<C的真、假出口也分别是整个表达式的真、假出口。

布尔表达式的译结果

4. 布尔逻辑表达式是什么东西呢?

布尔逻辑表达式:在职人员NOT(青年AND教师)的检索结果是检索出除了青年教师以外的在职人员的数据。
在一个检索式中,可以同时使用多个逻辑运算符,构成一个复合逻辑检索式。复合逻辑检索式中,运算优先级别从高至低依次是not、and、near、with、or,可以使用括号改变运算次序。括号优先级最高。
在职人员NOT(青年AND教师),先运算青年AND教师为青年教师,再运算在职人员NOT青年教师,为除了青年教师以外的在职人员的数据。

性质:
1、逻辑与:用“AND”或“ *”表示。可用来表示其所连接的两个检索项的交叉部分,也即交集部分。如果用AND连接检索词 A和检索词B,则检索式为:A AND B (或 A*B):表示让系统检索同时包含检索词A和检索词B的信息集合C。
2、逻辑或:用“OR”或“+”表示。用于连接并列关系的检索词。用OR连接检索词A和检索词B,则检索式为:A OR B(或 A+B)。表示让系统查找含有检索词A、B之一,或同时包括检索词A和检索词B的信息。
3、逻辑非:用“NOT”或“—”号表示。用于连接排除关系的检索词,即排除不需要的和影响检索结果的概念。用NOT连接检索词A和检索词B。

5. 布尔表达式的属性文法


布尔表达式的属性文法

6. 布尔表达式的出口

对于布尔表达式A∨(B∧(┑C∨D)),其等价的表述是A ?1 :(B ?((C ?0 :1)? 1 :D ):0 )显然,采用此种结构可产生更为有效的中间代码。这里需假定原布尔表达式的计算过程中不含有任何的副作用。在上式的计算中,根据A、B、C、D的取值不同,计算的结果以及运算的终止点亦不同。例如,当A=1(真)时,结果为1且终止于左边第一个‘1’处。这样终止的点我们称为该布尔表达式的出口,同时,把使布尔表达式取值为真的出口称为真出口,反之称为假出口。对一个布尔表达式而言,它至少有一个真出口和一个假出口(当然可以有多个)。在用于控制流程的布尔表达式E的计算中,这些出口分别指出当E值为真和假时,控制所应转向的目标(即某一四元式的序号)。

7. 布尔表达式的过程角度

对于一个布尔表达式而言,我们的目的仅仅是为了判定它的真假值。因此,有时只需计算它的一个子表达式,便能确定整个布尔表达式的真假值。例如,对于A∨B,只要知道A为真,则无论B取何值,表达式的结果一定为真。可见,对于三种常见逻辑运算,可作如下等价的解释:A∧B —(A) ? B : 0 (5.2)A∨B —(A) ? 1 : B (5.3)﹃A (A) ? 0 : 1 (5.4)

布尔表达式的过程角度

8. 求布尔表达式的值