📄 4.7.2.3b.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.7.2.3.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.7.2.4.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>  </td>
<td class="content">
<p>
3.若go(I<sub>i</sub> ,A)=I<sub>j</sub>,A为非终结符号,则置goto[i,A]= j <br>
4.分析表中凡不能用规则(2)及(3)填入信息的空白格上均置出错标志
"error" <br>
5.分析器的初态是由包含项目S'→·S 的有效项目集所对应的状态。</p>
<p>按上述算法构造的含有action和goto两部分的分析表,如果每个入口是唯一确定的(即不含有冲突动作)则称它为文法G的一张SLR分析表。具有SLR分析表的文法称为SLR(1)文法。其中“1"表示在分析过程中顶多向前看一个输入符号。我们时常把SLR(1)称作SLR。使用SLR分析表的分析器称作一个SLR分析器。</p>
<p>一个特殊情况是,如果在执行上述算法过程中始终未向前看任何输入符号,这样构造的SLR分析表称为LR(0)分析表。具有LR(0)分析表的文法称为LR(0)文法。文法(4.15)是一个LR(0)文法,读者不难为文法(4.15)构造LR(0)分析表。</p>
<p>如果按算法4.9构造的分析表中存在多重定义的入口(即含有冲突动作),则说明文法G不是SLR的。在这种情况下不能用上述算法构造分析器。</p>
<p>注意到算法4.9中所构造的goto表仅仅是对非终结符号而言。而在4.7.1节开始时我们所提到的goto[s<sub>m</sub>,X] 是对任何文法符号X而言。事实上,我们是对任何状态i(项目集I的下标)及文法符号X 定义 <br>
goto[i,X]=go(I<sub>i</sub>,X) </p>
<p>但对终结符号a,goto[i,a]的动作转移结果已包含在action[i,a]动作之内。所以分析表上并不需要终结符号的goto[i,a]表。读者也要注意到goto[i,X]和go(I<sub>i</sub> ,X)表示上的微小区别。</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.7.2.3.htm'"></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.7.2.4.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -