📄 4.7.1.1.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.1.0b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.7.1.1b.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<p>一个LR分析器的工作过程,可以看作栈中符号序列和剩余输入符号串所构成的二元式的变化过程。分析开始时初始的二元式为</p>
<p>(s<sub>0</sub>,a<sub>1</sub>a<sub>2</sub>…a<sub>n</sub>$)</p>
<p>其中s<sub>0</sub>为分析器的初态,a<sub>1</sub>a<sub>2</sub>…a<sub>n</sub>为输入符号串,$为结束符号。分析过程每步的结果可表示为</p>
<p>(s<sub>0</sub>X<sub>1</sub>s<sub>1</sub>X<sub>2</sub>s<sub>2</sub>…X<sub>m</sub>s<sub>m</sub>,a<sub>i</sub>a<sub>i+1</sub>…a<sub>n</sub>$)</p>
<p>在这个二元式中</p>
<p>X<sub>1</sub>X<sub>2</sub>…X<sub>m</sub>a<sub>i</sub>a<sub>i+1</sub>…a<sub>n</sub></p>
<p>是一个右句型,X<sub>1</sub>X<sub>2</sub>…X<sub>m</sub>是它的一个活前缀。分析器的每一步动作由s<sub>m</sub>和a<sub>i</sub>唯一决定,在执行action[s<sub>m</sub>,a<sub>i</sub>]的每种动作之后,二元式变化如下:</p>
<p>1.若action[s<sub>m</sub>,a<sub>i</sub>]=shift s(移进s ),且s=goto[s<sub>m</sub>,a<sub>i</sub>],则二元式变为<br>
        (s<sub>0</sub>X<sub>1</sub>s<sub>1</sub>X<sub>2</sub>s<sub>2</sub>…X<sub>m</sub>s<sub>m</sub>a<sub>i</sub>s,a<sub>i+1</sub>…a<sub>n</sub>$)<br>
    2.若action[s<sub>m</sub>,a<sub>i</sub>]=reduce A→β(用A→β进行归约),则二元式变为<br>
        (s<sub>0</sub>X<sub>1</sub>s<sub>1</sub>X<sub>2</sub>s<sub>2</sub>…X<sub>m-r</sub>s<sub>m-r</sub>As,a<sub>i</sub>a<sub>i+1</sub>…a<sub>n</sub>$)<br>
    其中s=goto[s<sub>m-r</sub>,A],r为β的长度且β=X<sub>m-r+1</sub>X<sub>m-r+2</sub>…X<sub>m</sub>。<br>
    3.若action[s<sub>m</sub>,a<sub>i</sub>]=accept(接受),表示分析成功,二元式变化过程终止。<br>
    4.若action[s<sub>m</sub>,a<sub>i</sub>]=error(出错)。表示出现错误,调用一个出错处理程序。</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.1.0b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.7.1.1b.htm'"></img></td>
</tr>
</table>
</BODY>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -