图书介绍

程序设计语言与编译:语言的设计和实现 第4版pdf电子书版本下载

程序设计语言与编译:语言的设计和实现  第4版
  • 王晓斌,陈文宇,余盛季,屈鸿,田玲编著;龚天富审 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121254826
  • 出版时间:2015
  • 标注页数:322页
  • 文件大小:52MB
  • 文件页数:333页
  • 主题词:程序语言-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快] 温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页 直链下载[便捷但速度慢]   [在线试读本书]   [在线获取解压码]

下载说明

程序设计语言与编译:语言的设计和实现 第4版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

上篇 程序设计语言的设计 1

第1章 绪论 1

1.1 引言 1

1.2 强制式语言 2

1.2.1 程序设计语言的分类 2

1.2.2 冯·诺依曼体系结构 3

1.2.3 绑定和绑定时间 4

1.2.4 变量 5

1.2.5 虚拟机 9

1.3 程序单元 10

1.4 程序设计语言发展简介 12

1.4.1 早期的高级语言 12

1.4.2 早期语言的发展阶段 14

1.4.3 概念的集成阶段 15

1.4.4 再一次突破 16

1.4.5 大量的探索 17

1.4.6 Ada语言 17

1.4.7 第四代语言 18

1.4.8 网络时代的语言 18

1.4.9 新一代程序设计语言 22

1.4.10 面向未来的汉语程序设计语言 22

1.4.11 总结 24

习题1 27

第2章 数据类型 28

2.1 引言 28

2.2 内部类型 29

2.3 用户定义类型 30

2.3.1 笛卡儿积 31

2.3.2 有限映像 31

2.3.3 序列 32

2.3.4 递归 33

2.3.5 判定或 33

2.3.6 幂集 33

2.4 Pascal语言数据类型结构 35

2.4.1 非结构类型 35

2.4.2 聚合构造 37

2.4.3 指针 41

2.5 Ada语言数据类型结构 42

2.5.1 标量类型 43

2.5.2 组合类型 44

2.6 C语言数据类型结构 48

2.6.1 非结构类型 48

2.6.2 聚合构造 50

2.6.3 指针 53

2.6.4 空类型 53

2.7 Java语言的数据类型 54

2.7.1 内部类型 54

2.7.2 用户定义类型 55

2.8 抽象数据类型 55

2.8.1 SIMULA 67语言的类机制 56

2.8.2 CLU语言的抽象数据类型 60

2.8.3 Ada语言的抽象数据类型 61

2.8.4 Modula 2语言的抽象数据类型 64

2.8.5 C++语言的抽象数据类型 66

2.8.6 Java抽象数据类型 69

2.9 类型检查 71

2.10 类型转换 72

2.11 类型等价 73

2.12 实现模型 75

2.12.1 内部类型和用户定义的非结构类型实现模型 75

2.12.2 结构类型实现模型 76

习题2 81

第3章 控制结构 82

3.1 引言 82

3.2 语句级控制结构 82

3.2.1 顺序结构 82

3.2.2 选择结构 83

3.2.3 重复结构 86

3.2.4 语句级控制结构分析 88

3.2.5 用户定义控制结构 90

3.3 单元级控制结构 90

3.3.1 显式调用从属单元 90

3.3.2 隐式调用单元——异常处理 94

3.3.3 SIMULA 67语言协同程序 103

3.3.4 并发单元 104

习题3 108

第4章 程序语言的设计 110

4.1 语言的定义 110

4.1.1 语法 110

4.1.2 语义 113

4.2 文法 115

4.2.1 文法的定义 115

4.2.2 文法的分类 117

4.2.3 文法产生的语言 118

4.2.4 语法树 120

4.3 语言的设计 121

4.3.1 表达式的设计 122

4.3.2 语句的设计 123

4.3.3 程序单元的设计 125

4.3.4 程序的设计 126

4.4 语言设计实例 126

4.5 一些设计准则 128

习题4 129

下篇 程序设计语言的实现(编译) 130

第5章 编译概述 130

5.1 引言 130

5.2 翻译和编译 130

5.3 解释 131

5.4 编译步骤 131

习题5 133

第6章 词法分析 134

6.1 词法分析概述 134

6.2 单词符号的类别 135

6.3 词法分析器的输出形式 136

6.4 词法分析器的设计 136

6.5 符号表 142

6.5.1 符号表的组织 142

6.5.2 常用的符号表结构 143

6.6 Lex介绍 145

6.6.1 Lex原理 145

6.6.2 Lex进阶 149

6.6.3 Lex例子 151

习题6 154

第7章 自上而下的语法分析 155

7.1 引言 155

7.2 回溯分析法 156

7.2.1 回溯的原因 157

7.2.2 提取公共左因子 159

7.2.3 消除左递归 160

