图书介绍
自制编程语言 基于C语言PDF|Epub|txt|kindle电子书版本网盘下载
![自制编程语言 基于C语言](https://www.shukui.net/cover/13/31356537.jpg)
- 郑钢著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115487377
- 出版时间:2018
- 标注页数:438页
- 文件大小:150MB
- 文件页数:446页
- 主题词:C语言-程序设计
PDF下载
下载说明
自制编程语言 基于C语言PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第0章 一些可能令人迷惑的问题1
0.0成功的基石不是坚持,而是“不放弃”1
0.1 你懂编程语言的“心”吗2
0.2 编程语言的来历2
0.3 语言一定要用更底层的语言来编写吗2
0.4 编译型程序和脚本程序的异同8
0.5 脚本语言的分类10
0.6 为什么CPU要用数字而不是字符串作为指令11
0.7 为什么脚本语言比编译型语言慢11
0.8 既然脚本语言比较慢,为什么大家还要用12
0.9 什么是中间代码12
0.10 什么是编译器的前端、后端13
0.11 词法分析、语法分析、语义分析和生成代码并不是串行执行13
0.12 什么是符号表14
0.13 什么是关系中的闭包14
0.14 什么是程序中的闭包15
0.15 什么是字母表16
0.16 什么是语言17
0.17 正规式就是正则表达式17
0.18 什么是正规(表达)式和正规集17
0.19 什么是有穷自动机18
0.20 有穷自动机与词法分析的关系19
0.21 词法分析用有穷自动机(有穷状态自动机)的弊端19
0.22 什么是文法20
0.23 BNF和EBNF,非终结符和终结符,开始符号及产生式21
0.24 什么是句型、句子、短语23
0.25 什么是语法分析24
0.26 语法分析中的推导和归约为什么都要最“左”25
0.27 什么是语义分析26
0.28 什么是语法制导27
0.29 词法分析器吃的是lex,挤出来的是token27
0.30 什么是“遍”28
0.31 文法为什么可以变换28
0.32 为什么消除左递归和提取左因子28
0.33 FIRST集、FOLLOW集、LL(1)文法29
0.34 最右推导、最左归约、句柄31
0.35 算符优先分析法32
0.36 算符优先文法33
0.37 非终结符中常常定义的因子和项是什么33
0.38 什么是抽象语法树33
0.39 编译器如何使用或实现文法中的产生式34
0.40 程序计数器pc与ip的区别35
第1章 设计一种面向对象脚本语言36
1.1 脚本语言的功能36
1.2 关键字37
1.3 脚本的执行方式38
1.4 “纯手工”的开发环境38
1.5 定义sparrow语言的文法38
第2章 实现词法分析器46
2.1 柔性数组46
2.2 什么是字节序47
2.3 一些基础的数据结构(本节源码stepByStep/c2/a)48
2.4 定义虚拟机结构(本节源码stepByStep/c2/b)56
2.5 实现源码读取(本节源码stepByStep/c2/c)57
2.6 unicode与UTF-859
2.6.1 什么是unicode59
2.6.2 什么是UTF-859
2.6.3 UTF-8编码规则60
2.6.4 实现UTF-8编码、解码(本节源码stepByStep/c2/d)61
2.7 实现词法分析器parser(本节源码stepByStep/c2/e)66
2.7.1 lex和token66
2.7.2 字符串和字符串内嵌表达式66
2.7.3 单词识别流程67
2.7.4 定义token和parser68
2.7.5 解析关键字及获取字符71
2.7.6 解析标识符和unicode码点73
2.7.7 解析字符串、内嵌表达式、转义字符75
2.7.8 跳过注释和空行77
2.7.9 获取token79
2.7.10 token匹配和初始化parser84
2.8 构建主程序(本节源码stepByStep/c2/f)85
2.9 编译、测试(本节源码stepByStep/c2/f)88
2.9.1 一个简单的makefile88
2.9.2 测试paser92
第3章 类与对象95
3.1 对象在C语言中的概貌95
3.2 实现对象头(本节源码stepByStep/c3/a)96
3.3 实现class定义(本节源码stepByStep/c3/a)99
3.4 实现字符串对象(本节源码stepByStep/c3/a)101
3.5 模块对象和实例对象(本节源码stepByStep/c3/a)103
3.6 upvalue、openUpvalue和closedUpvalue106
3.7 实现函数对象、闭包对象与调用框架(本节源码stepByStep/c3/a)107
3.8 完善词法分析器之数字解析(本节源码stepByStep/c3/b)111
3.9 完善词法分析器之字符串解析和获取token(本节源码stepByStep/c3/b)114
3.10 最终版词法分析器的功能验证(本节源码stepByStep/c3/b)116
3.11 实现list列表对象(本节源码stepByStep/c3/c)118
3.12 range对象(本节源码stepByStep/c3/c)121
3.13 迟到的class.c(本节源码stepByStep/c3/c)122
3.14 map对象(本节源码stepByStep/c3/c)124
3.14.1 哈希表124
3.14.2 map对象头文件及entry125
3.14.3 冲突探测链与伪删除126
3.14.4 map对象的实现128
3.15 线程对象(本节源码stepByStep/c3/c)134
3.15.1 线程、协程浅述134
3.15.2 运行时栈137
3.15.3 用户线程的实现138
第4章 原生方法及基础实现142
4.1 解释器流程(本节源码stepBystep/c4/a)142
4.2 符号表144
4.2.1 模块的符号表144
4.2.2 类方法的符号表144
4.2.3 模块变量符号表146
4.2.4 局部变量符号表147
4.2.5 常量符号表147
4.3 方法在运行时栈中的参数147
4.4 定义模块变量(本节源码stepByStep/c4/b)148
4.5 原生方法(本节源码stepByStep/c4/b)154
4.5.1 定义裸类154
4.5.2 定义返回值与方法绑定的宏155
4.5.3 定义原生方法157
4.5.4 符号表操作159
4.5.5 定义类、绑定方法、绑定基类160
4.6 元类及实现(本节源码stepByStep/c4/b)161
4.6.1 meta-class类、class类、object类161
4.6.2 创建元类,绑定类方法163
4.7 加载模块(本节源码stepByStep/c4/c)164
4.8 虚拟机简介166
4.8.1 虚拟机分类及优缺点166
4.8.2 为什么要采用虚拟机168
4.8.3 虚拟机的简单优化170
4.9 字节码171
第5章 自上而下算符优先——TDOP177
5.1 自上而下算符优先——TDOP177
5.2 来自Douglas Crockford的教程177
5.3 TDOP原理194
5.3.1 一些概念194
5.3.2 一个小例子196
5.3.3 expression的思想197
5.3.4 while(rbp<token.lbp)的意义200
5.3.5 进入expression时当前token的类别201
5.3.6 TDOP总结202
第6章 实现语法分析与语义分析204
6.1 定义指令(本节源码stepByStep/c6/a)204
6.2 核心脚本(本节源码stepByStep/c6/a)206
6.3 写入指令(本节源码stepByStep/c6/a)212
6.4 编译模块(本节源码stepByStep/c6/a)216
6.5 语义分析的本质218
6.6 注册编译函数(本节源码stepByStep/c6/b)218
6.7 赋值运算的条件221
6.8 实现expression及其周边(本节源码stepByStep/c6/c)223
6.9 局部变量作用域管理228
6.10 变量声明、中缀、前缀及混合运算符方法签名(本节源码stepByStep/c6/d)229
6.11 解析标识符(本节源码stepByStep/c6/e)233
6.11.1 处理参数列表及相关233
6.11.2 实现运算符和标识符的签名函数235
6.11.3 upvalue的查找与添加239
6.11.4 变量的加载与存储242
6.11.5 编译代码块及结束编译单元243
6.11.6 各种方法调用246
6.11.7 标识符的编译249
6.12 编译内嵌表达式(本节源码stepByStep/c6/f)256
6.13 编译bool及null(本节源码stepByStep/c6/g)258
6.14 this、继承、基类(本节源码stepByStep/c6/h)259
6.15 编译小括号、中括号及list列表字面量(本节源码stepByStep/c6/i)260
6.16 编译方法调用和map字面量(本节源码stepByStep/c6/j)263
6.17 编译数学运算符(本节源码stepByStep/c6/k)266
6.18 编译变量定义(本节源码stepByStep/c6/l)270
6.19 编译语句274
6.19.1 编译if语句(本节源码stepByStep/c6/m)274
6.19.2 编译while语句(本节源码stepByStep/c6/n)275
6.19.3 编译return、break和continue语句(本节源码stepByStep/c6/o)280
6.19.4 编译for循环语句(本节源码stepByStep/c6/p)284
6.19.5 编译代码块及单一语句(本节源码stepByStep/c6/q)288
6.20 编译类定义(本节源码stepByStep/c6/r)289
6.20.1 方法的声明与定义289
6.20.2 构造函数与创建对象291
6.20.3 编译方法293
6.20.4 编译类定义296
6.21 编译函数定义(本节源码stepByStep/c6/s)298
6.22 编译模块导入(本节源码stepByStep/c6/t)300
第7章 虚拟机306
7.1 创建类与堆栈框架(本节源码stepByStep/c7/a)306
7.2 upvalue的创建与关闭(本节源码stepByStep/c7/b)309
7.3 修正操作数(本节源码stepByStep/c7/c)312
7.4 执行指令(本节源码stepByStep/c7/d)314
7.4.1 一些基础工作314
7.4.2 解码、译码、执行(本节源码stepByStep/c7/d)316
7.5 运行虚拟机(本节源码stepByStep/c7/e)334
第8章 内建类及其方法337
8.1 Bool类及其方法(本节源码stepByStep/c8/a)337
8.2 线程类及其方法(本节源码stepByStep/c8/b)338
8.3 函数类及其方法和函数调用重载(本节源码stepByStep/c8/c)345
8.4 Null类及其方法(本节源码stepByStep/c8/d)347
8.5 Num类及其方法(本节源码stepByStep/c8/e)348
8.6 String类及其方法(本节源码stepByStep/c8/f)355
8.7 List类及其方法(本节源码stepByStep/c8/g)369
8.8 Map类及其方法(本节源码stepByStep/c8/h)374
8.9 range类及其方法(本节源码stepByStep/c8/i)380
8.10 System类及其方法(本节源码stepByStep/c8/j)383
8.11 收尾与测试(本节源码stepByStep/c8/k)388
第9章 垃圾回收393
9.1 垃圾回收浅述393
9.2 理论基础395
9.3 标记—清扫回收算法396
9.4 一些基础结构(本节源码stepByStep/c9/a)397
9.5 实现GC(本节源码stepByStep/c9/a)400
9.6 添加临时根对象与触发GC411
第10章 命令行及调试415
10.1 释放虚拟机(本节源码stepByStep/c10/a)415
10.2 简单的命令行界面(本节源码stepByStep/c10/a)415
10.3 调试(本节源码stepByStep/c10/b)417