summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-02-02 18:19:15 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-02-02 18:19:15 (GMT)
commit4b38da664c107bc08768235a66621429beef5444 (patch)
tree8fc2135063c382b2987faa8e645f97b4ede2c745 /Python/pythonrun.c
parent033f31270cb424efdb72abb03d925235f18d034d (diff)
downloadcpython-4b38da664c107bc08768235a66621429beef5444.zip
cpython-4b38da664c107bc08768235a66621429beef5444.tar.gz
cpython-4b38da664c107bc08768235a66621429beef5444.tar.bz2
Move a bunch of definitions that were internal to compile.c to
symtable.h, so that they can be used by external module. Improve error handling in symtable_enter_scope(), which return an error code that went unchecked by most callers. XXX The error handling in symtable code is sloppy in general. Modify symtable to record the line number that begins each scope. This can help to identify which code block is being referred to when multiple blocks are bound to the same name. Add st_scopes dict that is used to preserve scope info when PyNode_CompileSymtable() is called. Otherwise, this information is tossed as soon as it is no longer needed. Add Py_SymtableString() to pythonrun; analogous to Py_CompileString().
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r--Python/pythonrun.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 5f90797..5e0377d 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -9,6 +9,7 @@
#include "parsetok.h"
#include "errcode.h"
#include "compile.h"
+#include "symtable.h"
#include "eval.h"
#include "marshal.h"
@@ -963,6 +964,19 @@ Py_CompileString(char *str, char *filename, int start)
return (PyObject *)co;
}
+struct symtable *
+Py_SymtableString(char *str, char *filename, int start)
+{
+ node *n;
+ struct symtable *st;
+ n = PyParser_SimpleParseString(str, start);
+ if (n == NULL)
+ return NULL;
+ st = PyNode_CompileSymtable(n, filename);
+ PyNode_Free(n);
+ return st;
+}
+
/* Simplified interface to parsefile -- return node or set exception */
node *