Python源码分析(2):from AST to code object
语法分析得到的一个CST,然后转换成AST,然后编译得到一个Code Object。
在PyRun_FileExFlags函数里面, 先通过PyParser_ASTFromFileObject得到一棵AST树
mod = PyParser_ASTFromFileObject(fp, filename, NULL, start, 0, 0,
flags, NULL, arena);
然后通过run_mod编译并运行CodeObject。
static PyObject *
run_mod(mod_ty mod, PyObject *filename, PyObject *globals, PyObject *locals,
PyCompilerFlags *flags, PyArena *arena)
{
co = PyAST_CompileObject(mod, filename, flags, -1, arena);
v = run_eval_code_obj(co, globals, locals);
}
编译的入口在Python/compile.c::PyAST_CompileObject。
目录
2020/06/09