自制编程语言 基于C语言

自制编程语言 基于C语言
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2018-09
版次: 1
ISBN: 9787115487377
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
57人买过
  • 本书是一本专门介绍自制编程语言的图书,书中深入浅出地讲述了如何开发一门编程语言,以及运行这门编程语言的虚拟机。本书主要内容包括:脚本语言的功能、词法分析器、类、对象、原生方法、自上而下算符优先、语法分析、语义分析、虚拟机、内建类、垃圾回收、命令行及调试等技术。
     

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

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

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

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

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

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

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

  • 目录:
    第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 
查看详情
12
相关图书 / 更多
自制编程语言 基于C语言
自制一杯好酸奶
[法]瓦莱里·德鲁埃 著;杨晓梅 译;[法]菲利普·吕索
自制编程语言 基于C语言
自制卤味,吃的安心
林国平 著
自制编程语言 基于C语言
自制力:活得更高级的人生标配
许文艳 著
自制编程语言 基于C语言
自制MV
主编张洁副主编张丽荣
自制编程语言 基于C语言
自制凉茶一本通
郭俊英 著
自制编程语言 基于C语言
自制AI图像搜索引擎
明恒毅 著
自制编程语言 基于C语言
自制冷点
[日]内藤朗
自制编程语言 基于C语言
自制蜡烛手工课唯美手工蜡艺制作完全详解
[日]前田佐千子 著;曲天皓 译
自制编程语言 基于C语言
自制美学:关于艺术与趣味的观察
克莱门特·格林伯格 著;陈毅平 译
自制编程语言 基于C语言
自制力:道理我都懂,为什么就是过不好人生
邱开杰
自制编程语言 基于C语言
自制力:如何掌控自己的情绪和命运
董楠 著
自制编程语言 基于C语言
自制热导线及其用于在线防冰融冰的理论和技术
莫思特 刘天琪