|
四川理工学院计算机科学与技术专业编译原理课本,分享出来给同学们用用% ~/ I1 l' i) a E3 Q) S
014009874TP312-4355编译原理主编陈光建副主编贾金玲黎远松罗玉梅万新空航藏书★图书馆手出版社7P3123北航c1695778T8:00:10内容简介编译原理”是计算机学科的一门重要专业基础课。本书旨在介绍编译程序设计的基本原理、实现技术充分考虑了教师便于教学,学生便于自学的问题。本书包含了编译程序设计的基础理论和具体实现技术,主要内容包括形式语言和自动机理论、词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成等。在介绍基本原理和实现技术中,注重循序渐进、深入浅出。同时,本书注重实际应用,介绍了Lex和YACC的使用方法及原理,旨在培养学生分析和解决问题的能力。本书可作为高等院校计算机相关专业的本科生教材,也可供其他专业的学生或从事计算机工作的工程技术人员阅读参考。图书在版编目(CIP)数据编译原理/陈光建主编.一重庆:重庆大学出版社,2013.10计算机科学与技术专业本科系列教材ISBN978-7-5624-7774-7I.①编…Ⅱ.①陈…Ⅲ.①编译程序一程序设计一高等学校一教材Ⅳ.①TP314中国版本图书馆CIP数据核字(2013)第240441号编译原理主编陈光建副主编贾金玲黎远松罗玉梅万新策划编辑:曾显跃责任编辑:文鹏姜凤版式设计:曾显跃责任校对:任卓惠责任印制:赵晟重庆大学出版社出版发行出版人:邓晓益社址:重庆市沙抑坝区大学城西路21号部编:40133电话0238861719088617185(中小学)传真023)8861718688617166网址:htp://www.coup.com.cn邮箱:fxk@cqup.com,cn(营销中心)全国新华书店经销自贡兴华印务有限公司印刷开本:787×10921/16印张:14.25字数:356千2013年10月第1版2013年10月第1次印刷ED数:1-3000ISBN978-7-5624.7714-7定价:29.00元本书如有印刷、装订等质量问题,本社负责调换版权所有,请勿擅自翻印和用本书制作各类出版物及配套用书,违者必究前言“编译原理”是计算机及其相关专业的重要专业基础课,是一门理论与实践并重的课程,主要研究构造编译程序的原理和方法,蕴涵着计算机学科中解决问题的思路、形式化问题和解决问题的方法。通过学习编译原理,读者不仅可以掌握编译程序本身的实现技术,而且能够提高对程序设计语言的理解和开发大型软件的能力。编译原理是一门难度较大的专业课程,致使不少学生甚至上课教师都感到头痛。本书采用以实例来讲解理论,充分考虑了便于学生自学和教师教学的问题,循序渐进地介绍了编译程序设计的基本原理、主要实现技术和一些自动构造工具,使学生能够掌握编译程序的整体结构。本书主要面向一般本科院校,参考理论学时为48学时。本书以高级程序设计语言的编译过程的5个主要阶段—词法分析、语法分析、语义分析及中间代码生成、代码优化和目标代码生成为线索,重点放在构造编译程序及各个组成部分的软件技术和实用方法上。本书共分10章。第1章介绍了编译程序的基础知识;第2章介绍了高级程序语言及其语法描述,重点讨论文法和语言、推导与归约、语法树以及文法的等价变换等;第3章介绍了词法分析的基本思想,以状态转换图、正规表达式以及有限自动机为工具,重点讨论了词法分析器的设计与实现;第4章介绍了自顶向下的语法分析的基本思想,重点讨论了递归下降语法分析法和预测分析法的实现技术;第5章介绍了自底向上的语法分析的基本思想,并重点讨论了算符优先分析法和LR分析法的基本原理及实现方法;第6章介绍了符号表的相关知识,重点讨论了符号表的总体组织及其构建与查找;第7章介绍了运行时存储空间的组织与管理技术,重点讨论了目标程序运行时的存储分配策略;第8章介绍了语法制导翻译和中间代码生成技术,重点讨论了些常见语句的语法制导翻译;第9章介绍了中间代码优化的基本方法,重点讨论了局部优化和循环优化;第10章介绍了目标代码的生成技术。本书每章都附有各种类型的习题,便于读者理解和掌握基本理论、相关算法以及实现技术。本书的编写人员有:贾金玲编写第1、2章;陈光建编写第3、4、5章;罗玉梅编写第6章;万新编写第7章;黎远松编写第8、9、10章。本书是根据作者多年的教学经验和科研经历编写而成的,由陈光建确定内容的选取、组织以及最后的定稿。本书获得四川理工学院教材建设基金资助。在成书过程中,还引用了一些专家学者的研究成果,在此一并表示感谢。鉴于作者水平有限,书中难免有错误和不妥之处,殷切希望广大读者批评指正。编者2013年5月2目录第1章编译引论1.1编译程序1.2编译程序的结构1.3编译过程1.4与编译程序有关的概念和技术51.5编译程序的开发鲁习题1重要看第2章高级程序语言及其语法描述bb垂。自鲁·哥非2.1高级程序语言的定义2.2文法和语言2.3推导和归约卷B。自鲁自电曲曲162.4语法树与文法的二义性182.5文法的实用限制212.6文法的等价变换22习题第3章词法分析eqD●●273.1词法分析程序的功能……273.2单词的种类及词法分析的输出…283.3词法分析的手工设计293.4正规式与正规集甲要甲中申申垂是·3.5有限自动机363.6正规文法与有限自动机的等价性………463.7正规式与有限自动机的等价性3.8词法分析程序的自动生成52习题3自D看看要导导平甲……57第4章语法分析—自顶向下分析594.1自顶向下分析面临的问题…………594.2LL(1)文法4.3递归下降分析法674.4预测分析法…·甲甲71习题477第5章语法分析—一自底向上分析。自音曹看看带带看785.1自底向上的语法分析概述785.2算符优先分析法805.3LR分析法895.4语法分析器的自动生成工具YACC117习题5…124第6章符号表1266.1符号表的作用1266.2符号表的内容…………1276.3符号表的总体组织…………1306.4符号表的构建与查找132习题6…135第7章运行时存储空间的组织与管理1367.1目标程序运行时的活动……………………1367.2目标程序运行时存储器的组织…………1397.3静态存储分配1437.4栈式动态存储分配策略7.5堆式动态存储分配策略145习题7146第8章语法制导翻译和中间代码生成………………1478.1语法制导翻译概述…………1478.2属性文法与属性翻译文法…1498.3中间语1568.4常见语句的语法制导翻译………………162习题8183第9章代码优化……………………………1859.1代码优化概述1859.2局部优化………1889.3循环优化…………………………………195习题9206第10章目标代码的生成自音香自410.1目标代码的形式鲁垂音20910.2虚拟计算机模型……………………21110.3个简单代码生成器……………………213习题10218参考文献219第章编译引论1.1编译程序众所周知,计算机系统的工作是由事先设计好的程序来控制的。计算机程序可以用机器语言、汇编语言以及高级语言来编写。由于机器语言和汇编语言都存在编写过程费时费力,阅读和理解很难、不易调试和修改等缺点,而高级程序设计语言则比较接近于自然语言的方式来描述程序的操作,用它编写程序比较容易,可读性好,可以在不同的机器上运行,便于移植,因此,绝大多数编程人员都是使用高级语言程序来实现他们所需要的功能计算机硬件只能识别机器语言,用高级语言编写的程序都需要通过一个翻译程序把它转换成机器语言代码或汇编语言程序才能运行。通常所说的翻译程序是指这样一个程序,它能够把某一高级语言程序(称为源语言程序)等价地转换成另外一种语言程序(称为目标语言程序)。如果源语言是诸如 FORTRAN、C等高级语言,而目标语言是诸如汇编语言、机器语言之类的低级语言,那这样的翻译程序就称为编译程序,也称为编译器。运行编译程序的计算机称为宿主机,运行编译程序所产生的目标代码的计算机称为目标机。在计算机上运行一个高级语言程序一般是“先编译后执行”,即分为两步:第一步,用一个编译程序把高级语言源程序翻译成机器语言程序;第二步,运行机器语言程序得到结果。图1.1显示的就是先编译后执行方式。源程序一编译程序一日标程序一运行结果程序的输人数据图1.1先编译后执行方式运行高级语言程序的另外一种方式是解释执行,它需要的翻译程序不是编译程序,而是解释程序。所谓解释程序,也称为解释器,它不产生源程序目标代码,以某高级语言的源程序作为输入,对源程序进行逐条语句分析,根据语句的含义执行,最终得到运行结果。图1.2显示的就是解释执行方式,比如 BASIC语言就是采用解释方式运行的。编译原理源程序解释程序运行结果程序的输人数据图1.2解释执行方式1.2编译程序的结构编译程序是计算机系统软件重要的组成部分之一,处理过程非常复杂,其设计和实现都十分困难,但不同的编译程序实现的基本逻辑功能都非常相似。编译程序的体系结构一般包括五个基本功能模块和两个辅助模块,具体如图1.3所示,它已经成为编译程序设计的经典参考模型。源程序词法分析器语法分析器表格管理程序语义分析及中间代码生成器错误处理程序代码优化器目标代码生成器目标程序图1.3编译程序的功能结构图编译程序的各模块的主要功能如下1)词法分析器词法分析器又称为扫描器,其任务是扫描源程序,根据语言的词法规则,识别出一个个具有独立意义的单词,如C语言的保留字(int、foat、 double、char等),并把每个单词的ASCI码序列替换成单词的“ TOKEN"形式。 TOKEN是单词的内部表示,它的结构没有统一规定,一般包括单词的类别和单词的属性。2)语法分析器语法分析器简称分析器,它是在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,同时检查程序中的语法错误。3)语义分析及中间代码生成器按照语言的语义规则,对语法分析器所识别出的各类语法单位进行静态语义检查(如类型是否匹配,变量是否定义等),并产生源程序的中间代码。常见的中间代码形式有三元式、四元式以及树形结构表示等。4)代码优化器代码优化器对前阶段产生的中间代码进行等价加工变换,使最终生成的目标代码更加高
H m6 A u( g7 C0 N# w7 g8 F0 P3 H6 Q* Q4 V
! r& f0 q8 x1 j' `# ~0 A/ T
2 T7 a6 K/ A; Q% d) P! F) [
/ r# E2 m, e1 x5 M! D) \4 d8 j s# n2 n, D. M4 Y. Y
/ t; N* d: @2 R5 C6 m! Z资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见, Z: A) A' ~% W9 S% p. M( s9 ^( D
+ W) O* P/ J5 `. `. P9 t" H$ O
1 r3 a/ O! ]! y
- G k! q4 R2 q' t# B6 C; B/ C* j本资源由Java自学网收集整理【www.javazx.com】 |
|