7.3 递归下降分析法 162

7.3.1 递归下降分析器的构造 162

7.3.2 扩充的BNF 164

7.4 预测分析法 166

7.4.1 预测分析过程 166

7.4.2 预测分析表的构造 168

7.4.3 LL(1)文法 171

7.4.4 非LL(1)文法 172

习题7 172

第8章 自下而上的语法分析 174

8.1 引言 174

8.1.1 分析树 174

8.1.2 规范归约、短语和句柄 176

8.2 算符优先分析法 177

8.2.1 算符优先文法 177

8.2.2 算符优先分析算法 178

8.2.3 算符优先关系表的构造 181

8.3 LR分析法 183

8.3.1 LR分析过程 184

8.3.2 活前缀 186

8.3.3 LR(0)项目集规范族 186

8.3.4 LR(0)分析表的构造 190

8.3.5 SLR(1)分析表的构造 191

8.4 Yacc介绍 194

8.4.1 Yacc原理 195

8.4.2 Yacc进阶 199

8.4.3 Yacc例子 202

习题8 204

第9章 语义分析和中间代码生成 206

9.1 语义分析概论 206

9.1.1 语义分析的任务 206

9.1.2 语法制导翻译 206

9.2 中间代码 207

9.3 语义变量和语义函数 209

9.4 说明语句的翻译 210

9.5 赋值语句的翻译 211

9.5.1 只含简单变量的赋值语句的翻译 211

9.5.2 含数组元素的赋值语句的翻译 213

9.6 控制语句的翻译 218

9.6.1 布尔表达式的翻译 218

9.6.2 无条件转移语句的翻译 219

9.6.3 条件语句的翻译 221

9.6.4 while语句的翻译 224

9.6.5 for语句的翻译 226

9.6.6 过程调用的翻译 227

习题9 228

第10章 代码优化和目标代码生成 229

10.1 局部优化 229

10.1.1 优化的定义 229

10.1.2 基本块的划分 229

10.1.3 程序流图 230

10.1.4 基本块内的优化 232

10.2 全局优化 233

10.2.1 循环的定义 233

10.2.2 必经结点集 234

10.2.3 循环的查找 234

10.2.4 循环的优化 235

10.3 并行优化 237

10.3.1 数据的依赖关系分析 237

10.3.2 向量化代码生成 242

10.3.3 反相关与输出相关的消除 243

10.3.4 标量扩张 244

10.3.5 循环条块化 244

10.4 目标代码生成 245

10.4.1 一个计算机模型 245

10.4.2 简单的代码生成方法 246

10.4.3 循环中的寄存器分配 246

习题10 248

第11章 运行时存储空间的组织 250

11.1 程序的存储空间 250

11.1.1 代码空间 250

11.1.2 数据空间 250

11.1.3 活动记录 251

11.1.4 变量的存储分配 252

11.1.5 存储分配模式 253

11.2 静态分配 254

11.3 栈式分配 257

11.3.1 只含半静态变量的栈式分配 257

11.3.2 半动态变量的栈式分配 258

11.3.3 非局部环境 259

11.3.4 非局部环境的引用 261

11.4 参数传递 262

11.4.1 数据参数传递 263

11.4.2 子程序参数传递 265

习题11 266

第12章 MINI语言编译器的设计与实现 268

12.1 MINI语言概述 268

12.2 MINI编译器概述 269

12.3 词法分析 270

12.3.1 概述 270

12.3.2 MINI语言词法分析程序的实现 270

12.3.3 关键字与标识符的识别 271

12.3.4 为标识符分配空间 272

12.4 语法分析 272

12.4.1 概述 272

12.4.2 MINI语言的语法 272

12.4.3 MINI语言语法分析程序的实现 273

12.5 语义分析 273

12.5.1 概述 273

12.5.2 MINI语言的语义 274

12.5.3 MINI语言的符号表 274

12.5.4 MINI语言语义分析程序的实现 275

12.6 运行时环境 275

12.6.1 概述 275

12.6.2 MINI语言的运行时环境 275

12.7 代码生成 276

12.7.1 概述 276

12.7.2 目标机器——MINI Machine 277

12.7.3 MINI代码生成器的实现 280

12.8 代码优化 283

12.8.1 将临时变量放入寄存器 283

12.8.2 在寄存器中保存变量 284

12.8.3 优化测试表达式 285

12.9 MINI编译器的使用方法 285

12.10 进一步的工作 288

第13章 clang/LLVM编译器平台介绍 289

13.1 发展背景 289

13.2 clang架构 290

13.3 静态单赋值指令 291

13.4 代码转换过程 293

13.5 clang与GCC的比较 296

13.6 clang/LLVM特色 299

13.7 目录结构 300

附录A 形式语言与自动机简介 302

参考文献 321

精品推荐