⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5.5.1_1.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 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>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>为了使其它的左递归翻译模式也适于预测分析,我们将进行更一般化的讨论。譬如,假设我们有下面的翻译模式:
</p>
</td>
</tr>
</table>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>&nbsp;&nbsp;&nbsp;&nbsp; A→A<span class="down"><sub>1</sub></span>Y{A.a:=g(A<span class="down"><sub>1</sub></span>.a,Y.y)} &nbsp&nbsp&nbsp&nbsp   
(5.2)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A→X&nbsp; {A.a:=f(X.x)}<br>   
&nbsp;&nbsp;&nbsp;
</p>
</td>
</tr>
</table>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>对(5.2)应用第四章中消除左递归的算法,可将其转换成下面的文法<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A→X R &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp;&nbsp;&nbsp;(5.3)<br>   
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R→Y R|ε   
</p>
</td>
</tr>
</table>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>再考虑语义动作,翻译模式变为:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A→X&nbsp;{R.i:=f(X.x)}<br>   
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp&nbsp;R
&nbsp;{A.a:=R.s}<br>   
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R→Y&nbsp;{R<span class="down"><sub>1</sub></span>.i:=g(R.i,Y.y)}    
&nbsp&nbsp&nbsp&nbsp(5.4)<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;
 R<span class="down"><sub>1</sub></span>&nbsp;{R.s:=R<span class="down"><sub>1</sub></span>.s}<br>   
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R→ε{R.s:=R.i}   
</p>
</td>
</tr>
</table>

<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</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 + -