《程序设计语言编译方法》求取 ⇩

第一章引言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 从正规式构造NFA29

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.6LR分析技术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

1995《程序设计语言编译方法》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由肖军模编著 1995 大连:大连理工大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。