编译原理
基本信息
推荐阅读
内容简介回到顶部↑
本书主要介绍设计和构造编译程序的基本原理和方法,内容包括适合于计算机高级程序设计语言翻译的形式语言和自动机理论、常用的词法分析方法、各种经典的语法分析方法、语法制导翻译方法、存储器的组织与管理方法、符号表的组织与造查表方法、代码优化和代码生成方法、并行编译程序及编译自动化技术等。本书特别注重理论与实践、原理与方法的互通,而且基本概念清晰,深入浅出,循序渐进,系统性强。各章之后还附有难度不一的习题供复习、思考和探索之用。
本书既可作为高等院校计算机专业的教材,也可供科技工作者及软件研发人员学习和参考。
本书既可作为高等院校计算机专业的教材,也可供科技工作者及软件研发人员学习和参考。
作译者回到顶部↑
本书提供作译者介绍
何炎祥,教授、博士生导师,武汉大学计算机学院院长。主要研究方向为:分布并行处理(含移动计算与Web服务)、可信软件、数据挖掘和软件工程等。主持和主要承担的科研项目包括863高技术计划项目、国家自然科学基金重大研究计划项目、国家自然科学基金面上项目、省市科技攻关项目等40余项,发表论文200多篇,出版著作和教材15部。主讲课程“编译原理”于2005年被评为国家精品课。获包括湖北省科技进步一等奖在内的省部级科技成果和教学成果奖多项,并获国家教学名师、宝钢优秀教师奖、湖北省青少年科技教育工.. << 查看详细
目录回到顶部↑
出版者的话
序 言
前 言
教学建议
第1章 引论1
1.1 程序设计语言的发展1
1.1.1 程序设计语言1
1.1.2 翻译程序1
1.2 为什么需要编译程序2
1.3 编译程序的工作过程4
1.3.1 分析部分5
1.3.2 综合部分6
1.4 编译程序的结构6
1.4.1 编译程序的典型结构6
1.4.2 编译程序的前端和后端6
1.4.3 编译程序的分遍7
1.4.4 源程序中的错误及出错处理8
1.5 编译程序的组织方式8
1.6 编译程序的其他技术9
1.6.1 编译程序的自展技术9
序 言
前 言
教学建议
第1章 引论1
1.1 程序设计语言的发展1
1.1.1 程序设计语言1
1.1.2 翻译程序1
1.2 为什么需要编译程序2
1.3 编译程序的工作过程4
1.3.1 分析部分5
1.3.2 综合部分6
1.4 编译程序的结构6
1.4.1 编译程序的典型结构6
1.4.2 编译程序的前端和后端6
1.4.3 编译程序的分遍7
1.4.4 源程序中的错误及出错处理8
1.5 编译程序的组织方式8
1.6 编译程序的其他技术9
1.6.1 编译程序的自展技术9
前言回到顶部↑
编译程序(Compiler)是计算机的重要系统软件,是高级程序设计语言的支撑基础。本书主要介绍设计和构造编译程序的基本原理和方法。
本书共分12章。第1章讲述编译程序的功能、结构、工作过程、组织方式、编译程序与高级语言的关系以及编译自动化方面的基本知识。
第2章介绍形式语言理论,我们仅仅给出了便于理解、有助于研究各种分析方法和设计构造编译程序的形式语言理论,并着重介绍上下文无关文法。
有穷自动机是描述词法的有效工具,也是进行词法分析的主要理论基础。因此,第3章专门介绍有穷状态自动机,它与正规文法、正规表达式之间的对应关系以及它的确定化和最小化方面的知识。第4章讨论词法分析程序的设计方法。
上下文无关文法可用于描述现今大多数高级程序设计语言的语法,也是语法分析的主要理论支柱。为此,在接下来的几章里,主要讨论与上下文无关文法相关的各类语法分析方法。
第5章介绍自顶向下分析方法,包括LL(k)文法、LL(1)分析方法和应用十分广泛的递归下降分析方法。第6章讨论自底向上分析方法的一般原理和优先分析方法,包括简单优先分析技术和算符优先分析方法。第7章专门讨论自底向上的LR(k)分析方法,包括LR(0)、SLR(1)、规范LR(1)以及LALR(1)分析表的构造算法。
第8章介绍语法制导翻译方法(SDTS),主要讨论SDTS的基本原理、属性翻译文法及其在中间代码生成中的应用。
第9章讨论运行时的存储组织与管理,其中考虑了一些重要的语言特征,如过程调用、参数传递、数组和记录的存取方式以及多种存储分配技术。
第10章讨论符号表的组织和存取符号表的各种方法。第11章介绍常用的优化方法。第12章主要通过与具体机器无关的PL/0语言的目标代码生成过程,讨论了代码生成的原理。考虑到完整性,我们在附录中给出了PL/0编译程序源程序。
“编译原理”这门课程是计算机专业的主干课和必修课,也是计算机专业高年级课程中较难学习的一门课程,其先导课程是汇编语言程序设计、计算机组成原理、数据结构、高级语言程序设计和离散数学等。
本课程的参考学时数72,教师可根据具体情况对教材内容进行取舍,例如,工科院校的学生可略过第7、8章并可精减第2、3章的内容,从而使授课学时数减至54。教师在讲授本课程的同时应加强并引导学生做好该课程实践方面的规划和检验。
本书特别注重设计和构造编译程序的理论与实践、原理与方法的互通,而且基本概念清晰,深入浅出,循序渐进,系统性强。每章之后还附有难度不一的习题供学生复习、思考和探索。本书既可作为高等院校计算机专业的教材,也可供有关师生和科技工作者及软件开发人员学习和参考。
本书的第9、10、12章和附录由伍春香编写,第11章由王汉飞编写,其余各章由何炎祥编写。何炎祥和王汉飞最后统稿。本书是在我们已经出版的几本编译原理教材的基础上经过适当修订而成。在修订过程中得到了原合作者的全力支持。此外,书中引用了一些专家学者的论著和研究成果,以及一些公司的产品介绍,在此一并表示真诚的感谢。
限于水平,书中错误难免,敬请读者指正。
何炎祥
2008年8月修订于江西庐山,2009年8月审改于武汉珞珈山
本书共分12章。第1章讲述编译程序的功能、结构、工作过程、组织方式、编译程序与高级语言的关系以及编译自动化方面的基本知识。
第2章介绍形式语言理论,我们仅仅给出了便于理解、有助于研究各种分析方法和设计构造编译程序的形式语言理论,并着重介绍上下文无关文法。
有穷自动机是描述词法的有效工具,也是进行词法分析的主要理论基础。因此,第3章专门介绍有穷状态自动机,它与正规文法、正规表达式之间的对应关系以及它的确定化和最小化方面的知识。第4章讨论词法分析程序的设计方法。
上下文无关文法可用于描述现今大多数高级程序设计语言的语法,也是语法分析的主要理论支柱。为此,在接下来的几章里,主要讨论与上下文无关文法相关的各类语法分析方法。
第5章介绍自顶向下分析方法,包括LL(k)文法、LL(1)分析方法和应用十分广泛的递归下降分析方法。第6章讨论自底向上分析方法的一般原理和优先分析方法,包括简单优先分析技术和算符优先分析方法。第7章专门讨论自底向上的LR(k)分析方法,包括LR(0)、SLR(1)、规范LR(1)以及LALR(1)分析表的构造算法。
第8章介绍语法制导翻译方法(SDTS),主要讨论SDTS的基本原理、属性翻译文法及其在中间代码生成中的应用。
第9章讨论运行时的存储组织与管理,其中考虑了一些重要的语言特征,如过程调用、参数传递、数组和记录的存取方式以及多种存储分配技术。
第10章讨论符号表的组织和存取符号表的各种方法。第11章介绍常用的优化方法。第12章主要通过与具体机器无关的PL/0语言的目标代码生成过程,讨论了代码生成的原理。考虑到完整性,我们在附录中给出了PL/0编译程序源程序。
“编译原理”这门课程是计算机专业的主干课和必修课,也是计算机专业高年级课程中较难学习的一门课程,其先导课程是汇编语言程序设计、计算机组成原理、数据结构、高级语言程序设计和离散数学等。
本课程的参考学时数72,教师可根据具体情况对教材内容进行取舍,例如,工科院校的学生可略过第7、8章并可精减第2、3章的内容,从而使授课学时数减至54。教师在讲授本课程的同时应加强并引导学生做好该课程实践方面的规划和检验。
本书特别注重设计和构造编译程序的理论与实践、原理与方法的互通,而且基本概念清晰,深入浅出,循序渐进,系统性强。每章之后还附有难度不一的习题供学生复习、思考和探索。本书既可作为高等院校计算机专业的教材,也可供有关师生和科技工作者及软件开发人员学习和参考。
本书的第9、10、12章和附录由伍春香编写,第11章由王汉飞编写,其余各章由何炎祥编写。何炎祥和王汉飞最后统稿。本书是在我们已经出版的几本编译原理教材的基础上经过适当修订而成。在修订过程中得到了原合作者的全力支持。此外,书中引用了一些专家学者的论著和研究成果,以及一些公司的产品介绍,在此一并表示真诚的感谢。
限于水平,书中错误难免,敬请读者指正。
何炎祥
2008年8月修订于江西庐山,2009年8月审改于武汉珞珈山
序言回到顶部↑
近20年里,计算机学科有了很大的发展,人们普遍认为,“计算机科学”这个名字已经难以涵盖该学科的内容,因此,改称其为计算学科(Computing Discipline)。在我国本科教育中,1996年以前曾经有计算机软件专业和计算机及应用专业,之后被合并为计算机科学与技术专业。2004年以来,教育部计算机科学与技术专业教学指导分委员会根据我国计算机专业教育和计算学科的现状,为更好地满足社会对计算机专业人才的需求,发布了《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》(以下简称《规范》),提出在计算机科学与技术专业名称之下,构建计算机科学、计算机工程、软件工程和信息技术四大专业方向。《规范》中四大专业方向的分类,在于鼓励办学单位根据自己的情况设定不同的培养方案,以培养更具针对性和特色的计算机专业人才。
为配合《规范》的实施,落实中央“提高高等教育质量”的精神,我们规划了“面向计算机科学与技术专业规范系列教材”。本系列教材面向全新的计算学科,针对我国高等院校逐步向新的计算机科学与技术专业课程体系过渡的趋势编写,在知识选择、内容组织和教学方法等方面满足《规范》的要求,并与国际接轨。本套教材具有以下几个特点:
(1) 体现《规范》的基本思想,满足其课程要求。为使教材符合我国高等院校的教学实际,编委会根据《规范》的要求规划本套教材,广泛征集在国内知名高校中从事一线教学和科研工作、经验丰富的优秀教师承担编写任务。
(2) 围绕“提高教育质量”的宗旨开发教材。为了确保“精品”,本系列教材的出版不走盲目扩大的路子,每本教材的选题都将由编委会集体论证,并由一名编委担任责任编委,最大程度地保证这套教材的编写水准和出版质量。
(3) 教材内容的组织科学、合理,体系得当。本套教材的编写注重研究学科的新发展和新成果,能够根据不同类型人才培养需求,合理地进行内容取舍、组织和叙述,还精心设计了配套的实验体系和练习体系。
(4) 教材风格鲜明。本套教材按4个专业方向统一规划,分批组织,陆续出版。教材的编写体现了现代教育理念,探讨先进的教学方法。
(5) 开展教材立体化建设。根据需要配合主教材的建设适时开发实验教材、教师参考书、学生参考书、电子参考资料等教辅资源,为教学实现多方位服务。
我们衷心希望本系列教材能够为我国高等院校计算机科学与技术等专业的教学作出贡献,欢迎广大读者广为选用。
“面向计算机科学与技术专业规范系列教材”编委会
为配合《规范》的实施,落实中央“提高高等教育质量”的精神,我们规划了“面向计算机科学与技术专业规范系列教材”。本系列教材面向全新的计算学科,针对我国高等院校逐步向新的计算机科学与技术专业课程体系过渡的趋势编写,在知识选择、内容组织和教学方法等方面满足《规范》的要求,并与国际接轨。本套教材具有以下几个特点:
(1) 体现《规范》的基本思想,满足其课程要求。为使教材符合我国高等院校的教学实际,编委会根据《规范》的要求规划本套教材,广泛征集在国内知名高校中从事一线教学和科研工作、经验丰富的优秀教师承担编写任务。
(2) 围绕“提高教育质量”的宗旨开发教材。为了确保“精品”,本系列教材的出版不走盲目扩大的路子,每本教材的选题都将由编委会集体论证,并由一名编委担任责任编委,最大程度地保证这套教材的编写水准和出版质量。
(3) 教材内容的组织科学、合理,体系得当。本套教材的编写注重研究学科的新发展和新成果,能够根据不同类型人才培养需求,合理地进行内容取舍、组织和叙述,还精心设计了配套的实验体系和练习体系。
(4) 教材风格鲜明。本套教材按4个专业方向统一规划,分批组织,陆续出版。教材的编写体现了现代教育理念,探讨先进的教学方法。
(5) 开展教材立体化建设。根据需要配合主教材的建设适时开发实验教材、教师参考书、学生参考书、电子参考资料等教辅资源,为教学实现多方位服务。
我们衷心希望本系列教材能够为我国高等院校计算机科学与技术等专业的教学作出贡献,欢迎广大读者广为选用。
“面向计算机科学与技术专业规范系列教材”编委会

点击看大图

加载中...
