回复内容:
用Python实现的Python解释器,最出名并且完成度最高的当PyPy
莫属。
不过如果是想用Python来实现一个跟CPython相同思路的简单的解释器的话,参考这个挺好的:A Python Interpreter Written in Python
更多资料请跳传送门:
- 有没有内容类似于《Python源码剖析》,但内容更新过,针对新版本的Python书籍? - RednaxelaFX 的回答
- 用 JavaScript 写成的 JavaScript 解释器,意义是什么? - RednaxelaFX 的回答
当然是可以的,但是和编译器不同,编译器可以自己编译自己,解释器不能自己解释运行自己,最外层的解释器总需要用其他一些程序来运行的。但是最外层的解释器可以只解释这个语言的一个子集,然后里层的解释器用这个子集实现更多更完整的功能,这样外层的C的解释器可以保持不变,添加新功能的时候,只要把用Python写的内层解释器升级就行了。PyPy的思路就跟这个类似。
功能比较完备的语言,实现自X都是比较容易的。比如C/C++的编译器,现在都是使用C/C++开发的。
当然可以,比如著名的PyPy
其实我觉得问者想问的是,可以用一门语言来实现一门语言的编译器么(同一门语言)?
答:最开始不可以,之后可以。
简单地说:就是“自举”
为什么呢?
因为如果从机器角度,我们必须用机器现在能识别的语言来编写一门新语言的编译器。
一旦做出编译器之后,你如果可以拿着这个2进制编译器去编译你用同一门语言写的编译器。
这就是“自举”
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn