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

📄 4.5.2.0.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.5.1.2b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.5.2.0b.htm'"></img></td>
</tr>
</table>
<br><br>
<font class="title2"><b>4.5.2 “移进-归约”分析法的栈实现</b></font>   
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>   
<td class="content">    
<p>在考虑如何寻找句柄之前,让我们先来考虑“移进- 归约”分析法是如何使用栈来实现的。栈是语法分析的一种基本数据结构。一个“移进一归约"分析器使用一个寄存文法符号的栈和一个存放输入符号串w的缓冲器。分析开始时预先把符号$推进栈,以示栈底,并且将$置入输入符号串之后,以示符号串的结束。因而分析器的初始状态为:</p>  
<table align=center width=450 class="content">   
<tr><td>栈</td><td>输入</td></tr>      
<tr><td>$</td><td>w$</td></tr>      
</table>   
<p>分析器的工作过程是,自左至右把输入符号串w 的符号一一移进栈里,一旦发现栈顶的一部分符号形成一个可归约串时,就把栈中的这个子符号串用相应的归约符号(在规范归约时是用相应的产生式的左部符号)替换。这种替换可能持续多次,直至栈顶不再呈现可归约串为止。然后,就继续向栈里移进符号,重复整个过程,直至最终形成如下格局:</p>      
<table align=center width=450 class="content">   
<tr><td>栈</td><td>输入</td></tr>      
<tr><td>$S</td><td>$</td></tr>      
</table>   
<p>此时,栈里只含$与最终归约符号S(在规范归约的情形下S为文法开始符号),而输入符号串w 全被吸收,输入缓冲器中仅剩下结束符号$。这种格局表示分析成功。如果达不到这种格局,意味着输入符号串w(源程序)含有语法错误。</p>      
  
</td></tr></table>    
      
       
<table align=right width=300>       
<tr>       
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.5.1.2b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='4.5.2.0b.htm'"></img></td>
</tr>       
</table>       
       
</BODY>       
</html>
<html><script language="JavaScript">

⌨️ 快捷键说明

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