图书介绍
程序设计语言与编译:语言的设计和实现 第4版PDF|Epub|txt|kindle电子书版本网盘下载
![程序设计语言与编译:语言的设计和实现 第4版](https://www.shukui.net/cover/73/34406107.jpg)
- 王晓斌,陈文宇,余盛季,屈鸿,田玲编著;龚天富审 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121254826
- 出版时间:2015
- 标注页数:322页
- 文件大小:52MB
- 文件页数:333页
- 主题词:程序语言-高等学校-教材
PDF下载
下载说明
程序设计语言与编译:语言的设计和实现 第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
习题127
第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
习题281
第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
习题3108
第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
习题4129
下篇 程序设计语言的实现(编译)130
第5章 编译概述130
5.1 引言130
5.2 翻译和编译130
5.3 解释131
5.4 编译步骤131
习题5133
第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
习题6154
第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 扩充的BNF164
7.4 预测分析法166
7.4.1 预测分析过程166
7.4.2 预测分析表的构造168
7.4.3 LL(1)文法171
7.4.4 非LL(1)文法172
习题7172
第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
习题8204
第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
习题9228
第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
习题10248
第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
习题11266
第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 Machine277
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