python开发的软件sparrow-自制编程语言:基于C语言 PDF 全书影印版

给大家带来的一篇关于C语言编程相关的电子书资源,介绍了关于编程语言、C语言方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小259.8 MB,郑钢编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.6。

内容介绍

1-191021125A4494.jpg

前百度网高 级技术工程师、专业书《电脑操作系统实情复原》的创作者的另一大作 业内权威专家联名鞋强烈推荐 滴滴打车系统部技术性高 级主管于晓声 阿里巴巴网蚂蚁金服技术性权威专家肖金亮 百度网资 深运维工程师陈晓聪 360企业安全集团公司政企云业务部技术主管冯顾 ACFUN高 级运维管理主管陆景玉 Mobvista运维管理主管黄梦溪 傻瓜式地教用户从零开始去保持一种語言,从基本原理到实践活动事无大小 每步常有具体的编码和详细的基本原理表明,用户能够很轻轻松松地把握每个保持关键点 保持开发语言关键的垃圾分类回收(GC)、虚拟机(VM)和进程等黑技术性都会这书逐一展现

内 容 提 要 这书是1本专业详细介绍自做计算机语言的书籍,书中从入门到精通地叙述了怎样开发设计一种计算机语言,及其运作这门计算机语言的虚拟机。这书主题思想包含:开发语言的作用、词法分析器、类、另一半、原生态方式、由上而下算符优先选择、语法分析、文本挖掘、虚拟机、内建类、垃圾分类回收、命令行及调节等技术性。 这书合适程序猿阅读文章,也合适对计算机语言基本原理很感兴趣的电子计算机从业者学习培训。

目录

第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

学习笔记

python与c语言的不同

Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言。本萌新也刚开始接触Python,发现Python与其他语言确实有很大的区别。Python是由C语言实现的,因此想把Python与C语言做一个简单的比较。 一、 C语言是编译型语言,经过编译后,生成机器码,然后再运行,执行速度快,不能跨平台,一般用于操作系统,驱动等底层开发。 Python是编译型还是解释型这个界限并不明显,但大致上可以理解为解释型语言,执行速度慢,由于Python虚拟机,Python是可以跨平台的,Python高度集成适合于软件的快……

python需要c语言基础吗

学python需要c语言基础吗? 学python可以不需要c语言基础,Python简单易学,适合零基础入门。不同的编程语言就好比其他国家的语言(英语、法语、德语),只不过一个是用来和机器交流的、一个是用来和人来交流的。 首先要做的是了解一些python的语法,就可以写一些比较简单的东西了,深入的话在了解一些算法相关的内容。 另外可以多看一些计算机基础方面的书籍,对学习编程会很有帮助。 相关推荐:《Python教程》 以上就是python需要c语言基础吗的详细内容,更多请关注码农之家其它相关文章! ……

python中赋值与c语言区别

python中赋值与c语言区别?先来看看简单的 Python 代码在内存中是什么样子的: b = 3b = b + 5 它在内存中的操作示意图是这样的: 然而,从代码的的字面意思上看,“把 3 赋给 b,把 b 加 5 之后再赋给 b。” 也就是把代码看成这个样子: b ← 3b ← b + 5 所以下面这张在内存中的操作图可能更符合我们的直觉: 也即 b + 5 的值又写回到 b 中。典型的 C 程序就是这样的。为变量 b 分配一个 int 型的内存单元,然后将整数 3 存放在该内存单元中。b 就代表了该块内存空间,不再移动,可以更新 b 的值,但 b 在内存中的地址就不再变化了。所以我们说 b = b + 5,就等于 b ← b + 5,把 b 的值加 5 之后还依然放入 b 中。 变量……

Java版C语言版简单使用静态语言实现动态数组的方法

