《编译原理及实现技术》是2010年机械工业出版社出版的图书,作者是刘磊。
编译原理是计算机学科的一门重要专业基础课。本书旨在介绍编译程序设计的基本原理、实现技术、方法和工具,充分考虑了教师便于教学,学生便于自学的问题。在介绍基本原理和实现技术中,注重循序渐进、深入浅出,每一章节都提供了编译程序实现的具体实例,每章末尾给出了丰富的习题以辅助学生更好地掌握编译过程。
本书包含了编译程序设计的基础理论和具体实现技术,主要内容有:形式语言和自动机理论、词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成等编译过程。
目录
- 第1章 编译引论
- 1.1 程序设计语言和编译程
- 1.2 编译程序的结构
- 1.2.1 编译程序的构成
- 1.2.2 遍
- 1.2.3 编译程序的前端和后端
- 1.3 编译程序和程序设计环境
- 1.4 编译程序的实现
- 习题
- 第2章 形式语言与自动机理论基础
- 2.1 基本概念
- 2.2 文法
- 2.2.1 文法的定义
- 2.2.2 文法分类
- 2.2.3 推导和归约
- 2.2.4 语法树与文法二义性
- 2.2.5 文法等价变换
- 2.3 有限自动机(FA)
- 2.3.1 确定有限自动机
- 2.3.2 非确定有限自动机
- 2.3.3 DFA与NFA的等价
- 2.3.4 DFA的化简
- 2.4 正则表达式
- 2.4.1 正则表达式与正则集
- 2.4.2 正则表达式与有限自的相互转换
- 习题
- 第3章 词法分析
- 3.1 词法分析介绍
- 3.1.1 词法分析程序的功能
- 3.1.2 词法分析程序的接口
- 3.2 词法分析程序设计
- 3.2.1 单词分类
- 3.2.2 单词的内部表示
- 3.2.3 单词的形式描述
- 3.2.4 自动机的实现
- 3.3 词法分析程序的实现
- 3.3.1 实现词法分析程序应注意的问题
- 3.3.2 单词结
- 3.3.3 实现算法
- 3.4 词法分析程序自动生成
- 3.4.1 LEX简介
- 3.4.2 LEX工作原理
- 3.4.3 LEX源文件结构
- 3.4.4 LEX系统中的正则式
- 3.4.5 LEX的使用方式
- 3.4.6 应用实例
- 习题
- 第4章 语法分析——自顶向下分析方法
- 4.1 语法分析程序介绍
- 4.1.1 语法分析程序的功能
- 4.1.2 语法错误类别及错误处理
- 4.1.3 自顶向下语法分析基本思想
- 4.1.4 3个重要的集合
- 4.1.5 自顶向下语法分析条件
- 4.2 递归下降法
- 4.2.1 递归下降法语法分析原理
- 4.2.2 递归下降法语法分析程序的构造
- 4.3 LL(1)分析方法
- 4.3.1 LL(1)分析法原理
- 4.3.2 LL(1)分析表的构造
- 4.3.3 LL(1)驱动程序的构造
- 4.4 自顶向下分析程序的自动生成
- 习题
- 第5章 语法分析——自底向上分析方法
- 5.1 自底向上语法分析方法介绍
- 5.2 简单优先分析
- 5.2.1 简单优先文法及其优先关系矩阵的构造
- 5.2.2 简单优先分析算法
- 5.3 LR分析法
- 5.3.1 LR类分析法的工作过程
- 5.3.2 LR(0)分析方法
- 5.3.3 SLR(1)分析方法
- 5.3.4 LR(1)分析方法
- 5.3.5 LALR(1)分析方法
- 5.3.6 LR方法小结
- 5.4 自底向上分析程序的自动生成
- 习题
- 第6章 语义分析和符号表
- 6.1 语义分析概述
- 6.1.1 语义
- 6.1.2 语义分析的功能
- 6.1.3 语义分析的一般过程
- 6.2 符号表的数据结构
- 6.2.1 标识符的属性
- 6.2.2 标识符的内部表示
- 6.2.3 类型的内部表示
- 6.2.4 值的内部表示
- 6.3 符号表的管理
- 6.3.1 符号表的建立与访问
- 6.3.2 符号表的组织
- 6.3.3 符号表的局部化处理
- 6.4 程序设计语言符号表的实例
- 6.4.1 Pascal的符号表
- 6.4.2 C的符号表
- 习题
- 第7章 中间代码生成
- 7.1 常用的中间代码结构
- 7.1.1 后缀式
- 7.1.2 抽象语法树和DAG
- 7.1.3 三地址中间代码
- 7.2 语法制导方法概论
- 7.3 类型检查和类型转换
- 7.4 中间代码生成中的几个问题
- 7.4.1 语义信息的获取和保存
- 7.4.2 语义栈Sem及其操作
- 7.4.3 常用的语义子程序
- 7.5 表达式的中间代码生成
- 7.6 下标变量的中间代码生成
- 7.6.1 下标变量的地址
- 7.6.2 下标变量的四元式结构
- 7.6.3 下标变量的中间代码生成过程
- 7.6.4 下标变量中间代码生成实例
- 7.7 赋值语句的中间代码
- 7.8 过程调用和函数调用的中间代码
- 7.9 控制语句的中间代码生成
- 7.9.1 goto语句和标号定位的中间代码
- 7.9.2 条件语句的中间代码
- 7.9.3 while语句的中间代码
- 7.10 过程∕函数声明的中间代码生成
- 习题
- 第8章 中间代码优化
- 8.1 优化方法概述
- 8.2 基本块划分
- 8.3 常量表达式局部优化
- 8.4 公共表达式局部优化
- 8.5 循环不变式外提
- 8.5.1 循环不变式外提概述
- 8.5.2 循环不变式外提原理
- 8.6 其他各类优化介绍
- 习题
- 第9章 运行时存储空间的组织与管理
- 9.1 目标程序运行时的存储结构
- 9.1.1 目标程序运行时内存的划分
- 9.1.2 目标程序运行时的存储分配策略
- 9.2 过程活动记录和运行时栈
- 9.2.1 过程活动记录
- 9.2.2 过程活动记录的申请和释放
- 9.3 变量访问环境
- 9.3.1 变量访问环境概述
- 9.3.2 Display表方法
- 9.3.3 静态链方法
- 习题
- 第10章 目标代码生成
- 10.1 目标代码生成介绍
- 10.1.1 代码生成器的输入和输出
- 10.1.2 指令选择
- 10.2 虚拟机
- 10.3 寄存器的分配
- 10.3.1 单寄存器机器的寄存器分配
- 10.3.2 多寄存器机器的寄存器分配
- 10.4 四元式到目标代码的翻译
- 10.4.1 表达式四元式的翻译
- 10.4.2 赋值语句四元式的翻译
- 10.4.3 输入输出语句四元式的翻译
- 10.4.4 条件语句四元式的翻译
- 10.4.5 循环语句四元式的翻译
- 10.4.6 标号语句四元式和goto语句四元式的翻译
- 10.4.7 过程、函数说明语句四元式的翻译
- 10.4.8 过程和函数调用语句四元式的翻译
- 习题
- 参考文献