如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
编译原理CompilerPrinciples第一章概述第一章概述第一章概述第一章概述§1.1程序设计语言一、语言的概念和分类2.语言的分类(1)自然语言人与人之间交流信息的一种语言.动物之间通过动物语言交流信息.(2)数理语言以数理逻辑、集合论和统计数学来描述的一种语言。例如,用计算机进行几何定理的证明就得以数理语言形式进行描述。(3)程序设计语言人和计算机进行信息交流的一种语言,它遵循一定的语法和语义的规则,而编译程序的功能正是:1)讨论语法,检查程序正确性2)讨论语义,生成目标代码第一章概述第一章概述二、程序设计语言简述第一章概述第一章概述§1.2翻译程序只有机器语言编的程序才能被计算机识别并运行,为了能使汇编语言和高级程序设计语言编写的程序被计算机接受,必须将它们转换成具体的机器语言程序。我们将要介绍的汇编程序、解释程序和编译程序就是完成这种转换功能的翻译程序。翻译程序将一种语言程序(称为源程序)改造成另一种等价的语言程序(称为目标程序)的程序。源语言书写源程序的语言称为源语言.目标语言书写目标程序的语言称为目标语言.第一章概述第一章概述汇编程序:把汇编语言写的源程序翻译成机器语言的目标程序,这个翻译过程称为汇编。如下图:初始数据汇编源程序汇编程序目标程序结果数据汇编程序执行过程汇编程序一般对源程序进行两遍扫描来完成。第一遍:进行存贮分配,造出第二遍扫描时用的各种表格;第二遍:用机器语言操作码来代替汇编符号操作码。第一章概述第一章概述解释程序:将高级语言写的源程序作为输入数据,但并不产生目标程序,而是边解释边执行源程序本身的一种程序。如下图源程序解结释果程数初始数据序据解释程序执行过程第一章概述第一章概述编译程序是将高级语言写的源程序翻译成目标语言(汇编语言、机器语言)的程序。这种翻译过程称为编译。编译系统目标程序,再加上运行系统(如服务子程序、动态分配程序、装配程序等)就可获得计算结果,整个系统称为编译系统。编译程序执行过程上述三种翻译程序,汇编程序最容易实现,其次是解释程序,编译程序最难。所以只要掌握了编译程序实现方法,汇编程序和解释程序就迎刃而解了。下面我们就具体介绍一下编译程序……第一章概述第一章概述§1.3编译程序简史编译程序的发展和计算机的发展紧密联系在一起,从1946年第一台电子计算机ENIAC出现,计算机经历了第一代电子管、第二代晶体管、第三代集成电路、第四代大规模集成电路计算机的发展,而编译程序技术和其他系统软件如:操作系统、数据库以及网络等也不断完善和发展一、汇编语言阶段(50年代初)二、高级程序语言出现(1956年)-编译程序开始三、编译程序理论开始确定(1960年)四、编译程序技术方法进一步发展(70年代起)§1.3编译程序简史一、汇编语言阶段(50年代初)最初的手编程序即用机器指令编程序十分麻烦,为克服以上缺点,在50年代初提出用汇编符号代替机器指令的思想。§1.3编译程序简史一、汇编语言阶段(50年代初)1.汇编符号出现必须有对应的汇编程序,可以说汇编程序是编译的初级阶段,汇编符号仍然因难记、符号多等缺点被宏指令代替。§1.3编译程序简史一、汇编语言阶段(50年代初)2.宏指令出现把一些完成特定功能的指令定义为宏指令,宏指令可以看成机器指令一样,在写程序时直接使用它。§1.3编译程序简史一、汇编语言阶段(50年代初)3.子程序出现为了避免大量重复工作,后来采用了子程序库方法。即把一些经常使用完成某些特定功能的公用程序独立出来编成一段程序(称为子程序)将所有子程序集中在一起称为子程序库。在汇编语言阶段尽管采取了以上一些措施,但编程工作仍是一件十分繁琐乏味且容易出错的事情,这又促使了高级程序设计语言的出现。第一章概述第一章概述§1.3编译程序简史二、高级程序语言出现(1956年)——编译程序开始从1954年美国开始研制高级程序设计语言,直到1956年首先在IBM704机上实现了FORTRAN编译程序。这个早期的编译程序共花了18个人年,由此可见,编译程序是一个大型软件。第一章概述第一章概述§1.3编译程序简史三、编译程序理论开始确定(1960年)FORTRAN编译程序产生时,编译技术方法还缺乏理论基础,1960年ALGOL60提出,并用巴科斯范式BNF对语言语法进行严格定义,因而提出了高级程序设计语言编译程序技术方法,包括:简单优先法、算符优先法、LL分析和LR分析法。第一章概述第一章概述第一章概述第一章概述第一章概述第一章概述前面我们介绍了编译程序的一些基本概念,因为编译过程是一个极其复杂的过程,下面通过一个简单例子叙述一下该过程。类似