注重体验与质量的电子书资源下载网站
分类于: 云计算&大数据 计算机基础
简介
自己动手写Python虚拟机 豆 0.0分
资源最后更新于 2020-08-23 16:28:16
作者:海纳
出版社:北京航空航天大学出版社
出版日期:2019-01
ISBN:9787512429758
文件格式: pdf
标签: 虚拟机 编译原理 python Python 编程语言
简介· · · · · ·
本书按内容分为六个部分,第一部分介绍语言虚拟机的基本概念,并实现字节码解释器;第二部分,实现内嵌类型,如整数、字符串、列表和字典等;第三部分,实现了函数;第四部分,实现自定义类、对象和方法;第五部分,实现垃圾回收,也就是自动内存管理;第六部分,模块和迭代。本书的章节内容之间都有很强的依赖性,后面的章节内容都是在前面章节的基础上去实现的,所以读者必须按部就班地从前向后阅读,才能保证阅读的流畅。
本书适合的人群包括:在校大学生(可以通过本书掌握很多计算机工作运行的核心知识),以及对编译器,编程语言感兴趣的人。
目录
第1章编程语言虚拟机1
1.1编程语言的发展1
1.2编程语言虚拟机2
1.3开发环境5
第2章编译流程6
2.1Python字节码6
2.2词法分析7
2.3文法分析10
2.4抽象语法树13
2.4.1构建AST14
2.4.2递归程序的本质16
2.4.3访问者模式21
2.4.4用Visitor重写AST29
第3章二进制文件结构32
3.1pyc文件格式32
3.2加载CodeObject34
3.2.1准备工具36
3.2.2创建CodeObject41
3.3整理工程结构47
3.4执行字节码49
第4章实现控制流55
4.1分支结构55
4.1.1条件判断56
4.1.2跳转59
4.1.3True、False和None60
4.2循环结构62
4.2.1变量62
4.2.2循环内的跳转67
第5章基本的数据类型75
5.1KlassOop二元结构75
5.2整数78
5.3字符串82
第6章函数和方法85
6.1函数85
6.1.1栈帧86
6.1.2创建FunctionObject89
6.1.3调用方法92
6.2变量和参数96
6.2.1LEGB规则96
6.2.2函数的参数104
6.2.3参数默认值107
6.3Native函数111
6.4方法115
第7章列表和字典122
7.1列表122
7.1.1列表的定义122
7.1.2操作列表126
7.2字典154
7.2.1字典的定义154
7.2.2操作字典157
7.3增强函数功能165
7.3.1灵活多变的函数参数165
7.3.2闭包和函数修饰器172
7.4总结179
第8章类和对象180
8.1类型对象180
8.1.1TypeObject180
8.1.2object185
8.1.3通过类型创建对象189
8.2自定义类型191
8.3创建对象196
8.4操作符重载206
8.5继承215
第9章垃圾回收223
9.1自动内存管理223
9.1.1概念定义223
9.1.2引用计数224
9.1.3图的知识226
9.1.4Tracing GC231
9.2复制回收234
9.2.1算法描述234
9.2.2算法实现235
9.2.3建堆237
9.2.4在堆中创建对象243
9.2.5垃圾回收247
第10章模块和库261
10.1import语句261
10.1.1ModuleObject262
10.1.2加载模块264
10.1.3from子句266
10.2builtin模块268
10.3加载动态库271
10.3.1定义接口27
10.3.2实现math module277
第11章迭代281
11.1异常281
11.1.1finally子句281
11.1.2break和continue287
11.1.3Exception291
11.2自定义迭代器类306
11.3Generator309
11.3.1yield语句309
11.3.2Generator对象311
11.4总结317
附录APython2字节码表318
附录B高级算法321
B.1字符串查找321
B.2排序算法325
B.2.1快速排序325
B.2.2选择排序328
B.2.3堆排序329
1.1编程语言的发展1
1.2编程语言虚拟机2
1.3开发环境5
第2章编译流程6
2.1Python字节码6
2.2词法分析7
2.3文法分析10
2.4抽象语法树13
2.4.1构建AST14
2.4.2递归程序的本质16
2.4.3访问者模式21
2.4.4用Visitor重写AST29
第3章二进制文件结构32
3.1pyc文件格式32
3.2加载CodeObject34
3.2.1准备工具36
3.2.2创建CodeObject41
3.3整理工程结构47
3.4执行字节码49
第4章实现控制流55
4.1分支结构55
4.1.1条件判断56
4.1.2跳转59
4.1.3True、False和None60
4.2循环结构62
4.2.1变量62
4.2.2循环内的跳转67
第5章基本的数据类型75
5.1KlassOop二元结构75
5.2整数78
5.3字符串82
第6章函数和方法85
6.1函数85
6.1.1栈帧86
6.1.2创建FunctionObject89
6.1.3调用方法92
6.2变量和参数96
6.2.1LEGB规则96
6.2.2函数的参数104
6.2.3参数默认值107
6.3Native函数111
6.4方法115
第7章列表和字典122
7.1列表122
7.1.1列表的定义122
7.1.2操作列表126
7.2字典154
7.2.1字典的定义154
7.2.2操作字典157
7.3增强函数功能165
7.3.1灵活多变的函数参数165
7.3.2闭包和函数修饰器172
7.4总结179
第8章类和对象180
8.1类型对象180
8.1.1TypeObject180
8.1.2object185
8.1.3通过类型创建对象189
8.2自定义类型191
8.3创建对象196
8.4操作符重载206
8.5继承215
第9章垃圾回收223
9.1自动内存管理223
9.1.1概念定义223
9.1.2引用计数224
9.1.3图的知识226
9.1.4Tracing GC231
9.2复制回收234
9.2.1算法描述234
9.2.2算法实现235
9.2.3建堆237
9.2.4在堆中创建对象243
9.2.5垃圾回收247
第10章模块和库261
10.1import语句261
10.1.1ModuleObject262
10.1.2加载模块264
10.1.3from子句266
10.2builtin模块268
10.3加载动态库271
10.3.1定义接口27
10.3.2实现math module277
第11章迭代281
11.1异常281
11.1.1finally子句281
11.1.2break和continue287
11.1.3Exception291
11.2自定义迭代器类306
11.3Generator309
11.3.1yield语句309
11.3.2Generator对象311
11.4总结317
附录APython2字节码表318
附录B高级算法321
B.1字符串查找321
B.2排序算法325
B.2.1快速排序325
B.2.2选择排序328
B.2.3堆排序329