《编译原理 第2版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:蒋立源,康慕宁主编(西北工业大学计算机学院)
  • 出 版 社:西安:西北工业大学出版社
  • 出版年份:1993
  • ISBN:7561211473
  • 页数:361 页
图书介绍:

目录 1

第1章 绪论 1

1.1 编译过程概述 3

1.2 编译程序的逻辑结构 4

1.2.1 词法分析程序 5

1.2.2 语法分析程序 6

1.2.3 语义分析程序 6

1.2.5 代码优化程序 7

1.2.4 中间代码生成 7

1.2.6 目标代码生成程序 8

1.2.7 错误检查和处理程序 9

1.2.8 信息表管理程序 10

1.3 编译程序的组织 11

习题 12

第2章 前后文无关文法和语言 13

2.1 文法及语言的表示 13

2.2 文法和语言的定义 14

2.2.1 基本概念和术语 15

2.2.2 文法和语言的形式定义 16

2.3 句型的分析 22

2.3.1 规范推导和规范归约 22

2.3.2 语法树和二义性 24

2.3.3 短语和句柄 28

2.4 文法的化简和改造 30

2.4.1 无用符号和无用产生式的删除 30

2.4.2 ε-产生式的消除 32

2.4.3 单产生式的消除 34

2.5 文法和语言的Chomsky分类 35

习题 37

第3章 词法分析及词法分析程序 41

3.1 设计扫描器时应考虑的几个问题 41

3.1.1 词法分析阶段的必要性 41

3.1.2 单词符号的内部表示 42

3.1.3 识别标识符的若干约定和策略 43

3.1.4 源程序的输入及预处理 45

3.2.1 由正规文法构造状态转换图 48

3.2 正规文法和状态转换图 48

3.2.2 状态转换图的一种实现——状态矩阵法 52

3.3 有限自动机 58

3.3.1 确定的有限自动机 58

3.3.2 非确定的有限自动机 59

3.3.3 NFA与DFA的等价性 60

3.3.4 具有ε动作的FA 63

3.3.5 具有ε动作的NFA的确定化——子集法 65

3.3.6 DFA状态数的最小化 68

3.4 正规表达式与正规集 70

3.4.1 正规表达式与正规集的定义 71

3.4.2 由正规文法构造相应的正规式 72

3.4.3 由正规式构造FA——Thompson法 75

3.5 词法分析程序的实现 77

3.5.1 词法分析程序的编写 78

3.5.2 词法分析程序的自动生成 82

习题 99

上机实习题 104

第4章 语法分析和语法分析程序 106

4.1 自顶向下的语法分析 107

4.1.1 消除文法的左递归 108

4.1.2 回溯的消除及LL(1)文法 111

4.1.3 递归下降分析法 113

4.1.4 预测分析法 119

4.1.5 某些非LL(1)文法的改造 124

4.2 自底向上的语法分析 126

4.2.1 简单优先分析法 127

4.2.2 算符优先分析法 136

4.2.3 优先函数 144

4.2.4 LR分析法 150

习题 177

上机实习题 185

第5章 语法制导翻译及中间代码生成 187

5.1 引言 187

5.2 属性文法与属性翻译文法 189

5.2.1 语义属性与属性文法 190

5.2.2 属性翻译文法 193

5.3.1 逆波兰表示 197

5.3 常见中间语言简介 197

5.3.2 四元式和三元式 200

5.3.3 其它表示法 202

5.4 简单算术表达式和赋值语句的翻译 203

5.5 布尔表达式的翻译 205

5.6 程序流程控制语句的翻译 210

5.6.1 常见控制结构的翻译 210

5.6.2 FOR循环语句的翻译 216

5.6.3 语句标号及GOTO语句的翻译 219

5.6.4 情况语句的翻译 222

5.7 含数组元素的算术表达式及赋值语句的翻译 224

5.7.1 下标变量地址的计算 225

5.7.2 含有下标变量的赋值语句的翻译 227

5.8 过程说明和过程调用的翻译 229

5.8.1 过程说明的翻译 230

5.8.2 实参和形参间的信息传递 231

5.8.3 过程语句的翻译 233

5.8.4 关于形实结合的进一步讨论 234

5.9.1 类型说明(变量及数组定义)语句的翻译 236

5.9 说明语句的翻译 236

5.9.2 数据类型定义语句的翻译 239

5.10 语法分析程序的自动生成工具 241

5.10.1 LALR(1)分析器的自动生成工具——YACC和OCCS 242

5.10.2 LL(1)语法分析程序自动生成工具LLama简介 252

5.10.3 LLGen简介 254

习题 255

上机实习题 258

6.1 符号表的组织 259

第6章 符号表 259

6.2 分程序结构语言符号表的建立 263

6.3 非分程序结构语言符号表的建立 268

习题 270

第7章 运行时的存储组织与分配 272

7.1 存储组织 273

7.1.1 运行时内存的划分 273

7.1.2 活动记录 273

7.2 运行时的分配策略 274

7.2.1 静态分配 275

7.2.2 栈式分配 278

7.2.3 堆式分配 281

习题 283

第8章 代码优化 286

8.1 语法制导翻译阶段的优化 286

8.2 线性窥孔优化 287

8.2.1 强度削弱 288

8.2.2 常数合并和常数传播 289

8.2.3 无用变量与无用代码的删除 290

8.2.4 窥孔优化实例 293

8.3 基于结构信息的优化 296

8.3.1 基本块及其优化 296

8.3.2 数据流分析方法 302

8.3.3 循环优化 311

习题 327

上机实习题 332

第9章 目标代码生成 333

9.1 目标代码的形式 333

9.2 一种假想的计算机模型 335

9.3 一种代码生成程序的雏型 338

9.3.1 待用信息 338

9.3.2 寄存器描述符与地址描述符 339

9.3.3 生成目标代码的算法 340

9.4 DAG的代码生成 343

9.5 全局寄存器分配 345

习题 349

上机实习题 350

第10章 查错与改错 351

10.1 语法错误的校正 352

10.1.1 单词错误的校正 352

10.1.2 自顶向下分析中的错误校正 353

10.1.3 自底向上分析中的错误校正 356

10.2 语义错误的校正 359

10.2.1 遏止株连信息 359

10.2.2 遏止重复信息 359

习题 360

参考文献 361