《程序设计语言编译方法》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:肖军模编著
  • 出 版 社:大连:大连理工大学出版社
  • 出版年份:1995
  • ISBN:756110099X
  • 页数:477 页
图书介绍:

第一章 引言 1

1.1 计算机的语言层次与翻译 1

1.2 编译的阶段(phase) 3

1.3 编译的遍(pass) 7

1.4 SIMPLE编译的结构设计 8

第二章 编译基础 10

2.1 字母表、串和语言 10

2.2 文法的引例 11

2.3 文法的形式定义 13

2.4 文法的分类 15

2.5 正规文法和有穷自动机 17

2.5.1 正规集与正规文法 17

2.5.2 有穷自动机 19

2.5.3 正规文法与有穷自动机 24

2.5.4 正规文法和正规式 26

2.6 正规式、NFA和DFA之间的等价变换 28

2.6.1 从正规式构造NFA 29

2.6.2 NFA的确定化 31

2.6.3 DFA的最小化 34

2.7 上下文无关文法与下推自动机 39

2.7.1 上下文无关文法 39

2.7.2 上下文无关文法的变换 42

2.7.3 语法树与文法的二义性 45

2.7.4 下推自动机 47

习题 52

第三章 程序设计语言的构造基础与定义 56

3.1 程序设计语言的构造基础 56

3.1.1 对象的名字、属性与汇聚 56

3.1.2 数据型对象及其存贮表示 59

3.1.3 运行时的存贮管理 64

3.1.4 运算及运算的复合 65

3.1.5 运算的顺序控制 66

3.1.6 参数传递 67

3.2 程序设计语言的定义 72

3.2.1 程序语言的语法定义 73

3.2.2 程序语言的语义定义 83

3.3 SIMPLE语言的主要成分 86

习题 86

附录SIMPLE语言的定义 89

第四章 词法分析 93

4.1 单词的种类与机内表示法 93

4.1.1 单词的分类 93

4.1.2 单词的机内表示法 94

4.2 扫描器的任务与设计考虑 97

4.3 扫描器的设计 99

4.3.1 扫描器的界面与数据结构 99

4.3.2 扫描器的数据流图 101

4.3.3 扫描器的详细设计 104

4.4 扫描器的其它设计技术 112

4.4.1 有穷自动机技术 112

4.4.2 正规式技术 116

4.5 某些高级语言的词法分析问题 117

4.6 词法分析阶段的错误处理 119

4.7 扫描器的自动生成原理 121

上机作业:实现SIMPLE扫描器 126

习题 126

第五章 语法分析 129

5.1 自顶向下分析法 130

5.1.1 自顶向下分析法中的问题研究 130

5.1.2 左递归与回溯问题 132

5.1.3 LL(1)文法的定义 135

5.1.4 LL(1)文法的判别 139

5.1.5 LL(1)文法的讨论 142

5.2 递归下降法 143

5.3 LL(1)分析法 148

5.4 自底向上分析法 153

5.4.1 自底向上分析法中的问题研究 153

5.4.2 句柄的定义与识别方法 156

5.5 算符优先分析技术 161

5.5.1 算符优先文法 162

5.5.2 算符优先矩阵 166

5.5.3 算符优先分析法的实现问题 171

5.5.4 算符优先分析的数据流图与模块结构图 175

5.5.5 算符优先分析技术的改进 179

5.6 LR分析技术 182

5.6.1 概述 182

5.6.2 LR(0)分析表的构造方法 184

5.6.3 SLR(1)分析表的构造方法 191

5.6.4 LR分析器总控程序 195

5.7 语法分析中的错误处理 198

5.8 各种语法分析技术的比较 200

5.9 语法分析器自动生成的原理 203

5.9.1 文法定义语言的功能 203

5.9.2 其它文法类分析表的自动生成问题 207

习题 208

第六章 语法制导翻译技术 215

6.1 语法制导翻译概述 215

6.2 中间代码 217

6.3 自底向上的语法制导翻译 219

6.3.1 自底向上翻译的特点 219

6.3.2 说明语句的翻译 222

6.3.3 简单赋值句的翻译 225

6.3.4 布尔表达式的翻译 228

6.3.5 IF语句的翻译 236

6.3.6 REPEAT语句的翻译 239

6.3.7 FOR循环语句的翻译 241

6.4 自顶向下的语法制导翻译 243

6.4.1 递归下降的语法制导翻译 243

6.4.2 LL(1)语法制导翻译 248

6.5 属性文法与属性翻译 253

6.5.1 属性文法与L_属性文法 253

6.5.2 属性计值规则的改造与属性翻译 257

6.6 SIMPLE语言的语法制导翻译程序的设计 265

6.7 某些复杂语言成分的翻译 279

6.7.1 分程序结构的符号表 279

6.7.2 数组变量说明的翻译 283

6.7.3 过程语句的翻译 284

6.7.4 过程调用语句和返回语句的翻译 286

6.7.5 复杂赋值句的翻译 288

6.7.6 CASE语句的翻译 293

6.7.7 输入输出语句的翻译 295

6.8 P-代码 298

上机作业:实现SIMPLE语法制导翻译程序 301

习题 301

第七章 运行时的存贮分配 307

7.1 数据区的内容 308

7.2 静态存贮分配 310

7.3 栈式存贮分配 314

7.3.1 栈式存贮管理和过程数据区格式 314

7.3.2 运行时地址的计算 322

7.3.3 过程调用与返回语句的目标代码 323

7.3.4 过程的目标代码结构和运行栈的管理 326

7.3.5 递归过程的调用 332

7.4 堆式存贮分配 334

7.4.1 堆空间的分配管理 336

7.4.2 堆空间的释放与敛集 339

习题 343

第八章 代码优化 347

8.1 局部优化 347

8.1.1 基本块与程序控制流图的构造 348

8.1.2 适合于优化的中间代码 352

8.2 合并已知量 355

8.3 利用公共子表达式和消除无用赋值 366

8.4 其它优化技术介绍 374

上机作业:调试SIMPLE代码优化程序(选做) 377

习题 377

第九章 目标代码生成 380

9.1 目标机 380

9.2 各类四元式的翻译方法 383

9.3 寄存器分配与基本块代码的生成 385

9.3.1 引用信息与活跃信息 385

9.3.2 寄存器的分配问题 388

9.3.3 基本块的代码生成算法 389

9.4 DAG的目标代码生成 392

9.5 SIMPLE目标代码生成器的设计 399

9.6 目标代码的其它优化技术 403

9.6.1 窥孔优化 403

9.6.2 区域内寄存器的分配 404

上机作业:实现SIMPLE代码生成器 406

习题 406

第十章 运行准备 409

10.1 装配程序 410

10.1.1 绝对装配程序 410

10.1.2 重定位装配程序 411

10.2 外部访问的辨认 416

10.3 连接程序(LINKER) 417

10.4 库管理 423

10.5 存贮分配 424

习题 427

部分习题参考答案 429

参考文献 475