📄 4.5.1.2b.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>    </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 + -