📄 4.2.1.0b.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.1.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.1.1.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>    </td>
<td class="content">
<table align=center width=550 class="content">
<tr><td>type</td><td><img src="images/equal.gif"> array[simple] of type</td></tr>
<tr><td></td><td>{注:A=type,a=array type→array[simple] of type}</td></tr>
<tr><td></td><td><img src="images/equal.gif"> array[num dotdot num] of type</td></tr>
<tr><td></td><td>
{注:A=simple,a=num simple→num dotdot num}</td></tr>
<tr><td></td><td><img src="images/equal.gif"> array[num dotdot num] of integer</td></tr>
<tr><td></td><td>
{注:A=type,a=integer type→integer}</td></tr>
</table>
<p>从建立分析树的角度,这个自顶向下分析的过程由图4.2所示。对于这一文法而言,我们将看到只要对输入符号串进行一次自左至右的扫描即可得到相应的分析树。我们常把在输入中正在被扫描的当前符号称作向前看符号。最初,向前看符号是array,即输入符号串的第一个符号,或者说最左边的符号。分析树的构造从树的根结点开始,根结点标以文法的开始符号type,如图4.2(a)所示。为了得到一个匹配,需要从type推出一个符号串,串的第一个符号恰是向前看符号array。在文法(4.1)中,能推得这样的符号串的产生式只有一个,所以我们选定它,并构造type的可能的子结点,分别标以产生式右端的array,[,simple等六个符号,见图4.2(b)。在图4.2的四个部分中,都用箭头指出了在输入中的向前看符号以及当前正被考虑的分析树的结点。当一个结点的诸子结点构造了以后,我们下一个要考虑的是最左边的那个子结点。在图4.2(b)中,标志以array的子结点就是正在考虑的最左的子结点。当正被考虑的树的结点是标以某个终结符号的并且这个终结符号与向前看符号正好匹配,那么,二者的箭头都要向前移动一个位置。在输入中的下一个符号变为新的向前看符号,并且分析树的下一个子结点将被考虑。如图4.2(c)所示。该图中,分析树的箭头已移到树的根结点的下一个子结点并且输入中的箭头已移到下一个符号[。在下一次移动之后,分析树中的箭头将指向标志为非终结符号simple的子结点。在分析中,当需考虑标以非终结符号的结点时,则可重复上述过程,即首先要为该非终结符号选择合适的产生式以及其它等等。</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.1.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.1.1.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -