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

📄 7.3.1b.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='7.3.1.htm'" ></td>
    <td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='7.3.2.htm'" ></td>
  </tr>
</table>

<p><br>
<br>
<table >
  <tr>
  	<td>
    <p>我们可以重新解释在图7.8中的lookup操作,若采用最近嵌套作用域规则查找非局部名字,如Pascal语言中那样,此时图7.8中的翻译模式仍是可用的。为具体阐述,我们假定图7.8的赋值语句出现在如下文法形成的上下文环境中: 
    </p>
    <p>P→MD <br>
    &nbsp;&nbsp;&nbsp; M→ε <br>
    &nbsp;&nbsp;&nbsp; D→D;D|<b>id</b> :T|<b>proc id</b>;N D;S <br>
    &nbsp;&nbsp;&nbsp; N→ε <br>
    &nbsp;&nbsp;&nbsp; </p>
    <p>由上述文法所形成的每一个过程,在图7.6中的翻译模式都将为之建立一张新的独立的符号表。而每个这样的符号表表头均有一个指针指向刚好包围该嵌人过程的外围过程(见图7.5的例子)。当检查形成过程体的语句时,一个指向此过程的符号表的指针出现在栈tblptr的顶部。这是由产生式D→<b>proc 
    </b>;ND;S右边的标记非终结符号N的语义动作将该指针压人栈中的。 </p>
    <p>非终结符号S的产生式如图7.8。由S所产生的赋值语句中的名字必须或者是在S所在的那个过程中已被说明,或者是在某个外围过程中已被说明。当应用到name时,新的lookup过程先通过top(tblptr)指针在当前符号表中查找名字为name的表项。若找到,返回有关信息。若未找到,lookup就利用当前符号表表头的指针找到该符号表的外围符号表,然后在那里查找名字为name的表项,直到所有外围过程的符号表中均无此name表项,则lookup返回nil,表明查找失败。例如,对于图7.5中的符号表,假定过程partition中的一条赋值语句正在被处理。操作lookup(i)将在partition的符号表中找到一个表项;而操作lookup(v)因v不在这个符号表中,便将使用此表表头中指向外围过程符号表的指针继续在过程quicksort的符号表中查找。 
    </td>
  </tr>
</table>

<table>
  <tr>
    <td><font class="yanshi">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 观看演示&nbsp;</font></td>
    <td><font color="blue" onmouseover="javascript:style.cursor='hand'"
    onclick="javascript:open('applets/test7_1/Page1.htm','_blank','menu=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,left=100,top=100,width=800,height=600')">简单赋值语句的翻译</font></td>
    <td><img src="../images/yanshi.gif" width="36" height="35"></td>
  </tr>
</table>

<p><br>
</p>

<table align="right" width="300">
  <tr>
    <td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='7.3.1.htm'" ></td>
    <td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='7.3.2.htm'" ></td>
  </tr>
</table>
</body>
</html>

<html><script language="JavaScript">

⌨️ 快捷键说明

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