《计算机系统设计原理》,本科计算机类《编译器设计原理》

原标题:本科计算机类《编译器设计原理》

6258fb603cf35bf2b78928350d6b1ecb.png

美国哥伦比亚大学的Alfred V. Aho教授在其经典名著《编译器:原理、技术与工具》的前言部分写道“编写编译器的原理和技术具有十分普遍的意义,以至于在每个计算机科学家的研究生涯中,本书中的原理和技术都会反复被用到”。

对于学习“编译原理”这门课的学生来说,除了可以通过课程学习掌握一些具体的基本理论、技术和算法之外,更重要的是能培养学生具备计算机学科通用的问题求解和系统设计能力,如问题抽象与形式化描述、复杂问题算法分析与设计、自顶向下逐步求精、自底向上分步求解、软硬件协同设计等。有了这些问题求解方法和系统设计能力将使学生在计算机专业领域内具备持续竞争力。

本书可作为计算机相关本科专业编译原理与编译技术的教材,也可供其他专业学生及工程技术人员参考。

目 录

第 1 章 编译器概述 ………1

1.1  程序设计语言发展史 ……1

1.2 语言翻译器 …………2

1.3 编译器结构 ………4

1.4 编译器构造方法 ……8

1.5 小结 ………10

习题 ……………………10

第2章 形式文法和形式语言 ………11

2.1 自然语言与形式语言 ………11

2.2 文法和语言的形式定义 ………12

2.2.1 一个自然语言的例子 …12

2.2.2 字母表和符号串 …………13

2.2.3 语言的非形式定义 ………14

2.2.4 语言的运算 ……………15

2.2.5 语言的描述 ……………15

2.2.6 文法的形式定义 ………16

2.2.7 推导与归约 ……………18

2.2.8 语言与文法 ……………19

2.3 文法和语言的分类 ………21

2.4 上下文无关文法的句型分析 …23

2.4.1 用上下文无关文法描述高级语言 ………23

2.4.2 句型推导与分析树 ……24

2.4.3 句子、文法和语言的二义性 27

2.4.4 二义文法的改造 ………27

2.5 小结 ……………29

习题 ………30

第3章 词法分析 ………………32

3.1 词法分析程序的设计 …………32

3.2 单词的描述—— 正规表达式 …34

3.3.1 有限自动机的定义 ………36

3.3.2 NFA到DFA的转换 ……39

3.3.3 DFA的最小化 …………42

3.4 正规表达式与有限自动机的等价性 ………46

3.5 词法分析程序的自动构造工具 …49

3.6 小结 ……………………………51

习题 ……51

第4章 语法分析 ………54

4.1 语法分析概述 ……54

4.2 自顶向下语法分析方法 ………56

4.2.1 不确定的自顶向下分析 ……56

4.2.2 确定的自顶向下分析 ……57

4.2.3 非 LL(1)文法到 LL(1)文法的等价变换 ………………62

4.2.4 无回溯递归下降分析法 …66

4.2.5 非递归预测分析器 ………68

4.2.6 预测分析中的错误处理 …71

4.3 自底向上语法分析—— LR分析 ………73

4.3.2 自底向上语法分析的实现方法——移进—归约法 …………74

4.3.3 LR分析器模型 ………75

4.3.4 构造LR(0)分析表 ……78

4.3.5 构造SLR(1)分析表 ………86

4.3.6  LR(1)和LALR(1)分析表的构造 ………88

4.4 语法分析程序的自动构造工具 93

4.5 小结 …………………95

习题 …………………………96

第5章 语法制导翻译技术 …………99

5.1 语义分析概述 ………99

5.2 语法制导定义 …………99

5.3 S -属性定义及其自底向上的属性计算 ………104

5.4 L -属性定义及其深度优先的属性计算 ………105

5.5 小结 …………………109

习题 ……………109

第6章 语义分析与中间代码生成 …111

6.1 类型检查 ……………111

6.2 说明语句的处理 …………114

6.3 中间语言 …………120

6.4 赋值语句的翻译 …………123

6.5 布尔表达式和控制流语句的翻译 ………128

6.6 回填技术 …………136

6.7 小结 ……141

习题 ……………142

第7章 代码优化 ……………143

7.1 代码优化概述 …………143

7.2 基本块与局部优化 …………145

7.3 控制流分析与循环优化 ……150

7.4 数据流分析与全局优化 ……154

7.5 小结 ………154

习题 ………………………155

第8章 目标代码运行时刻环境的组织 157

8.1 目标代码运行时刻环境 ……157

8.2 源语言相关问题讨论 ……158

8.3 运行时刻内存空间的组织 …161

8.4 运行时刻内存空间分配策略 162

8.4.1 静态存储分配 ………162

8.4.2 栈式存储分配 …………164

8.4.3 堆式存储分配 …………166

8.5 对非局部名字的访问 ………167

8.5.1 程序设计语言的作用域规则 167

8.5.2 分程序结构的处理 ……168

8.5.3 无嵌套过程语言的处理…170

8.5.4 有嵌套过程语言的处理 …170

8.6 小结 ……………174

习题 ……………………175

第9章 目标代码生成 …176

9.1 代码生成器概述 ……176

9.2 运行时刻内存空间管理的实现 179

9.3 一个简单的代码生成器 ………183

9.3.1 下次引用信息和活跃信息 …183

9.3.2 寄存器描述器和地址描述器 185

9.3.3 简单代码生成算法 …186

9.4 小结 …………190

习题 ………191

第10章 编译技术应用 …………192

10.1  DFA在网上购物平台中的应用…………192

10.2 广义LR分析方法在自然语言语法分析中的应用 ………194

附录 SMini——一个简单模型语言编译器 ………………201

一、S语言简介 ………………201

二、假想目标机及其指令集 …202

三、SMini设计与实现 …205

四、SMini操作与编译示例 …207

参考文献………216

c3d687f4005860baf9a5c7f5ee101c92.png

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值