
由张素琴和吕映芝等编著的《编译原理》介绍编译系统的一般构造原
理、基本实现技术和一些自动构造工具。主要由语言基础知识、词法分析
、语法分析、中间代码生成、代码优化、目标代码生成、符号表的构造和
运行时存储空间的组织等部分组成。
《编译原理》中在介绍编译程序构造基本原理的同时引入“PL/O语言
的编译程序”结构及文本,还引入LEX、YACC使用方法与实例。
本书是高等院校计算机科学与技术专业的本科生教材,也可作为教师
、研究生或软件工程技术人员的参考书。
编辑推荐
由张素琴和吕映芝等编著的《编译原理》提供一个简单但不失典型性的编译程序,有源码(C和PASCAL两种语言)和分析工具,便于清晰地展示编译程序的基本构成和实现技术。借助这个文本,学生可以使用高级语言扩展该编译程序,也可以利用编译生成工具重新实现。重点知识点有了典型例题的解析说明。针对面向对象语言的语法结构及其语义的特征,着重从类及类的继承结构上讨论编译实现技术及面向对象技术构造编译程序的思路,便于读者对一般可复用软件体系结构的理解。 作者简介
张素琴清华大学计算机系教授。中国计算机学会系统软件专业委员会委员。1970年毕业于清华大学数学力学系。长期承担计算机专业基础课“编译原理”的教学和程序设计语言设计与实现,编译与编译自动生成技术等方面的研究工作。作为主要负责人和主要承担者,完成多项国家自然基金、“八五”、“九五”、“863”科技攻关任务。发表学术论文多篇,主编《程序设计语言》和《编译原理》教材2部,译著6部。吕映芝清华大学计算机系教授,1961年毕业于清华大学数学力学系计算数学专业。主要从事程序设计语言编译原理的教学工作、程序语言结构和自动生成工具的研究工作以及程序设计语言编译原理计算机辅助教学软件的研制和开发工作。蒋维杜清华大学计算机系教授,长期从事语言编译、数据库、软件复用和面向对象软件工程的教学工作。负责并承担过国家“863”、“六五”到“九五”等高科技攻关项目,以及其他横向项目,并完成多项与国外公司的科技合作及软件出口项目。在交叉编译系统、数据库、信息系统及环境工具等方面取得多项成果,并获得中国科学院及电子部的科技进步奖。在长期培养研究生的教学及科研中,对面向对象方法及面向对象软件构造方面有较深入的研究。戴桂兰1972年生,博士,主要研究方向为程序语言,编译技术,软件测试技术,已发表论文二十余篇。目前在清华大学信息技术研究院Web与软件技术中心工作。 目录
第1章引论
1.1什么是编译程序
1.2编译过程和编译程序的结构
1.2.1编译过程概述
1.2.2编译程序的结构
1.2.3编译阶段的组合
1.3解释程序和一些软件工具
1.3.1解释程序
1.3.2处理源程序的软件工具
1.4程序设计语言范型
练习
第2章PL/0编译程序的实现
2.1PL/0语言描述
2.1.1PL/0语言的语法描述图
2.1.2PL/O语言文法的EBNF表示
2.2PL/O编译程序的结构
2.3PL/O编译程序的词法分析
2.4PL/0编译程序的语法语义分析
2.5PL/0编译程序的目标代码结构和代码生成
2.6PL/0编译程序的语法错误处理
2.7PL/O编译程序的目标代码解释执行时的存储分配
练习
第3章文法和语言
3.1文法的直观概念
3.2符号和符号串
3.3文法和语言的形式定义
3.4文法的类型
3.5上下文无关文法及其语法树
3.6句型的分析
3.6.1自上而下的分析方法
3.6.2自下而上的分析方法
3.6.3句型分析的有关问题
3.7有关文法实用中的一些说明
3.7.1有关文法的实用限制
3.7.2上下文无关文法中的ε规则
3.8典型例题及解答
练习
第4章词法分析
4.1词法分析程序的设计
4.1.1词法分析程序与语法分析程序的接口方式
4.1.2词法分析程序的输出
4.1.3将词法分析工作分离的考虑
4.2单词的描述工具
4.2.1正规文法
4.2.2正规式
4.2.3正规文法和正规式的等价性
4.3有穷自动机
4.3.1确定的有穷自动机(DFA)
4.3.2不确定的有穷自动机(NFA)
4.3.3NFA转换为等价的DFA
4.3.4确定有穷自动机的化简
4.4正规式和有穷自动机的等价性
4.5正规文法和有穷自动机的等价性
4.6词法分析程序的自动构造工具
4.7典型例题及解答
练习
第5章自顶向下语法分析方法
5.1确定的自顶向下分析思想
5.2LL(1)文法的判别
5.3某些非LL(1)文法到LL(1)文法的等价变换
5.4不确定的自顶向下分析思想
5.5确定的自顶向下分析方法
5.5.1递归子程序法
5.5.2预测分析方法
5.6典型例题及解答
练习
第6章自底向上优先分析
6.1自底向上优先分析概述
6.2简单优先分析法
6.2.1优先关系
6.2.2简单优先文法的定义
6.2.3简单优先分析法的操作步骤
6.3算符优先分析法
6.3.1直观算符优先分析法
6.3.2算符优先文法的定义
6.3.3算符优先关系表的构造
6.3.4算符优先分析算法
6.3.5优先函数
6.3.6算符优先分析法的局限性
6.4典型例题及解答
练习
第7章LR分析
7.1LR分析概述
7.2LR(O)分析
7.2.1可归前缀和子前缀
7.2.2识别活前缀的有限自动机
7.2.3活前缀及其可归前缀的_般计算方法
7.2.4LR(O)项目集规范族的构造
7.3SLR(1)分析
7.4LR(1)分析
7.4.1LR(1)项目集族的构造
7.4.2LR(1)分析表的构造
7.5LALR(1)分析
7.6二义性文法在LR分析中的应用
7.7语法分析程序的自动构造工具YACC
7.8典型例题及解答
练习
第8章语法制导翻译和中间代码生成
8.1属性文法
8.2语法制导翻译概论
8.2.1计算语义规则
8.2.2S-属性文法和自下而上翻译
8.2.3L-属性文法在自上而下分析中的实现
8.2.4L-属性文法在自下而上分析中的实现
8.3中间代码的形式
8.3.1逆波兰记号
8.3.2三元式和树形表示
8.3.3四元式
8.4简单赋值语句的翻译
8.5布尔表达式的翻译
8.5.1布尔表达式的翻译方法
8.5.2控制语句中布尔表达式的翻译
8.6控制结构的翻译
8.6.1条件转移
8.6.2开关语句
8.6.3for循环语句
8.6.4出口语句
8.6.5goto语句
8.6.6过程调用的四元式产生
8.7说明语句的翻译
8.7.1简单说明语句的翻译
8.7.2过程中的说明
8.8数组和结构的翻译
8.8.1数组说明和数组元素的引用
8.8.2结构(记录)说明和引用的翻译
练习
第9章符号表
9.1符号表的作用和地位
9.2符号的主要属性及作用
9.3符号表的组织
9.3.1符号表的总体组织
9.3.2符号表项的排列
9.3.3关键字域的组织
9.3.4其他域的组织
9.3.5下推链域的组织
9.4符号表盼管理
9.4.1符号表的初始化
9.4.2符号的登录
9.4.3符号的查找
9.4.4符号表中分程序结构层次的管理
练习
第1O章目标程序运行时的存储组织
10.1数据空间的三种不同使用方法和管理方法
10.1.1静态存储分配
10.1.2动态存储分配
10.1.3栈式动态存储分配
10.1.4堆式动态存储分配
10.2栈式存储分配的实现
10.2.1简单的栈式存储分配的实现
10.2.2嵌套过程语言的栈式实现
10.2.3分程序结构的存储管理
10.3参数传递
10.3.1传值
10.3.2传地址
10.3.3过程参数
10.4过程调用、过程进入和过程返回
练习
第11章代码优化
11.1优化技术简介
11.2局部优化
11.2.1基本块的划分
11.2.2基本块的变换
11.2.3基本块的有向图DAG(Directed Acyc1ic Graph)表示
11.2.4DAG的应用
11.3控制流分析和循环优化
11.3.1程序流图
11.3.2循环的查找
11.3.3循环优化
11.4数据流的分析与全局优化
11.4.1一些主要的概念
11.4.2数据流方程的一般形式
11.4.3到达一定值数据流方程
11.4.4可用表达式及其数据流方程
11.4.5活跃变量数据流方程
11.4.6复写传播
练习
第12章代码生成
12.1代码生成概述
12.1.1代码生成程序在编译系统中的位置
12.1.2设计代码生成程序的基本问题
12.2一个简单的代码生成程序
12.2.1计算机模型
12.2.2待用信息链表法
12.2.3代码生成算法
12.3几种常用的代码生成程序的开发方法
12.3.1解释性代码生成法
12.3.2模式匹配代码生成法
12.3.3表驱动代码生成法
12.4全局寄存器分配(图着色法)
12.4.1概述
12.4.2图着色寄存器分配法的相关技术
12.4.3示例
12.5代码生成程序的自动化构造
12.5.1模式匹配与动态规划
12.5.2基于语法制导的代码生成程序自动构造技术
12.5.3基于语义制导的代码生成程序自动构造技术
练习
第13章编译程序的构造
13.1编译程序的书写
13.1.1编译程序的书写语言与T型图
13.1.2编译程序的自展技术
13.2可重定向编译程序
13.2.1概述
13.2.2支持可重定向编译的关键技术
13.2.3常用的可重定向编译程序
13.3GCC的剖析
13.3.1GcC的总体结构
13.3.2GCC的中间表示
13.3.3GCC的机器描述
13.3.4GCC的代码生成与机器描述的接口
13.4GCC的定制
13.4.1GCC的剪裁
13.4.2GCC编译程序的安装与配置
13.5GCC的优化
13.5.1概述
13.5.2窥孔优化
13.5.3基于机器描述的窥孔优化
13.5.4修改GCC源程序的窥孔优化
练习
第14章面向对象语言的编译
14.1面向对象语言的基本概念
14.2面向对象语言语法结构及语义处理的特征
14.2.1面向对象语言的类的语法结构及语义
14.2.2面向对象语言的有效类、延迟类及延迟成员
14.2.3面向对象语言的类属类
14.2.4面向对象语言的继承类
14.3多态实例变量、多态引用的类型检查及绑定
14.3.1实例变量和多态引用
14.3.2静态类型检查及动态类型检查
14.3.3静态绑定及动态绑定
14.4对象的创建及面向对象操作的语义
14.4.1对象的创建
14.4.2面向对象操作的语义
14.5类名的属性构造
14.5.1类名的属性及其结构
14.5.2类成员名的属性及其结构
14.6对象的存储管理及废弃单元回收
14.6.1对象的三种存储区组织管理方式
14.6.2静态模型和栈式模型废弃单元的回收
14.6.3堆式模型废弃单元的回收
练习
第15章编译程序的面向对象构造
15.1编译程序面向对象构造的基本概念
15.1.1编译程序的需求
15.1.2编译程序的分解
15.1.3类的构造层次
15.1.4类的特性定义
15.2构造编译程序的面向对象类库
15.2.1对传统编译程序构造中软件复用的分析
15.2.2面向对象编译类库的地位
15.2.3语言编译论域的面向对象论域分析
15.3面向对象编译程序的符号表构造
练习
附录APL/O编译程序文本
A.1Pasca1版本
A.2C版本
参考文献| ISBN | |
|---|---|
| 出版社 | 清华大学出版社 |
| 作者 | 张素琴 |
| 尺寸 | 16 |