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

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

<p><br>
<br>
<font class="title2">7.3.3 访问数组元素的翻译模式</font> </p>

<table>
  <tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td class="content">给定文法如下: <br>
    &nbsp;&nbsp;&nbsp;(1)S→L:=E <br>
    &nbsp;&nbsp;&nbsp;(2)E→E+E <br>
    &nbsp;&nbsp;&nbsp;(3)E→(E) <br>
    &nbsp;&nbsp;&nbsp;(4)E→L <br>
    &nbsp;&nbsp;&nbsp;(5) L→Elist] <br>
    &nbsp;&nbsp;&nbsp;(6)L→-<b>id</b> <br>
    &nbsp;&nbsp;&nbsp;(7)Elist→Elist,E <br>
    &nbsp;&nbsp;&nbsp;(8)ELzst→<b>id</b>[ E <br>
    我们将给出它的语义动作。 <br>
    &nbsp;&nbsp;&nbsp;&nbsp;若L是一个简单的名字,将生成一般的赋值;否则,若L为数组元素引用,则生成对L所指示地址的索引赋值: 
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;1.S→L:=E <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<b>if</b> L. offset=<b>null then</b>/*L 
    is a simple <b>id</b> */ <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emit(L.place':=' E.place); <b>else</b> 
    <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emit(L.place'['L.offset']' ':= ' 
    E. Place)} <br>
    &nbsp;&nbsp;&nbsp; 对于算术表达式的代码完全与图7.8相同: <br>
    &nbsp;&nbsp;&nbsp; 2.E→E<span class="down"><sub>1</sub></span>+E<span class="down"><sub>2</sub></span> 
    <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{E.place:=newtemp; <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emit(E.place':=' E<span
    class="down"><sub>1</sub></span>.place'+' E<span class="down"><sub>2</sub></span>.place)} 
    <br>
    &nbsp;&nbsp;&nbsp; 3.E→(E<span class="down"><sub>1</sub></span>) <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ E.place :=E<span class="down"><sub>1</sub></span>.place} 
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;当一个数组引用L归约到E时,我们需要L的右-值。因此我们使用索引来获得地址L.place[L.offset] 
    的内容: <br>
    </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.2c.htm'" ></td>
    <td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'"
    onclick="vbscript:window.location.href='7.3.3b.htm'" ></td>
  </tr>
</table>
</body>
</html>

⌨️ 快捷键说明

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