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

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

<br><br>
<center><font class="title1">第五章 语法制导翻译</font></center><br>
<br>
<font class="title2"><b>前言</b></font>
<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
这一章我们将讨论上下文无关文法所产生的语言的翻译。我们通过把属性赋给代表语言结构的文法符号来把语义信息和程序设计语言的结构联系起来。属性的值是用与文法对应的语义规则来计算的.
</p>
</td>
</tr>
</table>

<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
把语义规则和产生式联系起来要涉及到两个概念,即语法制导定义(syntax-directed definitions)和翻译模式(translation schemes)。语法制导定义是对翻译的高级说明,它们可以把许多实现的细节隐含其中,使用户从明确说明翻译顺序的工作中解脱出来。翻译模式给出了使用语义规则进行计算的顺序,这样,它们可以把某些实现的细节表示出来。在第七章中,我们将用语法制导定义和翻译模式这两个概念来讨论中间代码的生成. 
</td></tr></table>



<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
输入符号串<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
→分析树<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
→依赖图<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
→语义规则的计算顺序<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<font face="楷体_GB2312">图5.l语法制导翻译的概观</font>
</td></tr></table>





<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
一般来说,我们可以使用语法制导定义和翻译模式对输入符号串进行语法分析,建立分析树,然后周游分析树,并根据需要在树的结点处使用语义规则进行计算(见图5.1)这样的计算可能生成代码、在符号表中存放信息、给出错误信息或执行其它动作。使用语义规则进行计算所得到的结果就是对输入符号串的翻译.
</td></tr></table>



<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
然而,一个具体的实现并不一定非要按照图5.1的轮廓不可。某些语法制导定义可以在单遍扫描中完成翻译。实际上,它就在语法分析过程中同时完成计算语义规则的工作而不产生明显的分析树或画出表示属性之间关系的依赖图。由于单遍实现对于编译时刻的效率是非常重要的,所以这一章中的许多部分都是研究这些特殊情况的。一个重要的子类叫作“L-属性”定义,事实上它包含了所有不用明显构造分析树就可以实现的翻译。
</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='5.0b.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='5.1.0.htm'"></img></td>
</tr>
</table>

</BODY>

<html><script language="JavaScript">

⌨️ 快捷键说明

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