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

📄 4.5.1.2b.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='4.5.1.2.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.5.2.0.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td> 
<td class="content">  
<p>为了表示上的方便,我们给id加上了下标,并且把每一个右句型的句柄显示为红色。第二个最右推导是:</p>  
<table align=center width=450>
<tr><td>E</td><td><img src="images/equalr.gif" width="20" height="19">
<font color="FF0000"> E*E</font></td></tr>   
<tr><td></td><td><img src="images/equalr.gif" width="20" height="19"> 
E*<font color="FF0000">id<sub>3</sub></font></td></tr>   
<tr><td></td><td><img src="images/equalr.gif" width="20" height="19">
<font color="FF0000"> E+E</font>*id<sub>3</sub></td></tr>   
<tr><td></td><td><img src="images/equalr.gif" width="20" height="19"> E+<font color="FF0000">id<sub>2</sub></font>*id<sub>3</sub></td></tr>   
<tr><td></td><td><img src="images/equalr.gif" width="20" height="19"> 
<font color="FF0000">id<sub>1</sub></font>+id<sub>2</sub>*id<sub>3</sub></td></tr>   
</table> 
<p>请注意右句型E+E*id<sub>3</sub>。在第二个最右推导中,E+E是E+E*id<sub>3</sub>的一个句柄。而在第一个最右推导中,id<sub>3</sub>是这同一右句型的一个句柄。此文法的二义性是由于没有定义运算符号*和+的优先级而引起的。在第一个最右推导中,假定*优先于+;而在第二个最右淮导中,则假定+优先于*。于是,二者的逆过程也是不同的。下面仅给出了第一种最右推导的逆过程:</p>   
<table align=center width=450>
<tr><td>句型</td><td>归约中用到的产生式</td></tr>  
<tr><td><font color="FF0000">id<sub>1</sub></font>+id<sub>2</sub>*id<sub>3</sub>
</td><td>E→id</td></tr> 
<tr><td>E+<font color="FF0000">id<sub>2</sub></font>*id<sub>3</sub></td><td>E→id</td></tr> 
<tr><td>E+E*<font color="FF0000">id<sub>3</sub></font></td><td>E→id</td></tr> 
<tr><td>E+<font color="FF0000">E*E</font></td><td>E→E*E</td></tr> 
<tr><td><font color="FF0000">E+E</font></td><td>E→E+E</td></tr> 
<tr><td>E</td><td></td></tr>  
</table>
<p>至此,我们简单地讨论了句柄和规范归约的基本概念,但是并没有具体解决规范归约的问题,因为我们没有给出寻找句柄的算法。事实上,规范归约的中心问题恰恰是:如何寻找或确定一个句型的句柄。给出了寻找句柄的不同算法就给出了不同的规范归约方法。我们将在4.7节进一步讨论这个问题。</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='4.5.1.2.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.5.2.0.htm'"></img></td>
</tr>     
</table>     
     
</BODY>     
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -