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

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

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">   
<p><br>
此模式中的非终结符号E有两个属性E.truelist和E.falselist。同样,表示语句的S和表示语句表的L也分别需要一个未填写目标标号的转移指令表。这些表分别由属性L.nextlist和S.nextlist指示。指针S.nextlist指向一个转移指令表(和前边所讲的一样,事实上它存放转移指令的标号)。表中相应的指令将控制流转移到紧接语句S     
之后要执行的代码处。L.nextlist的定义相类似。
<p>现在让我们首先讨论产生式(5) :     
<p>S→while M<SPAN class=down><sub>1</sub></SPAN> E do M<SPAN class=down><sub>2</sub></SPAN> S<SPAN class=down><sub>1</sub><br>  
</SPAN>及其相应的语义动作。此产生式是由S→while E do S<SPAN class=down><sub>1</sub></SPAN>加入M<SPAN class=down><sub>1</sub></SPAN>    
和M<SPAN class=down><sub>2</sub></SPAN>而得到的。因为对于一遍翻译而言,E的代码的开始之处和S<SPAN class=down><sub>1</sub></SPAN>的代码的开始之处是这一产生式的重要位置。所以引入标记非终结符号M,以记录这些开始位置的四元式的标号。产生式M→ε的语义动作是置属性M.quad为即将生成的下一条四元式的标号(即编号)。当while语句中S<SPAN class=down><sub>1</sub></SPAN>的代码执行完毕以后,控制流转向S语句的开始处。因此,当我们归while     
M<SPAN class=down><sub>1</sub></SPAN> E do M<SPAN class=down><sub>2</sub></SPAN> S<SPAN     
class=down><sub>1</sub></SPAN> 为S 时,我们回填表S<SPAN     
class=down><sub>1</sub></SPAN>.nextlist中所有相应的转移指令的目标标号为M·quad。自然,我们需要在S1的代码之后增加一条转移到E的代码的开始位置的目标指令。另外,我们回填表E.truelist中相应的转移指令的目标标号为M<SPAN 
class=down>2</SPAN>.quad,即S<SPAN    
class=down><sub>1</sub></SPAN>的代码的开始位置。 
</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='7.6.2.htm'" ></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='7.6.2c.htm'"></img></td>
</tr>
</table>

</BODY>

<html><script language="JavaScript">

⌨️ 快捷键说明

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