不求甚解之自制编程语言
开始写不求甚解系列,为了让自己开始再次学习一些it方面的知识,主要是发现自己从毕业这几年开始,
一直没有再次写写博客,让自己安静下来,让自己重新思考,这也让我一直都是在重复一些很肤浅的东西
,但同时忘记了自己的目标–创造。
不求甚解系列是自己的读书系列,对以前可能知道的,或者有些印象的东西进行忽略,只对不了解的东西
开始一系列的浏览,这也是为什么我会对这个系列起名叫不求甚解的原因。
读书只对不知道的东西进行阅读,这样可以保证自己的heartflow保持一个相对较长的时间。
目录
第1章 引子
1.1 为什么要制作编程语言
1.2 自制编程语言并不是很难
1.3 本书的构成与面向读者
1.4 用什么语言来制作
1.5 要制作怎样的语言 // ==属于比较,=属于赋值,跟本书后面的右序相关
文中有一些关于分析树的内容,相较于llc的内容相似,分词之后形成
顺序处理
1.6 环境搭建 // cygwin可以在windows使用linux的命令,类似ls命令等,比较不错的软件
第2章 试做一个计算器
2.1 yacc/lex是什么
2.2 试作一个计算器
2.3 不借助工具编写计算器 //递归下降分析,图解就是分析树
2.4 少许理论知识——LL(1)与LALR(1)
2.5 习题:扩展计算器
第3章 制作无类型语言crowbar
3.1 制作crowbar ver.0.1语言的基础部分
3.2 预先准备 //valgrind是linux上一个检测内存泄漏的工具,对所有malloc或者new
出来的堆内存空间的指针加标识(__val 之类的),进行生命周期跟踪
3.3 crowbar ver.0.1的实现
第4章 数组和mark-sweep垃圾回收器
4.1 crowbar ver.0.2
4.2 制作mark-sweep GC //a={1,2,3}; b={4,5,a}; a[0]=b; 这行代码就形成了类似链表环的代码
4.3 实现GC本身 //通过新建内存分两块,一块使用,快用完了,另一块整理出有用的,这样
循环使用,虽然浪费内存,但有效,代码中可以考虑使用
4.4 其他修改 //左值
第5章 中文支持和Unicode
5.1 中文支持策略和基础知识
5.2 Unicode //unicode前面部分和ascii的编码相同,unicode可以同时处理utf-8和ascii
5.3 crowbar book_ver.0.3的实现
第6章 制作静态类型的语言Diksam
6.1 制作Diksam Ver 0.1语言的基本部分
6.2 什么是静态的/执行字节码的语言
6.3 Diksam ver.0.1的实现——编译篇
6.4 Diksam虚拟机 //巨大的switch case这就是运行态的方式,。。。原理还真easy
第7章 为Diksam引入数组
7.1 Diksam中数组的设计
7.2 修改编译器
7.3 修改DVM //null属于全类型
第8章 将类引入Diksam
8.1 分割源文件
8.2 设计Diksam中的类
8.3 关于类的实现——继承和多态 //子类方法的返回值类型要比超类的窄
8.4 关于类的实现 //**回忆一下编译时,内存中哪些地方存放全局变量,静态变量,局部变量
数据,代码,等**
第9章 应用篇
9.1 为crowbar引入对象和闭包 //闭包有点像小的类的概念
9.2 异常处理机制 //java中try throw属于受查异常
9.3 构建脚本
9.4 为crowbar引入鬼车
9.5 其他
附录
附录A crowbar语言的设计 //刚工作的时候,manager让我做一个工业编译器,现在再让我做
我肯定要先确定整体,找一个类似的东西,建一个框架,然后问他
具体到哪个程度,而不是像当时就直接做。
附录B Diksam语言的设计 // + - * / 都是双目运算
**break是从循环中退出,continue 是跳转到循环末尾,return是从
函数中跳出**
附录 C Diksam Virtual Machine 指令集