mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
Merge ast-branch to head
This change implements a new bytecode compiler, based on a transformation of the parse tree to an abstract syntax defined in Parser/Python.asdl. The compiler implementation is not complete, but it is in stable enough shape to run the entire test suite excepting two disabled tests.
This commit is contained in:
parent
2cb94aba12
commit
3e0055f8c6
54 changed files with 13675 additions and 6810 deletions
|
|
@ -3,10 +3,11 @@
|
|||
|
||||
#include "Python.h"
|
||||
|
||||
#include "node.h"
|
||||
#include "token.h"
|
||||
#include "Python-ast.h"
|
||||
#include "pythonrun.h"
|
||||
#include "errcode.h"
|
||||
#include "marshal.h"
|
||||
#include "code.h"
|
||||
#include "compile.h"
|
||||
#include "eval.h"
|
||||
#include "osdefs.h"
|
||||
|
|
@ -766,17 +767,17 @@ load_compiled_module(char *name, char *cpathname, FILE *fp)
|
|||
/* Parse a source file and return the corresponding code object */
|
||||
|
||||
static PyCodeObject *
|
||||
parse_source_module(char *pathname, FILE *fp)
|
||||
parse_source_module(const char *pathname, FILE *fp)
|
||||
{
|
||||
PyCodeObject *co;
|
||||
node *n;
|
||||
|
||||
n = PyParser_SimpleParseFile(fp, pathname, Py_file_input);
|
||||
if (n == NULL)
|
||||
return NULL;
|
||||
co = PyNode_Compile(n, pathname);
|
||||
PyNode_Free(n);
|
||||
PyCodeObject *co = NULL;
|
||||
mod_ty mod;
|
||||
|
||||
mod = PyParser_ASTFromFile(fp, pathname, Py_file_input, 0, 0, 0,
|
||||
NULL);
|
||||
if (mod) {
|
||||
co = PyAST_Compile(mod, pathname, NULL);
|
||||
free_mod(mod);
|
||||
}
|
||||
return co;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue