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

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

<font class="title2"><b>1.5 构造编译器的工具 </b></font>     
<table><tr><td>&nbsp&nbsp&nbsp&nbsp</td>     
<td class="content">     
<p>     
象任何程序员一样,编译器的编制者可以利用象调试程序,版本管理程序和分布图程序等软件工具。除了那些软件开发工具外,更加专用的,帮助实现编译的各个阶段的工具已经开发出来,我们在此概述这些工具。      
</p>     
<p>     
在第一批编译器问世不久,帮助编写编译器的系统就出现了,这些系统一般称为<font class="emphasize">编译器的编译器、编译器的生成器或翻译器的编写系统</font>。它们大都面向某一类语言,适合于产生那一类语言的编译器。   
</p>      
<p> 已经出现一些通用的工具,用于编译器的某个部分的自动设计,这些工具用专门的语言来描述和实现这个部分,很多工具使用相当复杂的算法。最成功的是那些工具,他们掩蔽了生成算法的细节,所生成的部分可以很容易地并入编译器的其它部分。下面是一些有用的编译器构造工具:</p>  
<p>1.<font class="emphasize">分析器的生成器</font> 它们生成语法分析器,通常是基于上下文无关文法。早期的编译器中,语法分析不仅耗费了编译器运行时间的大部分,而且也占据了编写编译器的智力上努力的大部分。这个阶段现在已经被认为是最容易实现的阶段之一。</p>   
<p>2.<font class="emphasize">扫描仪的生成器</font> 它们自动生成词法分析器,通常是基于正规式说明,生成的词法分析器的基本组织形式实际上是有限自动机,这些问题在第三章讨论。</p>
<p>3.<font class="emphasize">语法制导的翻译工具</font> 它们产生一些子程序,这些子程序遍历分析树,产生中间代码。基本的想法是,分析树上的每个站点和一个或多个“翻译”相结合,每个翻译根据树中和它相邻节点的翻译来定义。</p>     
<p>4.<font class="emphasize">自动的代码生成器</font> 这些工具需要一个规则集合,这些规则定义中间语言的每个操作到目标语言的翻译。这些规则必须足够详细,以便管理对数据的不同访问方式。例如变量可以在寄存器中,在固定(静态)的存储单元,或分配在栈中某一位置。基本技术是“模式匹配”,中间代码的语句由代表一串机器指令的“模式”来代替,模式匹配时,根据变量可能有的存储方式,逐个地进行选择。由于变量的存放位置有很多可能,因此,用一给定的模式集合,可以产生多个目标代码版本。 
</p>     
<p>5.<font class="emphasize">数据流工具</font> 完成精致的代码优化所需的信息大都包含在“数据流分析”中,它收集值是怎样从程序的一点传到其它部分。这种性质的不同任务本质上可以由同一子程序完成,只要提供给它中间代码的语句和被收集信息的联系。</p> 
</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='1.4.1b.htm'"></img></td>     
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='../c_2/2.0.htm'"></img></td>     
</tr>     
</table>     
     
</BODY>     
</html>

⌨️ 快捷键说明

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