📄 4.5.1.0.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.4b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.5.1.0b.htm'"></img></td>
</tr>
</table>
<br><br>
<font class="title2"><b>4.5 自底向上分析</b></font>
<table><tr><td>    </td>
<td class="content">
<p>我们所讨论的自底向上分析(Bottom-Up Parsing)法是一种"移进-归约"法。本节将介绍它的一些基本概念和基本思想。在4.6节中将介绍一个容易实现的"移进-归约"分析法,即算符优先分析法。而“移进-归约”分析法的更一般形式称作LR分析法,这将在4.7节中讨论。</p>
<p>“移进-归约”分析法试图为一个输入符号串构造一棵语法分析树,方法是从树叶(底)开始向上构造直到树根(顶)。我们可以将此过程看作为:归约一个输入符号串到文法开始符号的过程。换句话说,这样的分析法是从输入符号串开始,逐步进行归约,直至归约到文法的开始符号。这种方法的大意是,用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的一个候选式时,在一定的条件下,即可把栈顶的这一部分替换成(归约为)该产生式的左部符号。</p>
</td></tr></table>
<hr size=2 width=90% align=center color=red><br>
<font class="title2"><b>4.5.1 规范归约</b></font>
<table><tr><td>    </td>
<td class="content">
<p><font class="emphasize">归约</font></p>
<p>在第二章中,强调推导的概念,在那里,我们用文法定义了程序语言。已知文法G=(V<sub>T</sub>,V<sub>N</sub>,S,P),α,w∈(V<sub>T</sub>∪V<sub>N</sub>)<sup>*</sup>,A→β∈P,称从符号串αAw推导出αβw,记作αAw<img src="images/equal.gif">αβw;反过来,称从符号串αβw归约到αAw。推导的过程是,已知αAw和产生式A→β,用这个产生式的右部β替换αAw中的A,得到αβw;归约的过程是,已知αβw和产生式A→β,用产生式A→β的左部A替换αβw中的β,得到符号串αAw。</p>
<p>这样,语法分析器可以从输入符号串出发,每次从被归约的句型中找到一个产生式的右部,用其左部替换之,得到新的句型,直至归约到文法的开始符号。因为语法分析器是从左至右读入输入符号串,自然在被归约的句型中找最左边的某个产生式的右部进行归约。</p>
</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.4b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.5.1.0b.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -