[关闭]
@juda 2014-08-12T12:26:53.000000Z 字数 1638 阅读 1417

Report of Scheme Interpreter in Python


这是一个Scheme语言的一个小型解释器,使用Python2.7编写。
您可以在任意一台安装了Python2的机器上获得所有代码并运行。
在终端中输入schpy.py [file]来执行这个解释器。若输入文件名,将先执行文件再进入交互模式,否则直接进入交互模式。
这是一个脆弱的解释器,希望使用它的人能善待它。


学习的内容

1.Scheme的基本操作

通过阅读SICP[1],可以获得以下知识:

  • 前缀表达式

  • lambda匿名函数

  • 应用序与正则序

  • 统一数据结构list

2.实现一个解释器的基本步骤

1 读入字符流进行处理

2 分词

3 read-eval-print-loop (REPL)

3.Markdown语法

这是一个使用Markdown编写的文档。


实现解释器

1.tokenizer

利用python自带的string操作,把括号分开。
如果一个字符串里面存着空格,先用一个另外的字符串代替。
然后通过python的split操作分开个个元素。
再通过替换把token转化成正确的格式。
此时特殊语法'也会被转化成正确的语法。

2.parse

递归进行分词。同一级别的token放在同一个list中

3.eval过程

手动判断各种特殊语法结构,对于复合过程执行apply过程,否则根据特殊过程执行相应的函数

4.apply过程

计算参数绑定到环境里面,如果遇到底层函数如加减乘除执行底层过程,否则执行eval过程


遇到的问题


思考与感想


作者:@Juda


[1] 《计算机程序的构造和解释(原书第二版)》 (美)爱伯森 (Abelson.H) 等著;裘宗燕译 北京:机械工业出版社 2004.2
[2] How to Write a (Lisp) Interpreter (in Python)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注