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

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

第一章 引言 1

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

1.2编译的阶段(phase) 2

1.3编译的遍(pass) 4

1.4 SIMPLE编译的结构设计 5

第二章 编译基础 6

2.1字母表、串和语言 6

2.2文法的引例 7

2.3文法的形式定义 8

2.4文法的分类 9

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

2.5.1 正规集与正规文法 10

2.5.2有穷自动机 11

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

2.5.4 正规文法和正规式 15

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

2.6.1 从正规式构造NFA 16

2.6.2 NFA的确定化 18

2.6.3 DFA的最小化 19

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

2.7.1 上下文无关文法 21

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

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

2.7.4 下推自动机 26

习题 28

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

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

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

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

3.1.3 运行时的存贮管理 36

3.1.4 运算及运算的复合 36

3.1.5 运算的顺序控制 37

3.1.6参数传递 37

3.2程序设计语言的定义 40

3.2.1 程序语言的语法定义 40

3.2.2 程序语言的语义定义 45

3.3 SIMPLE语言的主要成分 47

习题 47

第四章 词法分析 51

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

4.1.1 单词的分类 51

4.1.2单词的机内表示法 51

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

4.3扫描器的设计 54

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

4.3.2 扫描器的数据流图 55

4.3.3 扫描器的详细设计 57

4.4扫描器的其他设计技术 62

4.4.1 有穷自动机技术 62

4.4.2正规式技术 64

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

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

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

4.7.1 LEX语言的基本语句与功能 67

4.7.2 LEX编译器原理 69

习题 70

第五章 语法分析 72

5.1自顶向下分析法 72

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

5.1.2 左递归与回溯问题 74

5.1.3 LL(1)文法的定义 75

5.1.4 LL(1)文法的判别 78

5.1.5 LL(1)文法的讨论 79

5.2递归下降法 80

5.3 LL(1)分析法 83

5.4自底向上分析法 86

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

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

5.5算符优先分析技术 90

5.5.1 算符优先文法 91

5.5.2算符优先矩阵 93

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

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

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

5.6 LR分析技术 102

5.6.1 概述 102

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

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

5.6.4 LR(1)分析表的构造方法 109

5.6.5 LALR分析表的构造方法 114

5.6.6 二义文法的LR分析法 120

5.6.7 LR分析器总控程序 122

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

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

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

5.9.1 文法定义语言的功能 126

5.9.2其他文法类分析表的自动生成问题 128

习题 129

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

6.1语法制导翻译概述 133

6.2中间代码 134

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

6.3.1 自底向上翻译的特点 135

6.3.2说明语句的翻译 136

6.3.3简单赋值句的翻译 139

6.3.4布尔表达式的翻译 140

6.3.5 IF语句的翻译 146

6.3.6 REPEAT语句的翻译 148

6.3.7 FOR循环语句的翻译 148

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

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

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

6.5属性文法与属性翻译 156

6.5.1属性文法与L_属性文法 156

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

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

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

6.7.1 分程序结构的符号表 172

6.7.2数组变量说明的翻译 174

6.7.3过程语句的翻译 176

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

6.7.5 复杂赋值句的翻译 178

6.7.6 CASE语句的翻译 181

6.7.7 输入输出语句的翻译 182

6.8 P-代码 183

习题 186

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

7.1数据区的内容 191

7.2静态存贮分配 191

7.3栈式存贮分配 194

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

7.3.2运行时地址的计算 198

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

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

7.3.5 递归过程的调用 204

7.4堆式存贮分配 206

7.4.1 堆空间的分配管理 206

7.4.2堆空间的释放与敛集 208

习题 210

第八章 程序控制流与数据流分析 213

8.1程序控制流图与循环分析 213

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

8.1.2查找循环结构 215

8.2到达-定值数据流分析 217

8.2.1 引用与定值(ud)链 217

8.2.2到达-定值数据流方程 218

8.3活跃变量分析 219

8.3.1 活跃变量的教据流方程 219

8.3.2定值-引用(du)链及其数据流方程 220

8.4可用表达式分析 220

8.5非常忙表达式分析 222

8.6模块间数据流分析 222

第九章 代码优化 224

9.1局部优化 224

9.1.1 局部优化的种类 224

9.1.2适合于优化的中间代码 225

9.2合并已知量 226

9.3利用公共子表达式和消除无用赋值 232

9.4循环优化技术 238

9.4.1代码外提 239

9.4.2 强度削弱和变换循环变量 240

9.4.3循环展开和循环合并 242

习题 243

第十章 目标代码生成 245

10.1 目标机 245

10.2各类四元式的翻译方法 246

10.3寄存器分配与基本块代码的生成 248

10.3.1 引用信息与活跃信息 248

10.3.2寄存器的分配问题 249

10.3.3基本块的代码生成算法 250

10.4 DAG的目标代码生成 252

10.5 SIMPLE目标代码生成器的设计 256

10.6 目标代码的其他优化技术 259

10.6.1窥孔优化 259

10.6.2 区域内寄存器的分配 259

习题 260

第十一章 运行准备 262

11.1装配程序 262

11.1.1绝对装配程序 262

11.1.2重定位装配程序 263

11.2外部访问的辨认 265

11.3连接程序(LINKER) 266

11.4库管理 270

11.5存贮分配 271

习题 272

部分习题参考答案 274

参考文献 298