我想尝试使用 Python 解释器并尝试创建一个小型 DSL。是否有任何模块可以让我做类似这个理论代码(类似于 LINQ 表达式树)的事情?
expression_tree = Function(
Print(
String('Hello world!')
)
)
compile_to_bytecode(expression_tree)
或者只生成 Python 源代码会更容易吗?使用 C 或 SWIG 或 Cython 可以使这更容易吗?
最佳答案
正如另一个答案所暗示的那样,通过 ast
工作并将树编译成字节码可能是最简单的;生成源代码并编译它们,几乎一样好。
但是,要探索较低级别的方法,请查看来自 this page 的链接。 ;我找到了 byteplay特别有用(目前不适用于 2.6 或 3.*,仅适用于 2.4 或 2.5,但我认为针对 2.6 修复它应该很容易,正如目前在其跟踪器中所讨论的那样)。我没有使用过 Phil Eby 的类似功能 BytecodeAssembler ,但考虑到作者的声誉,我确信它值得一试!
关于python - 有没有办法以编程方式生成 Python 字节码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482055/