回复内容:
对于实现一个解释器,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源码剖析》。查看更多关于如果打算亲手制作一个简单的python解释器需要掌握哪些知识?的详细内容...