📄 7.4.1.htm
字号:
<html>
<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>
<body>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='7.3.4.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='7.4.2.htm'"></img></td>
</tr>
</table>
<br><br>
<font class="title2"><b>7.4 布尔表达式</b></font>
<table><tr><td>    </td>
<td class="content">
<p>
在程序设计语言中,布尔表达式有两个基本的作用:一个是用作计算逻辑值;另一个,也是更多地是用作控制流语句如<B>if</B>-<B>then</B>,<B>if</B>-<B>then</B>-<B>else</B>和<B>while</B>-<B>do</B>等之中的条件表达式。
<BR> 布尔表达式是用布尔运算符号(<B>and</B>,<B>or</B>,<B>not</B>)作用到布尔变量或关系表达式上而组成的。关系表达式形如E<SPAN
class=down>1</SPAN> <B>relop</B> E<SPAN class=down>2</SPAN>,其中E<SPAN
class=down>1</SPAN>和E<SPAN
class=down>2</SPAN>是算术表达式,relop为关系运算符号。本节我们考虑由如下文法生成的布尔表达式:<BR> E→E or E|E
and E| not E|(E)| id relop id |true|false
<BR> 我们利用属性relop.op来确定relop代表<,≤,=,<>,>,≥中的哪一个关系运算符号。按通常的习惯,假定<B>or</B>,<B>and</B>是左结合的,并且三个布尔运算符号的优先级为:<B>not</B>最高,<B>and</B>次之,<B>or</B>最低。
</p>
</td></tr></table>
<hr size=2 color=red width=90%>
<font class="title2"><b>7.4.1 翻译布尔表达式的方法</b></font>
<table><tr><td>    </td>
<td class="content">
<p>
有两种基本方法用来表示一个布尔表达式的值。第一种方法:是用数值表示真和假,从而对布尔表达式的求值可以象对算术表达式的求值那样一步一步地来计算。一般用“1”表示真,用"0”表示假。例如布尔表达式
1<B>or not</B> 0 <B>and</B> 0的计算过程如下: <BR> 1 <B>or not</B> 0 <B>and</B>
0 <BR> = 1 <B>or</B> l <B>and</B> 0 <BR> = 1
<B>or</B> 0 <BR> = 1 <BR>
实现布尔表达式的第二个基本方法是通过程序的控制流,即用程序中控制转移到达的位置来表示布尔表达式的值。这种方法用于翻译控制流语句中的布尔表达式尤其方便。例如,给定表达式E<SPAN
class=down>1</SPAN> or E<SPAN class=down>2</SPAN>,如果我们肯定E<SPAN
class=down>1</SPAN>为真,那么可以作出结论:整个表达式为真,而无须计算E<SPAN
class=down>2</SPAN>。也就是说,这种方法提供了简化布尔表达式计算的可能性,这也正是与第一种方法的不同之处。 <BR>
下面我们将分别用这两种方法来讨论如何把布尔表达式翻译成三地址代码。 <BR>
</p>
</td></tr></table>
<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='7.3.4.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='7.4.2.htm'"></img></td>
</tr>
</table>
</BODY>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -