标题：编译原理基础与应用
基本信息
书名：  编译原理基础与应用编译原理基础与应用
书号：7-113-13005
作者：游晓明 等
定价：28.00元
出版日期：2011年9月
版次：1-1　
开本：16开　
页码：276页
出版单位：中国铁道出版社
内容简介
本书系统、全面地介绍了计算机高级语言编译程序的基本原理和技术，对当前最新的嵌入式系统编译技术做了较详细的讨论。主要内容包括词法分析、语法分析、语法制导翻译的语义分析与中间代码生成、符号表与运行时存储空间的组织与代码优化、面向对象语言编译方法及并行编译基础、嵌入式系统编译器及其工具的应用开发。本书理论与实践并重，每章之前都有导读，最后均附有小结和习题，便于读者学习。
本书适合作为普通高等学校计算机学科及相关专业的本科教材，也可供科技工作者及软件研发人员学习和参考。[1]
目录
第1章  编译概述 1
1.1  程序设计语言 2
1.2  翻译程序 3
1.3  编译程序的逻辑结构 5
1.3.1  词法分析 5
1.3.2  语法分析 6
1.3.3  语义分析及中间代码生成 6
1.3.4  代码优化 7
1.3.5  目标代码生成 7
1.3.6  符号表管理程序 8
1.3.7  错误检查和处理程序 8
1.4  编译程序的组织方式 9
1.4.1  单遍编译程序 9
1.4.2  多遍编译程序 9
1.5  编译程序的前后处理器 10
1.6  编译程序的生成 11
小结 12
习题一 12
第2章  文法和语言 13
2.1  程序设计语言的定义 14
2.1.1  语法 14
2.1.2  语义 14
2.2  基本概念和术语 15
2.2.1  字母表 15
2.2.2  符号串 15
2.2.3  符号串及其集合的运算 15
2.3  文法形式定义 17
2.4  语言和语法树 19
2.4.1  直接推导定义 19
2.4.2  推导定义 19
2.4.3  规范推导 20
2.4.4  句型、句子和语言 20
2.4.5  语法树和二义性 23
2.5  短语、简单短语和句柄 25
2.6  文法的化简与改造 27
2.6.1  无用符号和无用产生式的删除 27
2.6.2  ε产生式的消除 28
2.6.3  单产生式的消除 31
2.7  文法和语言的乔姆斯基分类 31
2.8  PL/0编译程序概述 34
2.8.1  PL/0语言的功能 34
2.8.2  PL/0程序示例 35
2.8.3  PL/0语言的语法描述 35
2.8.4  PL/0编译程序的结构 38
小结 39
习题二 39
第3章  词法分析 41
3.1  词法分析器的功能 42
3.2  单词符号 42
3.3  正规文法及状态转换图 44
3.3.1  正规文法 44
3.3.2  由正规文法构造状态转换图 49
3.4  有限状态自动机 52
3.4.1  确定的有限状态自动机 52
3.4.2  不确定的有限状态自动机 56
3.4.3  NFA与DFA的转化 57
3.4.4  正规表达式与有限状态自动机的等价性 59
3.4.5  确定的有限状态自动机的化简 61
3.5  词法分析程序的设计与实现 63
3.5.1  词法分析程序的手工编写 63
3.5.2  词法分析程序的自动生成 66
3.6  PL/0编译程序的词法分析 70
小结 72
习题三 72
第4章  语法分析 74
4.1  语法分析器的功能 75
4.2  自顶向下分析 75
4.2.1  自顶向下分析面临的问题 75
4.2.2  消除文法的左递归 78
4.2.3  消除左递归算法 79
4.2.4  回溯的消除及LL(1)文法 79
4.2.5  LL(1)文法的判断条件 80
4.2.6  FIRST集合和FOLLOW集合及构造方法 81
4.2.7  LL(1)分析的基本方法 83
4.2.8  预测分析表的构造方法 83
4.2.9  预测分析控制程序的实现技术 84
4.2.10  递归下降分析 86
4.3  自底向上分析 92
4.3.1  规范推导、规范句型和规范归约 92
4.3.2  自底向上分析方法的一般过程 94
4.3.3  算符优先分析 95
4.3.4  LR分析方法 106
4.3.5  LR分析表的构造 110
4.3.6  SLR(1)分析器 117
4.3.7  LR(1)分析器 121
4.3.8  LALR(1)分析器 122
4.4  语法分析程序的自动生成 124
4.4.1  语法分析程序的自动生成工具YACC 124
4.4.2  PL/0编译程序的语法分析 130
小结 132
习题四 132
第5章  语法制导翻译和中间代码生成 135
5.1  语法制导翻译的基本思想 136
5.2  属性文法综述 139
5.2.1  文法的属性 139
5.2.2  属性文法 139
5.3  语法制导翻译的实现方法 141
5.4  中间代码的形式 142
5.4.1  树形表示法 142
5.4.2  逆波兰表示法 143
5.4.3  三元式 144
5.4.4  四元式 145
5.5  语句的翻译 146
5.5.1  说明语句（简单变量）的翻译 146
5.5.2  赋值语句的翻译 147
5.5.3  布尔表达式的翻译 151
5.5.4  标号和无条件转移语句的翻译 153
5.5.5  控制语句的翻译 155
5.5.6  复合语句的翻译 156
5.5.7  多分支控制语句case的翻译 158
5.5.8  数组元素的翻译 158
5.5.9  过程或函数调用语句的翻译 159
5.5.10  数组说明的翻译 160
小结 160
习题五 160
第6章  符号表与运行环境 162
6.1  符号表的组织和作用 162
6.1.1  符号表的作用和地位 163
6.1.2  符号表的内容 163
6.1.3  符号表的组织方式 163
6.2  存储组织 167
6.2.1  目标程序运行时的组织 167
6.2.2  运行时存储器的划分 167
6.2.3  活动记录 168
6.3  运行时的分配策略 169
6.3.1  静态存储分配 170
6.3.2  栈式分配 173
6.3.3  堆式动态存储分配 180
小结 182
习题六 182
第7章  代码优化 183
7.1  优化概述 183
7.2  局部优化 185
7.2.1  基本块的划分方法 186
7.2.2  利用DAG进行基本块的优化 188
7.3  循环优化 192
7.3.1  程序流图与循环 192
7.3.2  循环的查找 196
7.3.3  循环优化的实现 197
小结 207
习题七 207
第8章  目标代码生成 209
8.1  代码生成器 209
8.2  一个简单的目标代码生成器 211
8.2.1  待用信息与活跃信息 212
8.2.2  源程序到目标代码生成示例 217
8.3  代码生成器的开发方法 219
小结 220
习题八 220
第9章  面向对象语言编译及并行编译基础 222
9.1  面向对象语言的概念 223
9.2  方法的编译 224
9.3  继承的编译方案 226
9.3.1  单一继承的编译方案 226
9.3.2  多重继承的编译方案 227
9.4  并行编译系统 228
9.4.1  并行编译系统的结构 229
9.4.2  并行编译方法 231
9.4.3  向量计算机 231
9.4.4  共享存储器多处理机 232
9.4.5  分布存储器大规模并行计算机 233
9.5  并行编译基础 233
9.5.1  向量与向量的次序 233
9.5.2  循环模型与索引空间 234
9.5.3  输入与输出集合 234
9.5.4  语句的执行顺序 234
9.5.5  依赖关系定义 235
9.6  循环的向量化与并行化 236
9.7  循环变换技术 236
小结 237
习题九 237
第10章  嵌入式系统编译器及其工具的应用开发 239
10.1  嵌入式系统概述 240
10.2  嵌入式系统常用芯片介绍 242
10.3  嵌入式系统结构、开发工具和编译器 244
10.3.1  嵌入式系统的体系结构 244
10.3.2  嵌入式系统开发工具和编译器 248
10.4  嵌入式系统C编译器开发和相应开发工具的应用 249
10.5  嵌入式系统Java编译器开发、JDK结构及开发工具的应用 252
10.5.1  JIT编译方法 253
10.5.2  AOT编译方法 256
10.5.3  JDK结构及开发工具的应用 258
小结 260
习题十 261
参考文献 262