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

📄 4.6.1.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.6.1.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.6.1.0c.htm'"></img></td>
</tr>
</table>
<br><br>
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>    
<td class="content">     
<table><tr>
<td class="content">            
<p>总之,在右句型中移走非终结符号并加进左右分界符号$,然后在相邻符号之间置放它们的优先关系,就得到一个新的符号串。利用此符号串可以用下面的办法找到右句型的可归约串。</p>       
   
<p>1. 从左至右扫描符号串直至遇到第一个·>为止。在(4.14)中,这个事实发生在第一个id与+ 之间。</p>     
<p>2. 然后向回扫描(向左)越过任何<img src="images/equalpoint.gif" width="20" height="19">,直至一个<·被发现。在(4.14)中,向回扫描至$。</p>    
<p>3. 可归约串包括在第(1)步所遇到的·>的左边和第(2)步所遇到的<·的右边的所有终结符号,包括插入在中间的或环绕在两旁的非终结符号。在(4.14)中,可归约串是第一个id。</p>    
<p>如果我们正在用文法(4.13)对句子id+id*id进行处理,那么我们将归约id到E。于是,得到右句型E+id*id。在用同样的步骤归约了两个剩下的id到E之后,我们得到右句型E+E*E。在此符号串中去掉非终结符号,加入左右分界符号,得到$+*$,再插入优先关系,最后得到:</p>   
<p>$<·+<·*·>$</p>   
<p>由上面的方法可知可归约串的左终点位于+ 和*之间,右终点位于*和$之间。这表示,右句型E+E*E的可归约串含有一个终结符号*和环绕它的两个非终结符号,即E*E。</p>    
<hr size=2 width=90% align=center color=red>   
<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.6.1.0.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.6.1.0c.htm'"></img></td>
</tr>        
</table>        
        
</BODY>        

⌨️ 快捷键说明

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