本书介绍编译器构造的一般原理和基本实现方法,内容包括词法分析、语法分析、语义分析、中间代码生成、目标代码生成、独立于机器的优化和依赖于机器的优化等。除了介绍命令式编程语言的编译技术外,本书还介绍面向对象编程语言和函数式编程语言的实现技术。另外,本书还强调一些相关的理论知识,如形式语言和自动机理论、语法制导的定义和属性文法、类型论和类型系统等。
本书内容丰富、讲解深入,注意理论联系实际,可作为高等学校计算机科学及相关专业的教材,也可供计算机软件工程技术人员参考。
- 前言
- 第1章 引论
- 第2章 词法分析
- 2.1 词法记号及属性
- 2.2 词法记号的描述与识别
- 2.3 有限自动机
- 2.4 从正规式到有限自动机
- 2.5 词法分析器的生成器
- 习题2
- 第3 章 语法分析
- 3.1 上下文无关文法
- 3.2 语言和文法
- 3.3 自上而下分析
- 3.4 自下而上分析
- 3.5 LR分析器
- 3.6 二义文法的应用
- 3.7 语法分析器的生成器
- 习题3
- 第4 章 语法制导的翻译
- 4.1 语法制导的定义
- 4.2 S属性定义的自下而上计算
- 4.3 LR属性定义的自上而下计算
- 4.4 LR属性的自下而上计算
- 习题4
- 第5 章 类型检查
- 5.1 类型在编程语言中的作用
- 5.2 类型系统的描述语言
- 5.3 一个简单类型检查器的规范
- ∗5.4 多态函数
- 5.5 类型表达式的等价
- 5.6 函数和算符的重载
- 习题5
- 第6 章 运行时存储空间的组织和管理
- 6.1 局部存储分配
- 6.2 全局栈式存储分配
- 6.3 非局部名字的访问
- 6.4 参数传递
- ∗6.5 堆管理
- 习题6
- 第7 章 中间代码生成
- 7.1 中间语言
- 7.2 声明语句
- 7.3 赋值语句
- 7.4 布尔表达式和控制流语句
- 习题7
- 第8 章 代码生成
- 8.1 代码生成器设计中的问题
- 8.2 目标语言
- 8.3 基本块和流图
- 8.4 一个简单的代码生成器
- 习题8
- ∗第9 章 独立于机器的优化
- 9.1 优化的主要种类
- 9.2 数据流分析介绍
- 9.3 数据流分析的基础
- 9.4 常量传播
- 9.5 部分冗余删除
- 9.6 流图中的循环
- 习题9
- ∗第10 章 依赖于机器的优化
- 10.1 处理器体系结构
- 10.2 代码调度的约束
- 10.3 基本块调度
- 10.4 全局代码调度
- 10.5 软件流水
- 10.6 并行性和数据局部性优化概述
- 习题10
- 第11章 编译系统和运行时系统
- 11.1 C语言的编译系统
- 11.2 Java语言的运行时系统
- ∗11.3 无用单元收集
- 习题11
- ∗第12章 面向对象语言的编译
- 12.1 面向对象语言的概念
- 12.2 方法的编译
- 12.3 继承的编译方案
- 习题12
- ∗第13 章 函数式语言的编译
- 13.1 函数式编程语言简介
- 13.2 函数式语言的编译简介
- 13.3 抽象机的体系结构
- 13.4 指令集和编译
- 习题13
- 版权
- 参考文献