《自制编程语言》郑钢

如何自学 占星术 占星教程网盘 塔罗牌教程百度网盘

《自制编程语言》郑钢【文字版_PDF电子书_】

《自制编程语言》封面图片

书名:自制编程语言
作者:郑钢
出版社:人民邮电出版社
译者:
出版日期:2018-9-1
页数:438
ISBN:9787115487377
8.3
豆瓣评分
孔网购买全网资源sm.nayona.cn

内容简介:

本书是一本专门介绍自制编程语言的图书,书中深入浅出地讲述了如何开发一门编程语言,以及运行这门编程语言的虚拟机。本书主要内容包括:脚本语言的功能、词法分析器、类、对象、原生方法、自上而下算符优先、语法分析、语义分析、虚拟机、内建类、垃圾回收、命令行及调试等技术。

本书适合程序员阅读,也适合对编程语言原理感兴趣的计算机从业人员学习。

作者简介:

郑钢,网名大刚,毕业于北京大学,前百度运维开发工程师,《操作系统真象还原》作者。

爱父母,爱老婆,爱运动,爱钻研。

目  录:

第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,挤出来的是token 27

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-8 59

2.6.1 什么是unicode 59

2.6.2 什么是UTF-8 59

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和token 66

2.7.2 字符串和字符串内嵌表达式 66

2.7.3 单词识别流程 67

2.7.4 定义token和parser 68

2.7.5 解析关键字及获取字符 71

2.7.6 解析标识符和unicode码点 73

2.7.7 解析字符串、内嵌表达式、转义字符 75

2.7.8 跳过注释和空行 77

2.7.9 获取token 79

2.7.10 token匹配和初始化parser 84

2.8 构建主程序(本节源码stepByStep/c2/f) 85

2.9 编译、测试(本节源码stepByStep/c2/f) 88

2.9.1 一个简单的makefile 88

2.9.2 测试paser 92

第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和closedUpvalue 106

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对象头文件及entry 125

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章 自上而下算符优先——TDOP 177

5.1 自上而下算符优先—TDOP 177

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 添加临时根对象与触发GC 411

第 10章 命令行及调试 415

10.1 释放虚拟机(本节源码stepByStep/c10/a) 415

10.2 简单的命令行界面(本节源码stepByStep/c10/a) 415

10.3 调试(本节源码stepByStep/c10/b) 417

浏览器不支持脚本!

摘要:《自制编程语言》郑钢》一书,作者郑钢深入浅出地介绍了自制编程语言的设计与实现过程,为编程爱好者提供了宝贵的实践经验和理论指导。本书内容丰富,结构清晰,涵盖了编程语言的基本原理、设计方法、实现技巧等多个方面,对于想要深入了解编程语言设计和开发的人来说,是一本不可多得的好书。

1、编程语言概述

编程语言是人与计算机之间沟通的桥梁,它将人类的思维转化为计算机可以理解和执行的指令。郑钢在《自制编程语言》中首先对编程语言进行了概述,包括编程语言的发展历程、分类、特点等。通过对编程语言的深入剖析,使读者对编程语言有了全面的认识。

在书中,郑钢详细介绍了编程语言的三个层次:语法、语义和语用。语法是编程语言的规则,决定了代码的结构;语义是代码的含义,决定了代码的功能;语用是代码的使用,决定了代码的实际应用。这种层次化的介绍方式,有助于读者从宏观和微观两个层面理解编程语言。

此外,郑钢还介绍了编程语言的几种常见类型,如过程式语言、函数式语言、面向对象语言等,使读者对编程语言的多样性有了更深入的了解。

2、自制编程语言的设计

自制编程语言的设计是《自制编程语言》的核心内容之一。郑钢在书中详细介绍了自制编程语言的设计原则、方法和步骤。首先,他强调了设计自制编程语言的重要性,指出设计一门适合自己的编程语言可以提高编程效率和开发质量。

在设计过程中,郑钢提出了以下几个关键点:一是明确设计目标,二是选择合适的编程范式,三是设计简洁的语法,四是保证语言的易用性和可扩展性。这些原则和方法为读者提供了设计自制编程语言的参考。

在具体设计过程中,郑钢以实际案例展示了如何从零开始设计一门编程语言。他详细介绍了词法分析、语法分析、语义分析、代码生成等关键步骤,使读者对自制编程语言的设计过程有了直观的认识。

3、自制编程语言实现

在《自制编程语言》中,郑钢不仅介绍了自制编程语言的设计,还详细讲解了实现过程。他首先介绍了编译原理的基本概念,如词法分析、语法分析、语义分析、代码生成等,使读者对编译过程有了全面的了解。

接着,郑钢以C语言为例,详细介绍了如何使用C语言实现一门编程语言。他首先介绍了C语言的语法和库函数,然后通过具体示例展示了如何使用C语言实现词法分析、语法分析、语义分析等关键步骤。

此外,郑钢还介绍了如何使用C语言实现代码生成、目标代码优化等高级特性,使读者对编译器的实现有了更深入的了解。

4、自制编程语言应用

自制编程语言的应用是《自制编程语言》的另一个重要内容。郑钢在书中介绍了如何将自制编程语言应用于实际项目中,包括项目规划、需求分析、设计实现、测试部署等环节。

他强调了在实际应用中,要注重代码的可读性、可维护性和可扩展性。同时,郑钢还介绍了如何利用自制编程语言提高开发效率,降低开发成本。

此外,郑钢还分享了一些实际案例,展示了如何将自制编程语言应用于不同领域,如嵌入式系统、游戏开发、Web开发等。

总结:《自制编程语言》郑钢》一书全面介绍了自制编程语言的设计与实现过程,为编程爱好者提供了宝贵的实践经验和理论指导。通过学习本书,读者可以深入了解编程语言的基本原理、设计方法、实现技巧,为成为一名优秀的编程语言设计师打下坚实的基础。

本文由nayona.cn整理

点击联系需要东西方神秘学学习资料,专业的咨询

只要网页介绍资料,全部都有,还有很多还没来得及更新
每天更新200-300款资料
全网最大最全的神秘学资料平台
请需要什么资料,直接在对话框直接联系我,24小时在线,方便快捷
请需要什么资料,直接在对话框直接联系我,24小时在线,方便快捷
请需要什么资料,直接在对话框直接联系我,24小时在线,方便快捷
有看中网站记得联系我
图片2            

联系我们

图片2

关注公众号

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
雅书雅书
何睿头像改运课23集视频 头像改运
上一篇 2026年6月23日 下午2:24
择日通书一册新全本55页PDF 择日秘本
下一篇 2026年6月23日 下午2:24
易学资料

对占星塔罗感兴趣关注公众号

相关推荐