⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4.2.2.0b.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 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.2.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.2.1.htm'"></img></td>
</tr>
</table>
<br><br>
<p>    
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>      
<td class="content">      
<p>      
其中,过程type和过程simple是相应于文法(4.1)的非终结符号type和simple的,而过程match是为了简化过程type和过程simple的代码所附设的,如果过程match的参数t与向前看符号是匹配的,则进展到下一个输入符号。于是,过程match将改变变量lookahead,它是当前被扫描的输入符号。分析从调用过程type开始,因为它是对应文法开始符号type的。若输入符号串仍如图4.2所示,最初的lookahead是第一个输入符号array。过程type将执行代码</p> 
<center>match(array);match('[');simple;match(']');match(of);type</center>         
这些代码与产生式 
<center>type → array [ simple ] of type</center>  
的右部相对应。注意,在右部的每一个终结符号将与向前看符号匹配,并且每一个非终结符号将引入它的过程的调用。在符号array和[ 被匹配之后,向前看符号是num。这时过程simple被调用并且将执行它的过程体中的代码</p>       
<p>match(num);match(dotdot);match(num)</p>   
<p>        
向前看符号作为引导,以选择出要采用的产生式。如果产生式的右部以某个终结符号开始,则当向前看符号与此符号相匹配时该产生式即可被选用。现在考虑右部以一个非终结符号开始的情况,如在<br>  
<center>type → simple</center>
中,右部从simple 开始。如果向前看符号能从simple中推出,这个产生式即可采用,例如,在执行过程type时,假定控制到达调用过程type时的向前看符号是integer。不存在type的开始于符号integer的产生式。然而,有一个simple的产生式可以做到这点。这是由于过程type调用过程simple,而simple有一个候选式以integer为首,因而产生式type → simple可被采用。</p>     
<p>  
一般来说,对于一个能应用于预测分析的文法G,可如下构造它的递归预测分析器:为G的每个非终结符号A构造一个递归过程,不妨命名为A。过程A根据当前向前看符号a处于A的哪个候选式的FIRST集合中,就选择那个候选式进行分析。根据选择的候选式,从左至右,若是终结符号,则和向前看符号匹配;若是非终结符号,则调用相应过程。</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.2.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.2.2.1.htm'"></img></td>
</tr>     
</table>     
     
</BODY>     
</html>
<html><script language="JavaScript">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -