9

chibi-scheme源代码分析之零--总体结构

 3 years ago
source link: https://www.zenlife.tk/chibi-scheme0.md
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

chibi-scheme源代码分析之零--总体结构

2012-01-10

chibi-scheme 是一个 scheme 语言的实现(编译器).代码很优雅,又不太长,包括了编译原理的完整概念,非常值得学习.

当前源代码为chibi-scheme-0.5.3版本.

项目的地址在 http://code.google.com/p/chibi-scheme/

在线手册可以在这里看到 http://synthcode.com/scheme/chibi/

主要源文件

最主要的几个文件是:

  • ./include/chibi/sexp.h 包含了s表达式的定义,整个系统的头文件
  • ./gc.c 实现了系统的内存分配及垃圾回收工作
  • ./sexp.c 语法分析及操作s表达式的一些函数
  • ./eval.c 从抽象语言法树到虚拟机字节码生成过程都在这个文件实现
  • ./vm.c 虚拟机

本篇的整个系列随笔就按上面几个文件的次序分析的.

其它一些不重要的源文件包括main.c opcode.c等等.

这一系列的分析只包含核心部分。chibi-scheme目前正在迅速发展中,完全支持 R7RS 的 small 版本。包括动态链接库和 C 语言函数外部调用接口(FFI)。

其主要目的是用于 C 语言的扩展和脚本,可以嵌入到C程序中。这不是一个解释器,而是编译生成字节码在虚拟机中运行。

具体的几篇会分析

类型系统 垃圾回收机制 词法分析 ast生成和bytecode生成 虚拟机 这些构成了 chibi-scheme 的一个核,相当于有了一个自举的编译器,接着通过模块系统实现了很多扩展和库函数,最终形成一个完整的编译器。

由于有些依赖关系,为了不至于读到后面的某个函数常常要回头查看前面的代码,建议的阅读顺序是 sexp.h => gc.c => sexp.c => eval.c => vm.c

本源代码分析系列正是按此顺序进行的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK