编译原理与技术

出版时间:2004-9  出版社:浙江大学出版社  作者:冯雁 编  页数:320  

前言

  编译原理与技术是计算机专业设置的一门重要的专业课程,本书力图以一种理论与实践紧密结合的方式,将编译程序的内容阐述清楚。围绕着如何构造一个编译器,介绍了现代编译器设计方法的理论,还包括了众多实例的讲解。本书既可以作为计算机专业的本科生和研究生的程序编译课程的教材,又可以用作专业人员的参考书或者用作编译器编写项目的入门参考书。虽然只有少数人真正从事编译方面的工作,但是通过对该课程的学习,使学生在理论、技术、方法上都得到了系统而有效的训练,有利于提高软件人员的素质和能力。  掌握编译程序的构造原理与方法的最好办法是自己设计与编写一个编译程序,但要自己设计与编写一个编译程序,首先必须基本掌握编译程序构造的一般原理。因此,本书非常强调基本原理的阐述,针对具体的原理,我们都有实例的讲解以配合对原理的理解。我们在编写过程中也尽量把编译原理的所有内容都包括在其中,这样,可以根据不同的教学要求对相关内容进行取舍,针对不同的教学对象进行合理安排。  本书介绍的概念和技术不仅适用于编译器的设计,也适用于一般的软件设计。例如,建立词法分析器的串匹配技术已用于文本编辑器、信息检索系统和模式识别器,上下文无关文法和语法制导翻译等概念已用于设计许多诸如排版、绘图系统这样的小语言,代码优化技术已用于程序验证器和从非结构化程序产生结构化程序的程序验证器之中。所以,对从事计算机专业的人们来说也具有重要的意义和价值。  我们在内容的安排上考虑到了以下两点:(1)不同学校的教学计划是不太一样的,如有的计算理论是作为必修的,有的作为选修,有的则不一定开设这门课,因此,我们还是对自动机理论作了详细的讲解,即使没有学过自动机理论,也可以从本书中得到这部分内容的补充。(2)不同的教师会使用不同的实践方法来加强对理论的理解和巩固。有些教师倾向于用一系列分开的小例子去研究技术,每个小例子都针对一个特定的概念;有些教师则偏向于做一个大的编译器项目,该项目或通过工具Lex和Yacc来实现,或通过手写代码(用递归下降分析)来实现。在本书中,我们也对工具Lex和Yacc进行了适当的讲解,可以根据需要来安排这部分的内容。

内容概要

  《编译原理与技术》从介绍编译的原理性概念开始,然后通过构建编译器的过程来逐一解释相关概念。《编译原理与技术》深入讨论了编译器设计的重要主题,包括词法分析、自动机理论、语法分析(算符优先分析、自顶向下分析、自下而上分析)、属性文法、语法制导翻译、类型检查、运行环境、中间代码生成、代码优化、代码生成、各种出错处理等,并结合样例对词法分析的自动生成工具Lex和语法分析的自动生成工具Yacc作了介绍。《编译原理与技术》旨在介绍基本的理论和方法,而不偏向于某种源语言或目标机器。全书内容翔实,图文并茂;各章节之间循序渐进;每章都提供了大量的实例,并在各章之后附有习题,供读者学习时练习和参考。《编译原理与技术》可作为高等院校计算机专业本科生和研究生编译原理与技术课程的教材,也可以作为计算机技术人员必读的专业参考书之一。

书籍目录

