资源描述:
《《编译原理概况》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理作者:杜亚军duyajun@mail.xhu.edu.com版权所有,任何教师使用本课件必须与作者联系2007年9月4日星期二5时12分32秒共63页,Page参考文献1.陈火旺,钱家桦,孙永强.程序设计语言原理.国防工业出版社,19832.杜淑敏,王永宁.编译程序设计原理.北京大学出版社,19863.俞瑞钊.数理逻辑.浙江大学出版社.19902007年9月4日星期二5时12分32秒共63页,Page第一章概论主要内容1.什么叫编译程序2.编译过程3.编译程序的组成4.与编译原理有关的软件工具2007年9月4日星期二5时12分32秒共63页,Page
2、1.1什么是编译程序首先看一个示例:Main(){intI,j;j=20;I=j++;printf(“i=%d,j=%d”,I,j);}在tubroc下存为ww.c文件,它是不能执行的,必须要complier后生成ww.exe文件才能执行2007年9月4日星期二5时12分32秒共63页,PageDelphi7.0的编译器VC,VB,JAVA等都有自己的编译器2007年9月4日星期二5时12分32秒共63页,Page什么叫编译程序(compiler)?编译程序就是在一个开发工具中,将高级语言写成的代码翻译成机器指令的一个程序2007年9月4日星期二5时12分3
3、2秒共63页,Page(1).从功能上看,一个编译程序就是一个语言翻译程序。它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序编译程序的特点编译程序源程序代码可执行文件图1.1编译程序的功能2007年9月4日星期二5时12分32秒共63页,Page源语言:FORTRAN,PASCAI,C,BASIC,FORTRAN,C++等那样的高级语言.目标语言:汇编语言或机器语言那样的低级语言,2007年9月4日星期二5时12分32秒共63页,Page(2).一个编译程序的重要性体现在它使得多数计算机用户不必考虑与机器有关的繁琐细节,使程序
4、员和程序设计专家独立于机器。编译程序的特点2007年9月4日星期二5时12分32秒共63页,Page预处理编译处理汇编程序连接生成可执行文件fortranfor1pas2linkexeccompilemakebuildexe一个程序设计语言程序的典型的处理过程2007年9月4日星期二5时12分32秒共63页,Page(3).一个源程序有时可能分成几个模块存放在不同的文件里,将这些源程序汇集在一起的任务,由一个叫预处理程序的程序来完成有些预处理程序也负责宏展开,像C语言的预处理程序要完成文件合并、宏展开等任务.编译程序的特点2007年9月4日星期二5时12分3
5、2秒共63页,Page(4)代码形式,需要经由汇编程序翻译成可在装配的机器代码,一个编译程序的输入可能一个或多个预处理程序来产生,另外,为得到能运行的机器代码,编译程序的输出可能仍需要进一步地处理。编译程序的特点2007年9月4日星期二5时12分32秒共63页,Page(1)第一个编译程序出现在20世纪5O年代早期,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很多限制.然而它们奠定了对高级语言编译系统的研究和开发的基础、编译程序的发展2007年9月4日星期二
6、5时12分32秒共63页,Page(2)20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功.编译程序的发展(3)20世纪50年代末有人开始研究编译程序自动生成工具,提出并研制编译程序的编译程序、它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等.2007年9月4日星期二5时12分32秒共63页,Page(4)20世纪60年代起.不断有人使用自展技术来构造编译程序.自展的主要特征是用被编译的语言来书写该
7、语言自身的编译程序,编译程序的发展(5)1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大。(6)随着并行技术和并行语言的发展.处理并行语言的并行编译技术正在深入研究之中.将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。2007年9月4日星期二5时12分32秒共63页,Page编译程序完成从源程序到目标程序的翻译是一个复杂的整体的过程.目标程序=Translation(源程序)从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的。每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一
8、起的1.2编译过程2007年9月4日星期二5时12分