《编译原理》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:苏运霖编
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2008
  • ISBN:7111222784
  • 页数:318 页
图书介绍:本书作为编译原理的教材,主要介绍了文法和语言、自动机理论等知识。

第1章 概论 1

1.1 语言和人类 1

1.2 语言和计算机 2

1.3 语言和编译 6

1.4 程序设计语言的编译 7

1.5 一个语句的编译举例 9

1.6 编译的遍数 11

1.7 本书的组成 11

习题 13

第2章 文法和语言 14

2.1 预备知识 14

2.2 文法 15

2.3 语言 18

2.4 文法所生成的语言 20

2.5 图灵机 22

2.6 有关文法和语言的问题 29

习题 30

第3章 有限自动机和正则表达式 34

3.1 确定的有限自动机 34

3.2 不确定的有限自动机 37

3.3 带有ε的有限自动机 42

3.4 正则表达式 44

3.5 两路有限自动机 49

3.6 正则文法 53

3.7 关于正则语言的判定 61

习题 62

第4章 词法分析 66

4.1 词法分析的作用 67

4.2 词法分析程序的输出 76

4.3 错误处理 78

习题 78

第5章 上下文无关文法和下推自动机 80

5.1 上下文无关文法 80

5.2 上下文无关文法的性质 83

5.3 下推自动机 90

5.4 下推自动机和上下文无关语言 93

习题 98

第6章 语法分析 104

6.1 LL(1)语法分析 104

6.2 LL(1)文法的确定 107

6.3 LL(1)语法分析方法 110

6.4 自底向上的语法分析 115

6.5 LR(1)语法分析方法 118

6.5.1 LR(0)语法分析 118

6.5.2 SLR(1)语法分析 120

6.5.3 LALR(1)语法分析 122

6.5.4 LR(1)语法分析 124

6.5.5 LL(1)语法分析方法和LR(1)语法分析方法的比较 130

习题 132

第7章 属性文法及其分析 136

7.1 属性文法 136

7.2 依赖图和属性计算 139

7.2.1 动态属性计算 143

7.2.2 循环处理 145

7.3 L属性文法和S属性文法 146

习题 148

第8章 编译程序设计的代数方法 149

8.1 源语言 149

8.2 代数基础和推理语言 154

8.2.1 代数基础 155

8.2.2 推理语言 160

8.3 一个简单的编译程序 178

8.3.1 规范形式 178

8.3.2 规范形式的归结 179

8.3.3 目标机器 182

8.3.4 表达式的化简 183

8.3.5 控制的消除 185

8.3.6 数据求精 187

8.3.7 编译过程 191

8.4 过程、递归和参数 192

8.4.1 记号 193

8.4.2 过程 193

8.4.3 递归 195

8.4.4 带参数的程序 197

8.4.5 带参数的过程 199

8.4.6 带参数的递归 200

8.4.7 讨论 202

8.5 小结 203

习题 204

第9章 中间代码的生成 205

9.1 为什么需要有中间代码生成阶段 205

9.2 中间代码语言 205

9.2.1 图形表示 206

9.2.2 后缀表示 208

9.2.3 四元组代码 209

习题 223

第10章 纠错与优化 226

10.1 错误检测和恢复 226

10.2 语法错误检查 227

10.2.1 LL(1)分析程序的错误处理 229

10.2.2 LR(1)分析中的错误处理 229

10.3 语义错误检查 230

10.4 程序的优化 230

10.5 程序优化的几个主要途径 234

10.5.1 公共子表达式的删除 234

10.5.2 副本传播 234

10.5.3 废代码的删除 235

10.5.4 循环优化 236

习题 237

第11章 存储管理 239

11.1 全局分配策略 239

11.2 动态分配 242

11.2.1 栈式分配 242

11.2.2 堆式分配 243

11.3 存储空间的回收 245

11.3.1 基本垃圾收集算法 245

11.3.2 编译程序对垃圾收集程序的支持 246

11.3.3 引用计数 247

11.3.4 标记和扫描 248

11.3.5 两空间复制 249

11.3.6 紧缩 250

11.4 参数传递 250

11.4.1 值调用 251

11.4.2 引用调用 251

11.4.3 复写-恢复调用 251

11.4.4 换名调用 251

习题 252

第12章 目标代码生成 254

12.1 代码生成程序设计的有关问题 254

12.1.1 代码生成程序的输入 254

12.1.2 目标程序 255

12.1.3 存储管理 255

12.1.4 指令选择 255

12.1.5 寄存器分配 256

12.1.6 计算顺序的选择 257

12.1.7 代码生成的方法 257

12.2 目标机器MMIX 257

12.3 MMIX的汇编语言 274

12.4 MMIXAL目标代码的生成 279

12.4.1 表达式逆波兰表示的翻译 279

12.4.2 表达式三元式的翻译 280

12.4.3 表达式四元组形成的翻译 280

12.4.4 表达式的翻译 281

12.4.5 表达式的语法树形式的翻译 282

12.4.6 各种语句的翻译 282

习题 284

第13章 面向对象语言的编译 286

13.1 对象及其编译 286

13.2 对象的特征 287

习题 294

第14章 并行语言的编译 296

14.1 并行机和并行计算的提出 296

14.2 并行程序设计 298

14.2.1 共享变量和管程 299

14.2.2 消息传送模型 300

14.3 面向对象的语言 301

14.4 Linda元组空间 301

14.5 数据并行语言 303

14.6 隐式并行程序的代码生成 304

14.6.1 区域的类型 305

14.6.2 区域的形成 306

14.6.3 区域的几个调度算法 309

习题 309

第15章 网格计算的编译 310

15.1 网格计算的兴起与其内涵 310

15.2 网格计算模型 311

15.2.1 分组路由 312

15.2.2 线性阵列中的分组路由 313

15.3 网格计算的编译 315

习题 316

参考文献 318