chibi-scheme源码阅读3
这篇文章会介绍一下 chibi-scheme
语法分析的其他部分,因为我总觉得这其实是很有趣的部分。
从sexp中可以看到所有的ast类型的定义。可见其中比较复杂的是 lambda
类型。这一次打算看一看lambda这个结构体的语法分析,因为其中牵涉到Context类型、我打算整篇博客就介绍这一个部分。
这篇文章会介绍一下 chibi-scheme
语法分析的其他部分,因为我总觉得这其实是很有趣的部分。
从sexp中可以看到所有的ast类型的定义。可见其中比较复杂的是 lambda
类型。这一次打算看一看lambda这个结构体的语法分析,因为其中牵涉到Context类型、我打算整篇博客就介绍这一个部分。
新的一年来了,打算赶紧把去年没做的事情都填了吧。
于是就想起了这篇文章,还有那篇孤苦伶仃的Gentoo安装:我的Gentoo都已经换成了Arch系统了,结果那篇讲述如何安装的还没有写完。
不过还是先把这篇完成好了。这个当时弃掉的原因是因为发现了有比自己总结做得更好的版本了: 我是在这里看到的作者遗留的博客。我觉得讲得实在比我的要好得多,也专业的多了。这里不要脸的还是再过一遍吧。
这里重新介绍的是编译原理。作为一门刚刚在期末考试两天一学期学完的课程、恰好也是一种复习吧。
今天终于考完了试。打算补一下博客之类的,想起来复习操作系统的时候,在选择一个进程进入临界区的时候有个算法叫Peterson
算法,感觉理解起来非常好玩,于是打算在这里介绍一下我的理解。
这两天大概写完了编译原理大作业。于是用一些博客来记下来里面用了哪些东西。其实里面根本没有用到什么高深的技巧,好像就是一路顺下来就写完了;唯一有些弯弯绕绕的地方就是解析数字的parser了。
这在之前也已经写过了,那是一个Lisp语言的解析数学表达式的东西,只是在Lisp中数学表达式的写法是自带语法树的,在对于普通的数学表达式的时候,由于有了优先级的限制,这个就显得很麻烦了。
编译原理的大作业是写一个简单绘图语言的编译器。我打算用lisp来写这个东西,于是还是我熟悉一点的Clojure就好了,其中遇到了很多麻烦的事情,有很大一部分是不熟悉Java的API,然而当时在写的时候,旁边是写安卓的Boiler Yao强者。这里就记一下遇到的别的问题好了。
这篇是记录完成lexer的过程。因为实现比较简单,打算连着Clojure建立项目的部分一起在这里总结一下。
学校学习操作系统,上机使用的环境是Ubuntu 10.4
,内核上也就是Linux 2.6
,但是现在Linux内核版本已经4.x了啊喂。主要更难过的是,上机给的示例代码在4.x的机子上根本就没法运行,因为系统调用的接口已经变了。就这样我也就忍了,自己找找新的接口定义也就完了。
结果接下来要求添加一个系统调用,这回好了,添加系统调用的文件夹直接就不存在。到网上去找也是各种最高才到3.x的教程,简直没有办法能做下去,幸而再后来还是找到了一两篇中文的教材,没至于沦落到啃英文手册的地步,不过看来自己是非总结一下不可了。
某学校编译原理讲课重点集中在编译器的前端,也就是文法分析、语义分析什么的上面,讲得实在繁琐,感觉自己更想去接受语法纯粹一点的Lisp。
同时也是非常好奇,Lisp的编译过程是怎么实现的呢,于是就决定读一下Lisp的源代码。