📄 4.2.3.4.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.2.3.3c.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.3.4b.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<p><font class="emphasize">在预测分析法中的错误处理示例
</font></p>
<p>非递归预测分析器在分析过程中可在以下两种情况下发现源程序的语法错误:</p>
<p>1.如果在栈顶上的终结符号与下一个输入符号不相匹配。</p>
<p>2. 如果在栈顶上的是非终结符号A,下一个输入符号是a,并且分析表入口M[A,a] 为空。</p>
<p>针对这些情况,我们将示例性地介绍一种“应急”式的错误处理方法。其基本思想是,当出错时跳过剩余输入符号串中的若干符号直到可以继续进行分析为止。那么究竟要跳过多少符号呢,这取决于栈和剩余输入符号串何时能重新协调地同步工作。这里的“应急”式方法是指为使上述同步工作得以实现所采取的必要的措施。这样的措施能迅速解决问题,但不一定很完善。</p>
<p>下面以文法(4.3)为例进行具体的讨论。我们重新考虑它的分析表,并希望在表中能反应错误处理的有关信息。表4.5正是所需要的分析表,它是在表4.1的基础上加进了同步化人口“synch”而构成的。根据非终结符号的FOLLOW集合可得到synch在表中的位置。例如由例4.5可知<b>FOLLOW</b>(E)={),$},<b>FOLLOW</b>(T)={+,),$},<b>FOLLOW</b>(F)= {+,*,),$},即可确定出表中synch的位置。就是说在表4.5中有两种错误入口,一种是用空白表示的入口,另一种是synch。</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.2.3.3c.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.3.4b.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -