在Python虚拟机中创建新语言

时间:2012-12-07 21:35:03

标签: python bytecode dsl vm-implementation

是否可以为Python虚拟机创建新语言?我正在阅读http://late.am/post/2012/03/26/exploring-python-code-objects,博客讨论Python代码对象。在其中,他讨论了将代码对象反汇编为字节码以及其中的符号含义。

这让我觉得可以有其他方法来构造这个字节码。我很好奇能够在Python字节码中创建沙盒语言,以便Python可以加载它。使用Python本身进行沙盒化似乎几乎不可能,但这似乎为另一种实现语言提供了一条途径。

如果我想继续这项冒险,我会从哪里开始?什么是更好的方法,哪里可以找到更多其他方法?

2 个答案:

答案 0 :(得分:3)

Why the lucky stiff曾经hacked together一个将Ruby代码编译成Python字节码的脚本。我记得它适用于简单的Ruby脚本。您可以查看来源,了解他是如何做到的。

编辑:他所做的就是让Ruby VM生成Ruby字节码,而不是将该字节码转换为Python。看看如何组装Python字节码仍然很有趣:)

答案 1 :(得分:2)

我认为一个好的起点是ply,这是一个使用ply的Lisp实现:http://www.juanjoconti.com.ar/files/python/mini-lisp/

我不确定ply是否可以使用Python的ast模块生成语法树,但它应该是可能的。