当前位置:首页 > 工业技术
编译原理与技术
编译原理与技术

编译原理与技术PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:冯雁主编
  • 出 版 社:杭州:浙江大学出版社
  • 出版年份:2004
  • ISBN:7308038025
  • 页数:320 页
图书介绍:本书主要内容包括词法分析,上下文无关文法,自上而下和自下而上语法分析,语法制导翻译运行环境,代码生成和优化等。
《编译原理与技术》目录

第1章 引论 1

1.1 什么是编译程序 1

1.2 编译器的基本阶段 2

1.2.1 词法分析程序 3

1.2.2 语法分析程序 4

1.2.3 语义分析程序 5

1.2.4 中间代码生成器 6

1.2.5 代码优化程序 6

1.2.6 目标代码生成器 6

1.2.7 符号表管理 7

1.2.8 错误处理 8

1.3 与编译器有关的程序 8

1.3.1 解释程序 8

1.3.2 汇编程序 8

1.3.3 链接和装入程序 8

1.3.4 预处理器 9

1.3.5 调试程序 9

1.4 一个简单的编译程序 9

1.4.1 语言概述 9

1.4.2 词法分析程序 10

1.4.3 递归下降语法分析 14

1.4.4 中间代码生成及优化 16

练习 20

第2章 词法分析 22

2.1 扫描处理及缓冲 22

2.2 正规表达式 26

2.3 有限自动机 30

2.3.1 确定有限自动机 31

2.3.2 非确定有限自动机 37

2.4 从正则表达式到有限自动机 39

2.4.1 从正规式到NFA 39

2.4.2 从NFA到DFA 42

2.4.3 状态数最小化 46

2.5 词法分析中要解决的几个问题 47

2.6 利用LEX建立词法分析器 49

练习 58

第3章 上下文无关文法与语言 60

3.1 上下文无关文法的基本概念和定义 60

3.2 分析和推导 62

3.2.1 分析和推导 62

3.2.2 分析树 65

3.2.3 二义文法 66

3.3 文法的设计 68

3.3.1 验证由文法产生的语言 68

3.3.2 消除二义性 69

3.3.3 消除左递归 72

3.3.4 提取左因子 75

3.4 乔姆斯基层次及上下文无关文法的局限 77

练习 79

第4章 自顶向下语法分析 82

4.1 递归程序实现预测语法的分析器 82

4.2 非递归预测分析法 84

4.3 First集和Follow集概念及构造 86

4.4 预测分析表构造 90

4.5 LL(1)文法 92

4.6 预测分析中的错误恢复方法 95

练习 96

第5章 自下而上语法分析 101

5.1 自底向上方法概述 101

5.2 算符优先分析法 104

5.2.1 算符优先分析算法 106

5.2.2 优先函数 108

5.2.3 算符优先分析中的出错处理 109

5.3 LR语法分析器基本思想与概念 112

5.3.1 LR文法 116

5.4 SLR语法分析表构造 122

5.5 规范LR语法分析表构造 126

5.6 LALR语法分析表构造 130

5.7 LR语法分析表的压缩 136

5.8 LR语法分析中的错误恢复 139

5.9 二义性文法应用 141

5.9.1 使用优先级与结合规则解决动作的冲突 142

5.9.2 悬空else的二义性 144

5.9.3 特例产生式引起的二义性 145

5.10 语法分析器自动生成工具YACC 145

5.10.1 YACC工具介绍 145

5.10.2 用YACC处理二义性 148

5.10.3 用LEX建立YACC的词法分析器 150

5.10.4 YACC中的错误恢复 150

练习 152

第6章 语法制导翻译 156

6.1 语法制导定义 157

6.2 属性的计算 157

6.2.1 属性和属性语法 157

6.2.2 依赖图 162

6.2.3 计算次序 165

6.2.4 自底向上计算继承属性 172

6.2.5 临时属性的计算和外部数据结构 175

6.2.6 Knuth定理 180

6.3 类型检查 180

6.3.1 类型系统 181

6.3.2 类型表达式的等价 189

6.3.3 类型推论和类型检查 196

6.3.4 类型转换 199

6.3.5 重载 200

6.3.6 多态函数 200

6.4 符号表 202

6.4.1 符号表的表项和符号表的操作 202

6.4.2 声明和同层声明 203

6.4.3 符号表的数据结构 207

6.4.4 作用域规则和块结构 210

练习 214

第7章 运行时环境 219

7.1 存储组织及存储分配策略 219

7.2 静态分配 222

7.3 栈式 224

7.3.1 没有局部过程的基于栈的环境 225

7.3.2 带有局部过程的基于栈的运行时环境 232

7.3.3 带有过程参数的基于栈的运行时环境 235

7.4 堆式 238

7.5 参数传递 242

7.5.1 值传递 242

7.5.2 引用传递 243

7.5.3 值—结果传递 245

7.5.4 名字传递 245

练习 246

第8章 中间代码生成 250

8.1 中间语言 251

8.1.1 后缀式 251

8.1.2 图表示法 251

8.1.3 三地址代码 253

8.2 说明语句 257

8.2.1 过程中的说明语句 258

8.2.2 保留作用域信息 258

8.2.3 记录中的域名 261

8.3 赋值语句的翻译 261

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

8.3.2 数组元素的引用 262

8.3.3 记录中域的引用 269

8.4 布尔表达式的翻译 269

8.4.1 数值表示法 270

8.4.2 作为条件控制的布尔式表达翻译 272

8.5 控制语句的翻译 277

8.5.1 控制流语句 277

8.5.2 标号与goto语句 281

8.5.3 CASE语句的翻译 283

8.6 过程调用的处理 285

练习 287

第9章 代码生成和代码优化 289

9.1 代码生成器中的基本问题 289

9.2 目标机器 292

9.3 寄存器与临时单元的管理 293

9.4 一个简单的代码生成器 294

9.5 一个简单的寄存器分配方案 296

9.6 代码生成器的自动化技术 301

9.6.1 基于文法的代码生成器 304

9.7 代码优化 306

9.7.1 分析器优化 306

9.7.2 线性优化 306

9.7.3 语法树上的优化 310

练习 314

参考文献 319

返回顶部