📄 4.2.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.1b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.1.0b.htm'"></img></td>
</tr>
</table>
<br><br>
<font class="title2"><b>4.2 预测分析器</b></font>
<table><tr><td>    </td>
<td class="content">
<p>
实际应用中的自顶向下分析,采用预测的自顶向下分析方法,其中有预测的递归分析方法和LL(1)分析法。这种分析方法对文法有严格的要求,一般要对使用的文法进行变换。
</p>
<font class="title2"><b>4.2.1 预测分析</b></font>
<table><tr><td>    </td>
<td class="content">
<p>
自顶向下分析是从文法的开始符号出发,试构造出一个最左推导,从左至右匹配输入的单词符号串。如果在每步推导中,面对被替换的非终结符号A(不妨称为A)和从左至右读输入串读到的单词符号a(又称向前看符号,不妨称为a),如果A的定义(无ε-产生式)<br>
<center>A→α<sub>1</sub>|α<sub>2</sub>|...|α<sub>n</sub></center>
中,只有α<sub>i</sub>(1≤i≤n)推导出的第一个终结符号是a,那么,我们就可以用产生式A→α<sub>i</sub>构造最左推导,即用α<sub>i</sub>替换A。</p>
<p>
<font class="example">例4.1 </font>试考虑下面的文法,此文法生成pascal类型的一个子集。文法中我们用符号dotdot表示“..”,这是强调把它当作一个整体。</p>
<table align=center width=450 class="content">
<tr><td>type →</td><td>simple</td></tr>
<tr><td></td><td>|^id</td></tr>
<tr><td></td><td>|array[simple] of type</td><td>(4.1)</td></tr>
<tr><td>simple→</td><td>integer</td></tr>
<tr><td></td><td>|char</td></tr>
<tr><td></td><td>|num dotdot num</td></tr>
</table>
<p>对于输入符号串</p>
<center>array [ num dotdot num ] of integer</center>
<p>其最左推导构造如下页所示: </p>
</td></tr></table>
<br><br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.1b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.1.0b.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
<html><script language="JavaScript">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -