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

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

<p><br>
<br>
</p>

<table>
  <tr>
    <td class="content"><font class="example">例7.6</font> 
    考虑使用自底向上的分析法按照上述翻译模式生成下述语句表(语句序列)的四元式目标代码,其中A<sub>1</sub>,A<sub>2</sub>和A<sub>3</sub> 
    均表示赋值语句。 <p>if a<b or c<d and e<f then A<sub>1</sub> else A<sub>2</sub>;while 
    a<b do A<sub>3</sub> </p>
    <p>我们可以按照下列各步来得到所求的四元式代码: </p>
    <p>(a)我们将用到的产生式主要有模式中的(l)和(5),即 </p>
    <p>S→if E then M<sub>1</sub> S<sub>1</sub> N else M<sub>2</sub> S<sub>2</sub> </p>
    <p>S while M<sub>1</sub> E do M<sub>2</sub> S<sub>1</sub><span class="down"><br>
    </span>并且其它与此有关的产生式也将用到。例中的布尔表达式a<b 
    orc<d and e<f与例7.5的相同。因而将首先生成下列四元式(我们仍从编号100开始): 
    </p>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;100: if a<b goto— 
    <br>&nbsp;&nbsp;&nbsp;&nbsp;101: goto l02 
    <br>&nbsp;&nbsp;&nbsp;&nbsp;102: if c<d goto l04  
    <br>&nbsp;&nbsp;&nbsp;&nbsp;103: goto— 
    <br>&nbsp;&nbsp;&nbsp;&nbsp;104:if a<f goto— <F goto—> 
    <br>&nbsp;&nbsp;&nbsp;&nbsp;105: goto—  
    <br>&nbsp;&nbsp;&nbsp;&nbsp;(b)当未到达相当于S<sub>1</sub>的赋值语句A<span class="down">1</span>之前,有一个M<sub>1</sub>,此时的语义动作为:
    <br>&nbsp;&nbsp;&nbsp;&nbsp;{M.quad :=nextquad}<br>
    由于现在的最后一条四元式的编号为105,所以M<sub>1</sub>.quad之值为106。 
     
    <br>&nbsp;&nbsp;&nbsp;&nbsp;(c)分析到赋值语句A<sub>1</sub>。为了说明得具体些,我们不妨假设当人归约为S<sub>1</sub>时,A<sub>1</sub>本身已产生了10条四元式指令(这一点翻译模式中没有),即有</p>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;106:&nbsp;&nbsp;
    <div align="right"><table border="0" width="100%">
<TBODY>
      <tr>
        <td width="18%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .</td>
        <td width="82%"></td>
      </tr>
      <tr>
        <td width="18%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .</td>
        <td width="82%">关于A<sub>1</sub>的四元式&nbsp; } 共10条</td>
      </tr>
      <tr>
        <td width="18%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .</td>
        <td width="82%"></td>
      </tr>
</TBODY>
    </table>
    </div>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;115:&nbsp; </p>


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

<html><script language="JavaScript">

⌨️ 快捷键说明

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