如果打算亲手制作一个简单的python解释器需要掌握哪些知识?

我是一个计算机专业的学生,在学编译原理这门课程的过程中产生了自己制作一个python解释器的想法,不过我们的课程中只讲了前后文无关文法、词法分析、语法分析和四元式表示这几块内容,而且只讲了一些手动转换的方法,对一些实际的应用讲的不深。我了解到python语言是上下文相关的,在学校的课程中对这方面的文法也没有过详细的说明。我想在这里问一下如果我准备手动写一个python解释器需要掌握哪些技能点?回复内容:
对于实现一个解释器,parser部分其实是相对比较无聊的工作,如果跳过这部分来实现的话,可能会更容易上手一些。vinzenz/libpypa · github 可以尝试一下这个项目,独立的python parser,c++写的,目前dropbox的python实现pyston,就是使用这个库做为python的parser。另外也可以直接尝试直接调用cpython的ast模块,将parse好的ast导出到文件中去,再拿自己实现的解释器直接读取。pyston在引入libpypa之前就是这么做的。还有另外一个思路,直接实现一个python bytecode的解释器,parse .pyc文件就可以了。之后需要了解的就是python对象模型(比如说一个python对象在内存是如何表示的)。如果是拿c语言来实现的话大概就是“一切都是堆上分配的结构体”就可以了。剩下的一块是gc,需要了解一下常见的集中gc实现方案。最简单的应该是引用计数。如果是c/c++实现的话,还直接用boehm gc,自己这块就不用管了。相关的python实现:jython和ironpython不用说了,jvm和.net两个平台上的python实现,如果对这两个平台熟悉的话可以直接拿来参考。dropbox的pyston,c++实现,使用llvm作为codegen,因为c++相对较难,并且还有jit的部分,并不适合上手。micronpython, https://micropython.org/ ,专门针对嵌入式芯片实现的python,ansi c的,可以研究一下。tinypy tinypy :: home , 64k代码实现的比较完整的python,可以参考。另外推荐python源码剖析这本书,内容非常全面 python源码剖析 (豆瓣) 。

vczh free script

vczh free script 2.0 beta 发布

来看这个,大二写的,除了语法不一样以外没有任何区别。

parser 推荐用 peg,可以方便地处理缩进。
不考虑语法分析这一步,想着重了解python对象模型的话,可以去看看《python源码剖析》。

Posted in 未分类

发表评论