第1章 引论1.1 什么是编译程序1.2 编译器的基本阶段1.2.1 词法分析程序1.2.2 语法分析程序1.2.3 语义分析程序1.2.4 中间代码生成器1.2.5 代码优化程序1.2.6 目标代码生成器1.2.7 符号表管理1.2.8 错误处理1.3 与编译器有关的程序1.3.1 解释程序1.3.2 汇编程序1.3.3 链接和装入程序1.3.4 预处理器1.3.5 调试程序1.4 一个简单的编译程序1.4.1 语言概述1.4.2 词法分析程序1.4.3 递归下降语法分析1.4.4 中间代码生成及优化练习第2章 词法分析2.1 扫描处理及缓冲2.2 正规表达式2.3 有限自动机2.3.1 确定有限自动机2.3.2 非确定有限自动机2.4 从正则表达式到有限自动机2.4.1 从正规式到NFA2.4.2 从NFA到DFA2.4.3 状态数最小化2.5 词法分析中要解决的几个问题2.6 利用LEX建立词法分析器练习第3章 上下文无关文法与语言3.1 上下文无关文法的基本概念和定义3.2 分析和推导3.2.1 分析和推导3.2.2 分析树3.2.3 二义文法3.3 文法的设计3.3.1 验证由文法产生的语言3.3.2 消除二义性3.3.3 消除左递归3.3.4 提取左因子3.4 乔姆斯基层次及上下文无关文法的局限练习第4章 自顶向下语法分析4.1 递归程序实现预测语法的分析器4.2 非递归预测分析法4.3 First集和Follow集概念及构造4.4 预测分析表构造4.5 LL(1)文法4.6 预测分析中的错误恢复方法练习第5章 自下而上语法分析5.1 自底向上方法概述5.2 算符优先分析法5.2.1 算符优先分析算法5.2.2 优先函数5.2.3 算符优先分析中的出错处理5.3 LR语法分析器基本思想与概念5.3.1 LR文法5.4 SLR语法分析表构造5.5 规范LR语法分析表构造5.6 IALR语法分析表构造5.7 LR语法分析表的压缩5.8 LR语法分析中的错误恢复5.9 二义性文法应用5.9.1 使用优先级与结合规则解决动作的冲突5.9.2 悬空else的二义性5.9.3 特例产生式引起的二义性5.10 语法分析器自动生成工具YACC5.10.1 YACC工具介绍5.10.2 用YA,CC处理二义性5.10.3 用LEX建立YACC的词法分析器5.10.4 YACC中的错误恢复练习第6章 语法制导翻译6.1 语法制导定义6.2 属性的计算6.2.1 属性和属性语法6.2.2 依赖图6.2.3 计算次序6.2.4 自底向上计算继承属性6.2.5 临时属性的计算和外部数据结构6.2.6 Knuth定理6.3 类型检查6.3.1 类型系统6.3.2 类型表达式的等价6.3.3 类型推论和类型检查6.3.4 类型转换6.3.5 重载6.3.6 多态函数6.4 符号表6.4.1 符号表的表项和符号表的操作6.4.2 声明和同层声明6.4.3 符号表的数据结构6.4.4 作用域规则和块结构练习第7章 运行时环境7.1 存储组织及存储分配策略7.2 静态分配7.3 栈式7.3.1 没有局部过程的基于栈的环境7.3.2 带有局部过程的基于栈的运行时环境7.3.3 带有过程参数的基于栈的运行时环境7.4 堆式7.5 参数传递7.5.1 值传递7.5.2 引用传递7.5.3 值-结果传递7.5.4 名字传递练习第8章 中间代码生成8.1 中间语言8.1.1 后缀式8.1.2 图表示法8.1.3 三地址代码8.2 说明语句8.2.1 过程中的说明语句8.2.2 保留作用域信息8.2.3 记录中的域名8.3 赋值语句的翻译8.3.1 简单算术表达式及赋值语句8.3.2 数组元素的引用8.3.3 记录中域的引用8.4 布尔表达式的翻译8.4.1 数值表示法8.4.2 作为条件控制的布尔式表达翻译8.5 控制语句的翻译8.5.1 控制流语句8.5.2 标号与goto语句8.5.3 CASE语句的翻译8.6 过程调用的处理练习第9章 代码生成和代码优化9.1 代码生成器中的基本问题9.2 目标机器9.3 寄存器与临时单元的管理9.4 一个简单的代码生成器9.5 一个简单的寄存器分配方案9.6 代码生成器的自动化技术9.6.1 基于文法的代码生成器9.7 代码优化9.7.1 分析器优化9.7.2 线性优化9.7.3 语法树上的优化练习参考文献

图书封面

评论、评分、阅读与下载


    编译原理与技术 PDF格式下载


用户评论 (总计0条)

 
 

 

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

京ICP备13047387号-7