📄 5.5.1_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='5.5.0b.htm'" </td width="24" height="24">
<td>
<img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.5.1_1b.htm'" width="26" height="24"></img></td>
</tr>
</table>
<br><br>
<table>
<tr>
<td>    </td>
<td class="content">
<p>为了使其它的左递归翻译模式也适于预测分析,我们将进行更一般化的讨论。譬如,假设我们有下面的翻译模式:
</p>
</td>
</tr>
</table>
<table>
<tr>
<td>    </td>
<td class="content">
<p> A→A<span class="down"><sub>1</sub></span>Y{A.a:=g(A<span class="down"><sub>1</sub></span>.a,Y.y)}     
(5.2)<br>
A→X {A.a:=f(X.x)}<br>
</p>
</td>
</tr>
</table>
<table>
<tr>
<td>    </td>
<td class="content">
<p>对(5.2)应用第四章中消除左递归的算法,可将其转换成下面的文法<br>
A→X R              (5.3)<br>
R→Y R|ε
</p>
</td>
</tr>
</table>
<table>
<tr>
<td>    </td>
<td class="content">
<p>再考虑语义动作,翻译模式变为:<br>
A→X {R.i:=f(X.x)}<br>
   R
{A.a:=R.s}<br>
R→Y {R<span class="down"><sub>1</sub></span>.i:=g(R.i,Y.y)}
    (5.4)<br>
 
R<span class="down"><sub>1</sub></span> {R.s:=R<span class="down"><sub>1</sub></span>.s}<br>
R→ε{R.s:=R.i}
</p>
</td>
</tr>
</table>
<table>
<tr>
<td>    </td>
<td class="content">
<p>经过转换的翻译模式与图5.14中一样使用R的继承属性i和综合属性s。要看清楚为什么(5.2)和(5.4)的结果是一样的,我们考虑图5.16中两棵带注释的分析树。图5.16(a)中A.a的值是根据(5.2)由底向上来计算的。图5.16(b)中包含了根据(5.4)从上到下对R.i的计算。而且最下面的R.i值不变地被传递到上面作为R.s的值,并作为根结点A的A.a值(R.s在图5.16(b)中没有被表示出来)。
</p>
</td>
</tr>
</table>
<center><img src="images/t516.gif" > </center>
<br>
<table align=right width=300>
<tr>
<td>
<img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.5.0b.htm'" </td width="24" height="24">
<td>
<img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.5.1_1b.htm'" width="26" height="24"></img></td>
</tr>
</table>
</BODY>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -