📄 7.6.2_2c.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.6.2_2b.htm'" ></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'"
onclick="vbscript:window.location.href='7.6.2_2d.htm'" ></td>
</tr>
</table>
<p><br>
<br>
</p>
<table>
<tr>
<td class="content">
<p>(g)当遇到';'时把if-then-else语句归约为S时应作的语义动作为(见产生式(1)):
</p>
<p>{backpatch(E.truelist,M<sub>1</sub>.quad); </p>
<p>backpatch(E.falselist,M<sub>2</sub>.quad); </p>
<p>S.nextlist:=merge(S<sub>1</sub>.nextlist,N.nextlist,S<sub>2</sub>.nextlist)}<br>
这时回填了布尔表达式E中的真、假出口。即由图7.15可知E. truelist指向的表中存有100和104两个编号,因而将M1.quad之值回填人100和104两个四元式的目标标号的位置中去。从第(a)知道M<span
class="down">1</span>.quad之值为106。同样,将M2.quad之值117回填入103和105两个四元式的目标标号的位置上去。其次还将知道S.nextlist指向的表中含有标号116。
</p>
<p>(h)使用产生式(9)将S归约为L。执行相应的语义动作之后得到:L·nextlist指向的表中含有标号116。为下面推导方便,我们把它记作L<sub>1</sub>.nextlist。
</p>
<p>(i)在' L<sub>1</sub>;'之后插入一个M。见产生式(8)。执行与M相关语义动作得知:M.quad之值为127。
</p>
<p><br>
</p>
<table align="right" width="300">
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'"
onclick="vbscript:window.location.href='7.6.2_2b.htm'" ></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'"
onclick="vbscript:window.location.href='7.6.2_2d.htm'" ></td>
</tr>
</table>
</body>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -