编译原理及实践教程

出版时间:2012-3  出版社:清华大学出版社  作者:黄贤英,曹琼,王柯柯 著  

前言

  “编译原理”是计算机及其相关专业的重要专业基础课,主要研究设计和构造编译程序的原理和方法。编译原理蕴涵着计算机学科中解决问题的思路、形式化问题和解决问题的方法,对应用软件和系统软件的设计与开发有一定的启发和指导作用,编译程序构造的原理和技术在软件工程和语言转换等许多领域中有着广泛的应用。  本书主要面向普通本科院校,理论学时为40~48学时,压缩了编译课程中的理论部分,删除了实用意义不大的编译方法。以程序编译的5个主要阶段——词法分析、语法分析、中间代码生成、代码优化和目标代码生成为线索,重点放在设计与构造编译程序及各个组成部分的软件技术和实用方法上。通过本课程的教学,使学生建立一个较为完整的编译系统的模型,掌握各个阶段的基本算法以及常用的编译技术和方法,为今后从事系统软件和应用软件的开发打下一定的理论和实践基础。  本书的主要特色如下。  (1)力求将基本概念、基本原理和实现方法的思路阐述清楚,条理清晰,通俗易懂。  (2)为便于自学,书中引入典型例题,以实例形式讲解理论,加强学生对理论的理解,并配以大量习题,以巩固所学的知识,并提供了参考答案。  (3)为切实做到理论联系实际,便于读者更深刻地理解编译程序的实现过程,以Sample语言为贯穿本书各个章节的语言实例,重点介绍Sample语言的编译程序在各个阶段的具体实现技术和构造方法,并给出了部分程序框架。  (4)本书注重实际应用,配套软件实现了Sample语言的词法分析、语法分析、语法制导的翻译,以及本书涉及的各种核心算法的实现,形象生动地展示了编译程序的分析过程,教师可将该软件用作课堂教学演示,也可用作“编译原理”课程作业的参考实例和实训内容;学生也可以通过该软件进行自学,在课后反复观看揣摩,并参考该软件中的编译程序实现方法,自己动手实现编译器中的部分内容。加*的章节为可选内容,请教师根据具体情况选择。  本书在第1版的基础上,对很多章节进行了删改,第2章增加了高级语言的设计部分,以便读者在了解编译方法的基础上,从高级语言的使用者过渡到高级语言的实现者和设计者。本书的编写得到了重庆理工大学教材出版基金的资助,本书第1版的使用院校的教师和学生也为本书的修订提出了宝贵意见和建议,在此一并表示衷心的感谢。  编者  2011年8月

内容概要

  《21世纪高等学校规划教材·计算机科学与技术:编译原理及实践教程(第2版)》系统地介绍了编译程序的设计与构造以及各组成部分的软件技术和实用方法。全书共8章,主要包括编译程序概述、高级语言设计基础、词法分析、语法分析、语义分析和中间代码生成、运行时存储空间的组织、代码优化以及目标代码生成。《21世纪高等学校规划教材·计算机科学与技术:编译原理及实践教程(第2版)》的目标是使学习者建立一个较为完整的编译系统的模型,掌握各个阶段的基本算法、常用的编译技术和方法,为今后从事系统软件和应用软件的开发打下理论和实践基础。为此,《21世纪高等学校规划教材·计算机科学与技术:编译原理及实践教程(第2版)》力求讲清基本概念、基本原理和实现方法;书中引入了丰富的典型例题,配以大量的习题;《21世纪高等学校规划教材·计算机科学与技术:编译原理及实践教程(第2版)》以Sample语言为例来贯穿各章内容,介绍了其编译程序的具体实现技术和构造方法。  《21世纪高等学校规划教材·计算机科学与技术:编译原理及实践教程(第2版)》可供高等学校计算机科学与技术及相关专业本科教学使用,也可供计算机系统软件和应用软件开发人员自学和参考。

书籍目录

第1章 概述1.1 程序设计语言与编译程序1.1.1 程序设计语言1.1.2 翻译程序1.1.3 编译程序和解释程序1.1.4 编译程序的伙伴1.2 编译过程和编译程序的结构1.2.1 编译过程概述1.2.2 编译程序的结构1.2.3 编译阶段的组合1.3 编译程序的设计1.3.1 编译程序的构造方式1.3.2 Sample语言编译程序的设计1.4 编译程序的发展及应用1.4.1 编译程序的发展1.4.2 为什么要学习编译原理及其构造技术1.4.3 编译技术的应用1.5 小结1.6 习题第2章 高级语言设计基础2.1 符号和符号串2.2 文法与语言2.2.1 文法的定义2.2.2 文法产生的语言2.2.3 文法的二义性2.2.4 文法的分类2.3 高级语言的设计2.3.1 程序语言的定义2.3.2 冯·诺依曼体系结构与高级语言2.3.3 数据类型2.3.4 语句和控制结构2.3.5 语言设计的步骤2.4 语言设计实例2.4.1 Sample语言字符集的定义2.4.2 Sample语言单词的定义2.4.3 Sample语言数据类型的定义2.4.4 Sample语言表达式的定义2.4.5 Sample语言语句的定义2.4.6 Sample语言程序体和程序的定义2.4.7 符合Sample语言定义的源程序举例2.5 小结2.6 习题第3章 词法分析3.1 词法分析的任务和功能3.1.1 词法分析的功能3.1.2 单词的类型和种别码3.2 词法分析器的设计3.2.1 词法分析程序的接口3.2.2 词法分析程序的总体设计3.2.3 词法分析程序的详细设计3.2.4 单词的识别和状态转换图3.2.5 符号表及其操作3.2.6 词法分析阶段的错误处理3.3 正规文法、正规式与有穷自动机3.3.1 正规文法3.3.2 正规式3.3.3 有穷自动机3.3.4 正规文法与有穷自动机的等价性3.3.5 正规式与有穷自动机的等价性3.4 词法分析程序的自动生成3.4.1 LEX的概述3.4.2 LEX源文件的书写3.4.3 LEX的工作原理3.4.4 LEX使用中的一些注意事项3.4.5 使用LEX自动生成Sample语言的词法分析程序3.5 小结3.6 习题第4章 语法分析4.1 语法分析概述4.2 自上而下的语法分析4.2.1 自上而下分析方法中的问题探究4.2.2 递归下降分析方法4.2.3 预测分析方法4.2.4 Sample语言自上而下语法分析程序的设计4.3 自下而上的语法分析4.3.1 自下而上分析方法概述4.3.2 算符优先分析法4.3.3 LR分析法4.4 语法分析器的自动生成工具YACC4.4.1 YACC概述4.4.2 YACC源文件的格式4.4.3 YACC的翻译规则4.4.4 YACC的辅助程序4.5 语法分析程序中的错误处理4.5.1 语法分析中的错误处理的一般原则4.5.2 自上而下语法分析的错误处理4.5.3 自下而上语法分析的错误处理4.6 小结4.7 习题第5章 语义分析和中间代码生成5.1 概述5.1.1 语义分析和中间代码生成的功能和任务5.1.2 静态语义检查5.1.3 语义处理5.2 属性文法和语法制导的翻译5.2.1 属性文法的定义5.2.2 综合属性的计算5.2.3 继承属性的计算5.2.4 语法制导的翻译方法5.3 常见语句的语法制导的翻译5.3.1 语义变量和语义函数5.3.2 常量说明语句的语义处理5.3.3 变量说明语句的语义处理5.3.4 算术表达式和简单赋值语句的翻译5.3.5 布尔表达式的翻译5.3.6 if语句的翻译5.3.7 do…while语句的翻译5.3.8 for语句的翻译5.4 Sample语言语法制导的翻译程序的设计5.5 小结5.6 习题第6章 运行时存储空间的组织6.1 程序执行时的活动6.1.1 源程序中的过程6.1.2 过程执行时的活动6.1.3 名字的作用域6.1.4 参数的传递6.1.5 名字的绑定6.2 程序执行时的存储器组织6.2.1 程序执行时存储器的划分6.2.2 活动记录6.2.3 存储分配策略6.3 静态存储分配6.3.1 静态存储分配的性质6.3.2 静态存储分配的实现6.3.3 临时变量的地址分配6.4 栈式存储分配策略6.5 堆式存储分配6.5.1 堆式存储分配的主要问题6.5.2 堆式动态存储分配的实现6.5.3 存储回收6.6 小结6.7 习题第7章 代码优化7.1 概述7.1.1 代码优化的地位7.1.2 基本块的概念及流图7.2 局部优化7.2.1 删除公共子表达式7.2.2 复写传播7.2.3 删除无用代码7.2.4 对程序进行代数恒等变换7.2.5 基本块的DAG表示及优化7.3 循环优化7.3.1 循环的定义7.3.2 代码外提7.3.3 强度削弱7.3.4 删除归纳变量7.4 小结7.5 习题第8章 目标代码生成8.1 概述8.2 目标机器8.3 简单的代码生成算法8.3.1 中间代码的简单翻译方法8.3.2 引用信息和活跃信息8.3.3 寄存器描述和地址描述8.3.4 基本块的代码生成算法8.4 从DAG生成目标代码8.5 Sample代码优化及目标代码生成器的设计8.6 小结8.7 习题参考文献

章节摘录

版权页:插图:单词符号由词法规则所确定,词法规则是指单词符号的形成规则,它规定了字母表中哪些字符串可以构成正确的单词符号。单词符号是语言中具有独立意义的最小单位。语言的语法规则规定了如何从单词符号形成更大的结构(即语法单位,如表达式和语句等),即语法规则是语法单位的形成规则。语言的词法规则和语法规则定义了程序的形式结构,是判断输入字符串是否构成一个形式上正确的程序的依据。2.语义对于一个语言来说,不仅要给出它的词法和语法规则,而且要定义它的单词符号和语法单位的意义,即语义。离开语义,语言只不过是一个字符串而已。对于编译器来说,只有了解了程序的语义,才能把它翻译成相应的目标代码。一个程序的语义是指一组规则,用它可以定义一个程序的意义。阐明语义要比阐明语法困难得多,现在还没有一种公认的形式系统,借助它可以自动地构造出实用的编译程序。最早是用自然语言来描述语言结构的含义,这种描述是非形式的、冗长的、易于引起二义的,但它能给出一个语言的直观梗概。语义的形式描述是计算机学科的一个重要研究领域,目前已有指称语义学、操作语义学、代数语义学和公理语义学等多种描述方法。本书在第5章将介绍目前大多数编译程序普遍采用的一种方法,即基于属性文法的语法制导的翻译方法,它是一个比较接近形式化的表示方法。

编辑推荐

《21世纪高等学校规划教材•计算机科学与技术:编译原理及实践教程(第2版)》面向应用型本科计算机专业学生,通过一个编译器的设计实现案例详细讲解了编译程序及其相关部分的分析设计和整个编译器的设计实现。教学目标明确,注重理论与实践的结合。教学方法灵活,培养学生自主学习的能力。教学内容先进,反映了计算机学科的最新发展。教学模式完善,提供配套的教学资源解决方案。

图书封面

评论、评分、阅读与下载


    编译原理及实践教程 PDF格式下载


用户评论 (总计7条)

 
 

  •   可以 是想要的那本。。
  •   书本是正品,质量很~(≧▽≦)/~
  •   上课要用的书,是想要的那一本,还好
  •   书还不错,不愧是重庆理工大学编写的!!!
  •   买来教科书,看上去应该是正版吧
  •   收到书本与其照片一木一样,纸质非常好
  •   书不错 是不是正版 不知道到 反正纸张不差
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7