《编译原理与技术》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:刘春林,谭庆平,刘越编著
  • 出 版 社:北京:北京邮电大学出版社
  • 出版年份:2005
  • ISBN:7563508414
  • 页数:306 页
图书介绍:本书介绍编译程序设计的基本原理、技术和方法。主要内容包括:编译程序的概述,高级语言及其语法描述,语法分析,属性方法和语法制导翻译,语义分析和中间代码产生,符号表的内容与组织,运行时存储空间组织,代码优化以及目标代码生成等。全书组织合理,由浅入深,循序渐进。每一章节都精选了必要的示例并配备了丰富的习题。?

第一章 引论 1

编译程序概述 1

编译过程及编译程序结构 3

编译过程 3

表格管理 6

出错处理 7

编译各阶段的分组 7

编译程序的相关工具 9

编译程序的构造 10

本章小结 12

习题1 12

第二章 语言和文法 13

程序语言 13

语法 13

语义 14

上下文无关文法 15

基本概念 15

上下文无关文法定义 16

推导、句型和句子 19

语法分析树与二义性 22

形式语言简介 25

本章小结 27

习题2 27

第三章 词法分析 30

词法分析概述 30

单词符号的分类 30

词法分析器的输出形式 31

词法分析与语法分析的衔接 32

词法分析器的设计 33

输入与预处理 33

单词符号的识别 34

状态转换图 35

状态转换图的实现 39

正规式与有限自动机 42

正规式与正规集 42

确定有限自动机 43

非确定有限自动机 45

正规文法与有限自动机的等价性 48

正规式与有限自动机的等价性 52

确定有限自动机的化简 56

词法分析器的自动产生 58

语言LEX的一般描述 58

LEX的实现 61

本章小结 64

习题3 65

第四章 自上而下语法分析 67

自上而下分析基本问题 67

LL(1)分析法 69

消除左递归 69

消除回溯 72

LL(1)分析条件 73

递归下降分析程序 75

递归下降分析程序的构造 75

扩充的巴科斯范式及语法图 76

预测分析程序 78

预测分析程序工作过程 78

预测分析表的构造 81

本章小结 83

习题4 84

第五章 自下而上语法分析 87

自下而上分析思想 87

移进—归约 87

规范归约简述 90

算符优先分析 92

算符优先文法及优先表构造 93

算符优先分析算法 95

优先函数 97

LR分析法 98

LR分析器 99

LR(0)分析表的构造 103

SLR分析表的构造 108

规范LR分析表的构造 112

LALR分析表的构造 115

二义文法的应用 118

语法分析程序自动产生器——YACC 119

本章小结 125

习题5 126

第六章 属性文法和语法制导翻译 129

属性文法 129

属性及属性文法 129

综合属性 131

继承属性 132

基于属性文法的语法制导翻译 133

S-属性文法的计算 134

L-属性文法的处理 137

翻译模式 137

自顶向下翻译 141

递归下降翻译器的设计 143

自下而上计算继承属性 146

从翻译模式中去掉嵌入在产生式中间的动作 146

分析栈中的继承属性 147

本章小结 149

习题6 149

第七章 语义分析和中间代码产生 152

中间语言 152

后缀式 152

图表示法 153

三地址代码 155

说明语句的处理 160

表达式及赋值语句的翻译 162

简单算术表达式及赋值语句 162

含数组元素的赋值语句 163

布尔表达式 168

控制语句的翻译 177

控制流语句 177

标号与转移语句 182

分叉语句 183

过程调用 185

类型检查 187

类型系统和类型检查 188

一个简单的类型检查器 190

类型转换 194

本章小结 196

习题7 196

第八章 符号表 200

符号表的作用与内容 200

符号表的作用 200

符号表的内容与操作 201

符号表的组织与管理 204

符号表的结构 204

符号表的组织方式 209

名字的作用范围 213

C的符号表组织及名字的作用域分析 214

Pascal的符号表组织及名字的作用域分析 215

本章小结 219

习题8 219

第九章 运行时环境 222

概述 222

运行时环境的存储器组织 223

过程的活动 225

过程的活动记录 227

存储分配策略 228

参数传递 229

参数 229

传地址 230

传值 231

传名 232

静态运行环境 233

栈式运行环境 237

C的活动记录 238

C的过程调用、过程进入、数组空间分配和过程返回 239

嵌套过程语言的栈式实现 240

堆式运行环境 247

堆式动态存储分配的实现 249

隐式存储回收 251

面向对象语言的动态存储分配 252

本章小结 253

习题9 254

第十章 代码优化 257

概述 257

局部优化 261

基本块 261

基本块的DAG表示及其应用 262

循环优化 269

程序流图与循环 269

代码外提 270

强度削弱和删除归纳变量 275

本章小结 278

习题10 278

第十一章 代码生成 281

代码生成器的设计要点 281

简单的代码生成器 284

目标机器模型 284

一个实例 285

相关的信息描述 286

代码生成算法 289

寄存器分配 292

DAG的目标代码 296

窥孔优化 300

本章小结 303

习题11 303

参考文献 305