动态语言相对于静态语言的一个优势,就是数组可以不需要预先确定大小,对于一些数组长度不确定的场景下是非常有用的。像PHP,只需要声明一下数组 $arr = array() 然后就可以直接 $arr[] = 1,$arr[] = 2,$arr[] = 3 ...这样一直加元素了,删除一个元素就直接使用unset($arr[1]),元素的空间就被释放了,而C和JAVA原生的数组就没有这么方便,声明的时候就必须先预先确定长度,由编译器分配相应的内存空间。不过通过一些巧妙的做法,也是可以实现一样的功能的,这也是本文的主要内容。 JAVA版 JAVA自带了一个集合类ArrayList,可以实现动态数组的功能,相比原生的数组,使用起来非常方便。在阅读Tomcat源码的时候,发现……

以上就是本次介绍的C语言编程电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

展开 +

收起 -

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
作者简介 前桥和弥(Maebasi Kazuya) 1969年出生,著有《征服C指针》、《彻底掌握C语言》、《Java之谜和陷阱》等。其一针见血“毒舌”文风和对编程语言深刻见地受到广大读者欢迎。 作者主页http://kmaebashi.com/。 译者简介 刘卓 2004年开始从事对日软件开发工作,其间还从事技术及软件工程相关培训工作。自2011年开始从事电力行业产品研发。持续关注企业级应用架构和Web客户端技术。 徐谦 6年技术开发及项目经验,曾以技术工程师身份赴日本工作两年,后归国联合创办互联网公司,现居上海继续创业中。主要从事PHP方向Web开发。热爱开源,曾向Zend Framework等知名PHP开源项目贡献代码,并于Github自主研发运维EvaThumber等开源项目获得国内社区认可。乐于分享技术心得,个人技术博客avnpc.com在国内PHP圈小有影响。 吴雅明 13年编程经验。其中7年专注于研发基于Java EE和.NET开发框架以及基于UML 2.0模型代码生成工具。目前正带领团队开发云计算PaaS平台及云计算自动化配置部署系统。译著有《征服C指针》等。 目录 · · · · · · 目 录 第1章  引子  001 1.1 为什么要制作编程语言  002 1.2 自制编程语言并不是很难  003 1.3 本书构成与面向读者  004 1.4 用什么语言来制作  006 1.5 要制作怎样语言  007 1.5.1 要设计怎样语法  007 1.5.2 要设计怎样运行方式  009 补充知识  “用户”指是谁?  012 补充知识  解释器并不会进行翻译  012 1.6 环境搭建  012 1.6.1 搭建开发环境  012 补充知识 关于bison与flex安装  014 1.6.2 本书涉及源代码以及编译器  015 第2章  试做一个计算器  017 2.1 yacc/lex是什么  018 补充知识  词法分析器与解析器是各自独立  019 2.2 试做一个计算器  020 2.2.1 lex  021 2.2.2 简单正则表达式讲座  024 2.2.3 yacc  026 2.2.4 生成执行文件  033 2.2.5 理解冲突所代表含义  034 2.2.6 错误处理  040 2.3 不借助工具编写计算器  041 2.3.1 自制词法分析器  041 补充知识  保留字(关键字)  046 补充知识 避免重复包含  047 2.3.2 自制语法分析器  048 补充知识 预读记号处理  053 2.4 少许理论知识——LL(1)与LALR(1)  054 补充知识 Pascal/C 中语法处理诀窍  056 2.5 习题扩展计算器  056 2.5.1 让计算器支持括号  056 2.5.2 让计算器支持负数  058 第3章  制作无类型语言crowbar  061 3.1 制作crowbar ver.0.1语言基础部分  062 3.1.1 crowbar是什么  062 3.1.2 程序结构  063 3.1.3 数据类型  064 3.1.4 变量  064 补充知识 初次赋值兼做变量声明理由  066 补充说明 各种语言全局变量处理  067 3.1.5 语句与结构控制  067 补充知识 elif、elsif、elseif选择  068 3.1.6 语句与运算符  069 3.1.7 内置函数  069 3.1.8 让crowbar支持C 语言调用  070 3.1.9 从crowbar中调用C 语言(内置函数编写)  071 3.2 预先准备  071 3.2.1 模块与命名规则  072 3.2.2 内存管理模块MEM  073 补充知识 valgrind  075 补充知识 富翁式编程  075 补充知识 符号表与扣留操作  076 3.2.3 调试模块DBG  076 3.3 crowbar ver.0.1实现  077 3.3.1 crowbar解释器——CRB_Interpreter  077 补充知识 不完全类型  080 3.3.2 词法分析——crowbar.l  081 补充知识 静态变量许可范围  084 3.3.3 分析树构建——crowbar.y 与create.c  085 3.3.4 常量折叠  089 3.3.5 错误信息  089 补充知识 关于crowbar中使用枚举型定义  091 3.3.6 运行——execute.c  092 3.3.7 表达式评估——eval.c  096 3.3.8 值——CRB_Value  104 3.3.9 原生指针型  105 3.3.10 变量  106 3.3.11 字符串与垃圾回收机制——string_pool.c  108 3.3.12 编译与运行  110 第4章  数组和mark-sweep垃圾回收器  113 4.1 crowbar ver.0.2  114 4.1.1 crowbar数组  114 4.1.2 访问数组元素  115 4.1.3 数组是一种引用类型  116 补充知识  “数组数组”和多维数组  116 4.1.4 为数组添加元素  118 4.1.5 增加( 模拟) 函数调用功能  118 4.1.6 其他细节  118 4.2 制作mark-sweep GC  119 4.2.1 引用数据类型结构  119 4.2.2 mark-sweep GC  121 补充知识 引用和immutable  123 4.2.3 crowbar栈  124 4.2.4 其他根  127 4.2.5 原生函数形式参数  128 4.3 实现GC 本身  129 4.3.1 对象管理方法  129 4.3.2 GC 何时启动  129 4.3.3 sweep阶段  132 补充知识 GC 现存问题  133 补充知识 Coping GC  134 4.4 其他修改  136 4.4.1 修改语法  136 4.4.2 函数模拟  137 4.4.3 左值处理  139 4.4.4 创建数组和原生函数书写方法  142 4.4.5 原生指针类型修改  144 第5章  中文支持和Unicode  147 5.1 中文支持策略和基础知识  148 5.1.1 现存问题  148 5.1.2 宽字符(双字节)串和多字节字符串  149 补充知识 wchar_t 肯定能表示1 个字符吗?  150 5.1.3 多字节字符/ 宽字符之间转换函数群  150 5.2 Unicode  153 5.2.1 Unicode历史  153 5.2.2 Unicode编码方式  154 补充知识 Unicode可以固定(字节)长度吗?  156 5.3 crowbar book_ver.0.3实现  156 5.3.1 要实现到什么程度?  156 5.3.2 发起转换时机  157 5.3.3 关于区域设置  158 5.3.4 解决0x5C问题  158 补充知识 失败 #ifdef  160 5.3.5 应该是什么样子  160 补充知识 还可以是别样子——Code Set Independent  161 第6章  制作静态类型语言Diksam  163 6.1 制作Diksam Ver 0.1语言基本部分  164 6.1.1 Diksam运行状态  164 6.1.2 什么是Diksam  165 6.1.3 程序结构  165 6.1.4 数据类型  166 6.1.5 变量  166 6.1.6 语句和流程控制  167 6.1.7 表达式  167 6.1.8 内建函数  168 6.1.9 其他  168 6.2 什么是静态/ 执行字节码语言  169 6.2.1 静态类型语言  169 6.2.2 什么是字节码  169 6.2.3 将表达式转换为字节码  170 6.2.4 将控制结构转换为字节码  173 6.2.5 函数实现  173 6.3 Diksam ver.0.1实现——编译篇  175 6.3.1 目录结构  175 6.3.2 编译概要  176 6.3.3 构建分析树(create.c)  176 6.3.4 修正分析树(fix_tree.c)  179 6.3.5 Diksam运行形式——DVM_Executable  185 6.3.6 常量池  186 补充知识 YARV 情况  187 6.3.7 全局变量  188 6.3.8 函数  189 6.3.9 顶层结构字节码  189 6.3.10 行号对应表  190 6.3.11 栈需要量  190 6.3.12 生成字节码(generate.c)  191 6.3.13 生成实际编码  193 6.4 Diksam虚拟机  197 6.4.1 加载/ 链接DVM_Executable到DVM  200 6.4.2 执行——巨大switch case  202 6.4.3 函数调用  204 第7章  为Diksam引入数组  207 7.1 Diksam中数组设计  208 7.1.1 声明数组类型变量  208 7.1.2 数组常量  209 补充知识 D 语言数组  210 7.2 修改编译器  210 7.2.1 数组语法规则  210 7.2.2 TypeSpecifier结构体  212 7.3 修改DVM  213 7.3.1 增加指令  213 补充知识 创建Java 数组常量  215 补充知识 C 语言中数组初始化  217 7.3.2 对象  217 补充知识 ArrayStoreException  218 7.3.3 增加null  219 7.3.4 哎! 还缺点什么吧?  219 第8章  将类引入Diksam  221 8.1 分割源文件  222 8.1.1 包和分割源代码  222 补充知识 #include、文件名、行号  225 8.1.2 DVM_ExecutableList  225 8.1.3 ExecutableEntry  226 8.1.4 分开编译源代码  227 8.1.5 加载和再链接  230 补充知识 动态加载时编译器  233 8.2 设计Diksam中类  233 8.2.1 超简单面向对象入门  233 8.2.2 类定义和实例创建  237 8.2.3 继承  239 8.2.4 关于接口  241 8.2.5 编译与接口  242 8.2.6 Diksam怎么会设计成这样?  243 8.2.7 数组和字符串方法  245 8.2.8 检查类类型  246 8.2.9 向下转型  246 8.3 关于类实现——继承和多态  247 8.3.1 字段内存布局  247 8.3.2 多态——以单继承为前提  249 8.3.3 多继承——C++  250 8.3.4 Diksam多继承  252 补充知识 无类型语言中继承  254 8.3.5 重写条件  254 8.4 关于类实现  256 8.4.1 语法规则  256 8.4.2 编译时数据结构  258 8.4.3 DVM_Executable中数据结构  260 8.4.4 与类有关指令  262 补充知识 方法调用、括号和方法指针  263 8.4.5 方法调用  264 8.4.6 super  266 8.4.7 类链接  266 8.4.8 实现数组和字符串方法  267 8.4.9 类型检查和向下转型  267 补充知识 对象终结器(finalizer)和析构函数(destructor)  268 第9章  应用篇  271 9.1 为crowbar引入对象和闭包  272 9.1.1 crowbar对象  272 9.1.2 对象实现  273 9.1.3 闭包  274 9.1.4 方法  276 9.1.5 闭包实现  278 9.1.6 试着跟踪程序实际执行时轨迹  281 9.1.7 闭包语法规则  284 9.1.8 普通函数  284 9.1.9 模拟方法(修改版)  285 9.1.10 基于原型面向对象  286 9.2 异常处理机制  286 9.2.1 为crowbar引入异常  286 9.2.2 setjmp()/longjmp()  289 补充知识 Java 和C# 异常处理不同  293 9.2.3 为Diksam引入异常  295 补充知识 catch 编写方法  296 9.2.4 异常数据结构  297 9.2.5 异常处理时生成字节码299 9.2.6 受查异常  301 补充知识 受查异常是与非 303 补充知识 异常处理本身是与非  304 9.3 构建脚本  305 9.3.1 基本思路  306 9.3.2 YY_INPUT  307 9.3.3 Diksam构建脚本  308 9.3.4 三次加载/ 链接  308 9.4 为crowbar引入鬼车  309 9.4.1 关于“鬼车”  309 9.4.2 正则表达式常量  310 9.4.3 正则表达式相关函数  311 9.5 其他  312 9.5.1 foreach 和迭代器(crowbar)  312 9.5.2 switch case(Diksam)  314 9.5.3 enum(Diksam)  315 9.5.4 delegate(Diksam)  316 9.5.5 final、const(Diksam)  319 附录A  crowbar语言设计  322 附录B  Diksam语言设计  336 附录C  Diksam Virtual Machine 指令集  359 编程语言实用化指南——写在最后  369 参考文献  375
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值