- 电子工业出版社
- 9787121435751
- 1版
- 466029
- 48245860-1
- 平塑
- 16开
- 2022-12
- 300
- 计算机科学与技术
- 本科 研究生(硕士、EMBA、MBA、MPA、博士)
内容简介
本书系统地介绍了编译程序的设计原理及实现技术。在内容的组织上,本书强调知识的实用性,有机地结合了编译的基本理论与具体的实现技术,既注重理论的完整性,化繁为简,又将理论融于具体的实例中,化难为易,以达到准确、清楚地阐述相关概念和原理的目的。在具体内容的讲述中,思路清晰、条理分明,给出的示例丰富,实用性与连贯性强,可使读者全面、直观地认识编译的各个阶段。本书采用的算法全部由C语言描述,各章均附有习题,且附录中提供了习题解答。 本书既可作为计算机本科专业学生的教材,又可作为计算机软件工程人员的参考资料。
目录
目 录__eol____eol__第1章 绪论 1__eol__1.1 程序设计语言和编译程序 1__eol__1.2 编译程序的历史及发展 3__eol__1.3 编译过程和编译程序结构 4__eol__1.4 编译程序的开发 6__eol__1.5 构造编译程序所应具备的知识内容 7__eol__习题1 8__eol__第2章 词法分析 10__eol__2.1 词法分析器的设计方法 10__eol__2.1.1 单词符号的分类与输出形式 10__eol__2.1.2 状态转换图 11__eol__2.2 一个简单的词法分析器示例 13__eol__2.2.1 C语言子集的单词符号表示 13__eol__2.2.2 C语言子集对应的状态转换图 14__eol__2.2.3 状态转换图的实现 15__eol__2.3 正规表达式与有限自动机简介 17__eol__2.3.1 正规表达式与正规集 17__eol__2.3.2 有限自动机 18__eol__2.4 正规表达式到有限自动机的构造 21__eol__2.4.1 由正规表达式构造等价的非确定有限自动机 21__eol__2.4.2 NFA的确定化 22__eol__2.4.3 确定有限自动机(DFA)的化简 24__eol__2.4.4 正规表达式到有限自动机构造示例 26__eol__2.5 词法分析器的自动生成 31__eol__习题2 33__eol__第3章 文法和语言 36__eol__3.1 基本概念 36__eol__3.1.1 文法和语言的定义 36__eol__3.1.2 文法产生的语言 38__eol__3.2 形式语言分类 39__eol__3.2.1 四类文法的划分 39__eol__3.2.2 四类文法的关系与区别 40__eol__3.2.3 正规表达式与上下文无关文法 42__eol__3.3 推导与语法树 43__eol__3.3.1 推导与短语 43__eol__3.3.2 语法树与二义性 44__eol__习题3 49__eol__第4章 语法分析—自顶向下分析方法 51__eol__4.1 自顶向下分析原理 51__eol__4.1.1 自顶向下分析存在的不确定性 51__eol__4.1.2 确定的自顶向下分析 52__eol__4.2 递归下降分析法 56__eol__4.2.1 算术表达式的递归下降分析器 56__eol__4.2.2 无二义性的算术表达式递归下降分析器 58__eol__4.3 LL(1)分析法 59__eol__4.3.1 表驱动的LL(1)分析器 59__eol__4.3.2 LL(1)分析表的构造 62__eol__习题4 66__eol__第5章 语法分析—自底向上分析方法 68__eol__5.1 自底向上分析原理 68__eol__5.2 算符优先分析法 70__eol__5.2.1 算符优先文法 70__eol__5.2.2 算符优先关系表的构造 71__eol__5.2.3 算符优先分析算法的设计 74__eol__5.2.4 优先函数 78__eol__5.3 LR分析器的工作原理 80__eol__5.4 LR(0)分析器 86__eol__5.4.1 LR(0)项目集规范族的构造 86__eol__5.4.2 LR(0)分析表的构造 88__eol__5.5 SLR(1)分析器 93__eol__5.6 二义文法的应用 99__eol__习题5 103__eol__第6章 语义分析和中间代码生成 107__eol__6.1 概述 107__eol__6.1.1 语义分析的概念 107__eol__6.1.2 语法制导翻译方法 107__eol__6.2 属性文法 109__eol__6.2.1 文法的属性 109__eol__6.2.2 属性文法 110__eol__6.3 几种常见的中间语言 111__eol__6.3.1 抽象语法树 111__eol__6.3.2 逆波兰表示法 112__eol__6.3.3 三地址代码 114__eol__6.4 表达式及赋值语句的翻译 116__eol__6.4.1 简单算术表达式和赋值语句的翻译 116__eol__6.4.2 布尔表达式的翻译 118__eol__6.5 控制语句的翻译 123__eol__6.5.1 条件语句if的翻译 123__eol__6.5.2 循环语句的翻译 125__eol__6.5.3 三种基本控制结构的翻译 127__eol__6.5.4 多分支控制语句case的翻译 132__eol__6.5.5 语句标号和转移语句的翻译 134__eol__6.6 数组元素的翻译 134__eol__6.6.1 数组元素的地址计算及中间代码形式 135__eol__6.6.2 赋值语句中数组元素的翻译 135__eol__6.6.3 数组元素翻译示例 136__eol__6.7 过程或函数调用语句的翻译 139__eol__6.7.1 过程或函数调用的方法 139__eol__6.7.2 过程或函数调用语句的四元式生成 140__eol__6.8 说明语句的翻译 141__eol__6.8.1 变量说明的翻译 141__eol__6.8.2 数组说明的翻译 141__eol__6.9 递归下降语法制导翻译方法简介 142__eol__习题6 143__eol__第7章 代码优化 147__eol__7.1 局部优化 147__eol__7.1.1 基本块的划分方法 147__eol__7.1.2 基本块的DAG方法 148__eol__7.1.3 用DAG进行基本块的优化处理 152__eol__7.1.4 DAG构造算法的进一步讨论 153__eol__7.2 循环优化 154__eol__7.2.1 程序流图与循环 154__eol__7.2.2 循环的查找 156__eol__7.2.3 循环优化 161__eol__习题7 169__eol__第8章 目标程序运行时存储空间的组织 173__eol__8.1 静态存储分配 173__eol__8.2 简单的栈式存储分配 174__eol__8.2.1 栈式存储分配与活动记录 175__eol__8.2.2 过程的执行 176__eol__8.3 嵌套过程语言的栈式实现 179__eol__8.3.1 嵌套层次显示表和活动记录 179__eol__8.3.2 嵌套过程的执行 180__eol__8.3.3 访问非局部名的另一种实现方法 182__eol__8.4 堆式动态存储分配 185__eol__8.4.1 堆式存储的概念 185__eol__8.4.2 堆式存储的管理方法 186__eol__习题8 188__eol__第9章 目标代码生成 190__eol__9.1 简单代码生成器 190__eol__9.1.1 待用信息与活跃信息 191__eol__9.1.2 代码生成算法 193__eol__9.1.3 寄存器分配 194__eol__9.1.4 源程序到目标代码生成示例 196__eol__9.2 汇编指令到机器代码翻译概述 198__eol__习题9 204__eol__第10章 符号表与错误处理 206__eol__10.1 符号表 206__eol__10.1.1 符号表的作用 206__eol__10.1.2 符号表的组织 207__eol__10.1.3 分程序结构语言符号表建立 208__eol__10.1.4 非分程序结构语言符号表建立 211__eol__10.1.5 常用符号表结构 212__eol__10.1.6 符号表内容 213__eol__10.2 错误处理 214__eol__10.2.1 语法错误校正 214__eol__10.2.2 语义错误校正 220__eol__习题10 221__eol__附录A 8086/8088指令码汇总表 223__eol__附录B 8086/8088指令编码空间表 228__eol__附录C 习题解答 230__eol__参考文献 290__eol__