summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1993-10-18 17:06:59 (GMT)
committerGuido van Rossum <guido@python.org>1993-10-18 17:06:59 (GMT)
commitdb3165e6559c6b83373e7fed9cdf4371552a9a8e (patch)
tree97b057363244668ebec6630553a86ad2206e3fd2 /Python
parentcacd9579d48cb1e2acc3536c9701987b118edf8c (diff)
downloadcpython-db3165e6559c6b83373e7fed9cdf4371552a9a8e.zip
cpython-db3165e6559c6b83373e7fed9cdf4371552a9a8e.tar.gz
cpython-db3165e6559c6b83373e7fed9cdf4371552a9a8e.tar.bz2
* bltinmodule.c: removed exec() built-in function.
* Grammar: add exec statement; allow testlist in expr statement. * ceval.c, compile.c, opcode.h: support exec statement; avoid optimizing locals when it is used * fileobject.{c,h}: add getfilename() internal function.
Diffstat (limited to 'Python')
-rw-r--r--Python/bltinmodule.c9
-rw-r--r--Python/ceval.c78
-rw-r--r--Python/compile.c26
-rw-r--r--Python/graminit.c833
4 files changed, 538 insertions, 408 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index dc65ffb..3ba8f91 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -233,14 +233,6 @@ builtin_eval(self, v)
}
static object *
-builtin_exec(self, v)
- object *self;
- object *v;
-{
- return exec_eval(v, file_input);
-}
-
-static object *
builtin_execfile(self, v)
object *self;
object *v;
@@ -755,7 +747,6 @@ static struct methodlist builtin_methods[] = {
{"dir", builtin_dir},
{"divmod", builtin_divmod},
{"eval", builtin_eval},
- {"exec", builtin_exec},
{"execfile", builtin_execfile},
{"float", builtin_float},
{"getattr", builtin_getattr},
diff --git a/Python/ceval.c b/Python/ceval.c
index b8d6de2..071d664 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -35,6 +35,8 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "opcode.h"
#include "bltinmodule.h"
#include "traceback.h"
+#include "graminit.h"
+#include "pythonrun.h"
/* Turn this on if your compiler chokes on the big switch: */
/* #define CASE_TOO_BIG 1 /**/
@@ -91,6 +93,7 @@ static object *build_class PROTO((object *, object *, object *));
static void locals_2_fast PROTO((frameobject *, int));
static void fast_2_locals PROTO((frameobject *));
static int access_statement PROTO((object *, object *, frameobject *));
+static int exec_statement PROTO((object *, object *, object *));
/* Pointer to current frame, used to link new frames to */
@@ -712,6 +715,22 @@ eval_code(co, globals, locals, owner, arg)
retval = POP();
why = WHY_RETURN;
break;
+
+ case LOAD_GLOBALS:
+ v = f->f_locals;
+ INCREF(v);
+ PUSH(v);
+ break;
+
+ case EXEC_STMT:
+ w = POP();
+ v = POP();
+ u = POP();
+ err = exec_statement(u, v, w);
+ DECREF(u);
+ DECREF(v);
+ DECREF(w);
+ break;
case BUILD_FUNCTION:
v = POP();
@@ -2489,3 +2508,62 @@ access_statement(name, vmode, f)
}
return ret;
}
+
+static int
+exec_statement(prog, globals, locals)
+ object *prog;
+ object *globals;
+ object *locals;
+{
+ char *s;
+ int n;
+
+ if (is_tupleobject(prog) && globals == None && locals == None &&
+ ((n = gettuplesize(prog)) == 2 || n == 3)) {
+ /* Backward compatibility hack */
+ globals = gettupleitem(prog, 1);
+ if (n == 3)
+ locals = gettupleitem(prog, 2);
+ prog = gettupleitem(prog, 0);
+ }
+ if (globals == None) {
+ globals = getglobals();
+ if (locals == None)
+ locals = getlocals();
+ }
+ else if (locals == None)
+ locals = globals;
+ if (!is_stringobject(prog) &&
+ !is_codeobject(prog) &&
+ !is_fileobject(prog)) {
+ err_setstr(TypeError,
+ "exec 1st arg must be string, code or file object");
+ return -1;
+ }
+ if (!is_dictobject(globals) || !is_dictobject(locals)) {
+ err_setstr(TypeError,
+ "exec 2nd/3rd args must be dict or None");
+ return -1;
+ }
+ if (is_codeobject(prog)) {
+ if (eval_code((codeobject *) prog, globals, locals,
+ (object *)NULL, (object *)NULL) == NULL)
+ return -1;
+ return 0;
+ }
+ if (is_fileobject(prog)) {
+ FILE *fp = getfilefile(prog);
+ char *name = getstringvalue(getfilename(prog));
+ if (run_file(fp, name, file_input, globals, locals) == NULL)
+ return -1;
+ return 0;
+ }
+ s = getstringvalue(prog);
+ if (strlen(s) != getstringsize(prog)) {
+ err_setstr(ValueError, "embedded '\\0' in exec string");
+ return -1;
+ }
+ if (run_string(s, file_input, globals, locals) == NULL)
+ return -1;
+ return 0;
+}
diff --git a/Python/compile.c b/Python/compile.c
index 0eb06cb..2a1a2b4 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1305,7 +1305,7 @@ com_expr_stmt(c, n)
struct compiling *c;
node *n;
{
- REQ(n, expr_stmt); /* exprlist ('=' exprlist)* */
+ REQ(n, expr_stmt); /* testlist ('=' testlist)* */
com_node(c, CHILD(n, NCH(n)-1));
if (NCH(n) == 1) {
com_addbyte(c, PRINT_EXPR);
@@ -1467,6 +1467,25 @@ com_access_stmt(c, n)
}
static void
+com_exec_stmt(c, n)
+ struct compiling *c;
+ node *n;
+{
+ REQ(n, exec_stmt);
+ /* exec_stmt: 'exec' expr ['in' expr [',' expr]] */
+ com_node(c, CHILD(n, 1));
+ if (NCH(n) >= 4)
+ com_node(c, CHILD(n, 3));
+ else
+ com_addoparg(c, LOAD_CONST, com_addconst(c, None));
+ if (NCH(n) >= 6)
+ com_node(c, CHILD(n, 5));
+ else
+ com_addbyte(c, DUP_TOP);
+ com_addbyte(c, EXEC_STMT);
+}
+
+static void
com_if_stmt(c, n)
struct compiling *c;
node *n;
@@ -1909,6 +1928,9 @@ com_node(c, n)
case access_stmt:
com_access_stmt(c, n);
break;
+ case exec_stmt:
+ com_exec_stmt(c, n);
+ break;
case if_stmt:
com_if_stmt(c, n);
break;
@@ -2183,6 +2205,8 @@ optimize(c)
opcode = NEXTOP();
if (opcode == STOP_CODE)
break;
+ if (opcode == EXEC_STMT)
+ goto end; /* Don't optimize if exec present */
if (HAS_ARG(opcode))
oparg = NEXTARG();
if (opcode == STORE_NAME || opcode == DELETE_NAME ||
diff --git a/Python/graminit.c b/Python/graminit.c
index 3b78d0c..bce702d 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -194,7 +194,7 @@ static state states_10[4] = {
{2, arcs_10_2},
{1, arcs_10_3},
};
-static arc arcs_11_0[8] = {
+static arc arcs_11_0[9] = {
{26, 1},
{27, 1},
{28, 1},
@@ -203,16 +203,17 @@ static arc arcs_11_0[8] = {
{31, 1},
{32, 1},
{33, 1},
+ {34, 1},
};
static arc arcs_11_1[1] = {
{0, 1},
};
static state states_11[2] = {
- {8, arcs_11_0},
+ {9, arcs_11_0},
{1, arcs_11_1},
};
static arc arcs_12_0[1] = {
- {34, 1},
+ {9, 1},
};
static arc arcs_12_1[2] = {
{35, 0},
@@ -242,7 +243,7 @@ static arc arcs_14_0[1] = {
{38, 1},
};
static arc arcs_14_1[1] = {
- {34, 2},
+ {39, 2},
};
static arc arcs_14_2[1] = {
{0, 2},
@@ -253,7 +254,7 @@ static state states_14[3] = {
{1, arcs_14_2},
};
static arc arcs_15_0[1] = {
- {39, 1},
+ {40, 1},
};
static arc arcs_15_1[1] = {
{0, 1},
@@ -263,10 +264,10 @@ static state states_15[2] = {
{1, arcs_15_1},
};
static arc arcs_16_0[4] = {
- {40, 1},
{41, 1},
{42, 1},
{43, 1},
+ {44, 1},
};
static arc arcs_16_1[1] = {
{0, 1},
@@ -276,7 +277,7 @@ static state states_16[2] = {
{1, arcs_16_1},
};
static arc arcs_17_0[1] = {
- {44, 1},
+ {45, 1},
};
static arc arcs_17_1[1] = {
{0, 1},
@@ -286,7 +287,7 @@ static state states_17[2] = {
{1, arcs_17_1},
};
static arc arcs_18_0[1] = {
- {45, 1},
+ {46, 1},
};
static arc arcs_18_1[1] = {
{0, 1},
@@ -296,7 +297,7 @@ static state states_18[2] = {
{1, arcs_18_1},
};
static arc arcs_19_0[1] = {
- {46, 1},
+ {47, 1},
};
static arc arcs_19_1[2] = {
{9, 2},
@@ -311,7 +312,7 @@ static state states_19[3] = {
{1, arcs_19_2},
};
static arc arcs_20_0[1] = {
- {47, 1},
+ {48, 1},
};
static arc arcs_20_1[1] = {
{37, 2},
@@ -334,8 +335,8 @@ static state states_20[5] = {
{1, arcs_20_4},
};
static arc arcs_21_0[2] = {
- {48, 1},
- {49, 2},
+ {49, 1},
+ {50, 2},
};
static arc arcs_21_1[1] = {
{13, 3},
@@ -348,7 +349,7 @@ static arc arcs_21_3[2] = {
{0, 3},
};
static arc arcs_21_4[1] = {
- {48, 5},
+ {49, 5},
};
static arc arcs_21_5[2] = {
{22, 6},
@@ -376,7 +377,7 @@ static state states_21[9] = {
{1, arcs_21_8},
};
static arc arcs_22_0[1] = {
- {50, 1},
+ {51, 1},
};
static arc arcs_22_1[1] = {
{13, 2},
@@ -391,7 +392,7 @@ static state states_22[3] = {
{2, arcs_22_2},
};
static arc arcs_23_0[1] = {
- {51, 1},
+ {52, 1},
};
static arc arcs_23_1[2] = {
{22, 2},
@@ -405,7 +406,7 @@ static arc arcs_23_3[2] = {
{15, 4},
};
static arc arcs_23_4[1] = {
- {52, 6},
+ {53, 6},
};
static arc arcs_23_5[1] = {
{13, 3},
@@ -434,56 +435,52 @@ static state states_24[2] = {
{1, arcs_24_0},
{2, arcs_24_1},
};
-static arc arcs_25_0[6] = {
- {53, 1},
+static arc arcs_25_0[1] = {
{54, 1},
- {55, 1},
- {56, 1},
- {11, 1},
- {57, 1},
};
static arc arcs_25_1[1] = {
- {0, 1},
-};
-static state states_25[2] = {
- {6, arcs_25_0},
- {1, arcs_25_1},
-};
-static arc arcs_26_0[1] = {
- {58, 1},
-};
-static arc arcs_26_1[1] = {
{37, 2},
};
-static arc arcs_26_2[1] = {
- {15, 3},
+static arc arcs_25_2[2] = {
+ {55, 3},
+ {0, 2},
};
-static arc arcs_26_3[1] = {
- {16, 4},
+static arc arcs_25_3[1] = {
+ {37, 4},
};
-static arc arcs_26_4[3] = {
- {59, 1},
- {60, 5},
+static arc arcs_25_4[2] = {
+ {21, 5},
{0, 4},
};
-static arc arcs_26_5[1] = {
- {15, 6},
+static arc arcs_25_5[1] = {
+ {37, 6},
};
-static arc arcs_26_6[1] = {
- {16, 7},
+static arc arcs_25_6[1] = {
+ {0, 6},
};
-static arc arcs_26_7[1] = {
- {0, 7},
+static state states_25[7] = {
+ {1, arcs_25_0},
+ {1, arcs_25_1},
+ {2, arcs_25_2},
+ {1, arcs_25_3},
+ {2, arcs_25_4},
+ {1, arcs_25_5},
+ {1, arcs_25_6},
};
-static state states_26[8] = {
- {1, arcs_26_0},
+static arc arcs_26_0[6] = {
+ {56, 1},
+ {57, 1},
+ {58, 1},
+ {59, 1},
+ {11, 1},
+ {60, 1},
+};
+static arc arcs_26_1[1] = {
+ {0, 1},
+};
+static state states_26[2] = {
+ {6, arcs_26_0},
{1, arcs_26_1},
- {1, arcs_26_2},
- {1, arcs_26_3},
- {3, arcs_26_4},
- {1, arcs_26_5},
- {1, arcs_26_6},
- {1, arcs_26_7},
};
static arc arcs_27_0[1] = {
{61, 1},
@@ -497,8 +494,9 @@ static arc arcs_27_2[1] = {
static arc arcs_27_3[1] = {
{16, 4},
};
-static arc arcs_27_4[2] = {
- {60, 5},
+static arc arcs_27_4[3] = {
+ {62, 1},
+ {63, 5},
{0, 4},
};
static arc arcs_27_5[1] = {
@@ -515,82 +513,73 @@ static state states_27[8] = {
{1, arcs_27_1},
{1, arcs_27_2},
{1, arcs_27_3},
- {2, arcs_27_4},
+ {3, arcs_27_4},
{1, arcs_27_5},
{1, arcs_27_6},
{1, arcs_27_7},
};
static arc arcs_28_0[1] = {
- {62, 1},
+ {64, 1},
};
static arc arcs_28_1[1] = {
- {34, 2},
+ {37, 2},
};
static arc arcs_28_2[1] = {
- {63, 3},
+ {15, 3},
};
static arc arcs_28_3[1] = {
- {9, 4},
+ {16, 4},
};
-static arc arcs_28_4[1] = {
- {15, 5},
+static arc arcs_28_4[2] = {
+ {63, 5},
+ {0, 4},
};
static arc arcs_28_5[1] = {
- {16, 6},
+ {15, 6},
};
-static arc arcs_28_6[2] = {
- {60, 7},
- {0, 6},
+static arc arcs_28_6[1] = {
+ {16, 7},
};
static arc arcs_28_7[1] = {
- {15, 8},
-};
-static arc arcs_28_8[1] = {
- {16, 9},
-};
-static arc arcs_28_9[1] = {
- {0, 9},
+ {0, 7},
};
-static state states_28[10] = {
+static state states_28[8] = {
{1, arcs_28_0},
{1, arcs_28_1},
{1, arcs_28_2},
{1, arcs_28_3},
- {1, arcs_28_4},
+ {2, arcs_28_4},
{1, arcs_28_5},
- {2, arcs_28_6},
+ {1, arcs_28_6},
{1, arcs_28_7},
- {1, arcs_28_8},
- {1, arcs_28_9},
};
static arc arcs_29_0[1] = {
- {64, 1},
+ {65, 1},
};
static arc arcs_29_1[1] = {
- {15, 2},
+ {39, 2},
};
static arc arcs_29_2[1] = {
- {16, 3},
+ {55, 3},
};
-static arc arcs_29_3[2] = {
- {65, 4},
- {66, 5},
+static arc arcs_29_3[1] = {
+ {9, 4},
};
static arc arcs_29_4[1] = {
- {15, 6},
+ {15, 5},
};
static arc arcs_29_5[1] = {
- {15, 7},
+ {16, 6},
};
-static arc arcs_29_6[1] = {
- {16, 8},
+static arc arcs_29_6[2] = {
+ {63, 7},
+ {0, 6},
};
static arc arcs_29_7[1] = {
- {16, 9},
+ {15, 8},
};
-static arc arcs_29_8[2] = {
- {65, 4},
- {0, 8},
+static arc arcs_29_8[1] = {
+ {16, 9},
};
static arc arcs_29_9[1] = {
{0, 9},
@@ -599,72 +588,105 @@ static state states_29[10] = {
{1, arcs_29_0},
{1, arcs_29_1},
{1, arcs_29_2},
- {2, arcs_29_3},
+ {1, arcs_29_3},
{1, arcs_29_4},
{1, arcs_29_5},
- {1, arcs_29_6},
+ {2, arcs_29_6},
{1, arcs_29_7},
- {2, arcs_29_8},
+ {1, arcs_29_8},
{1, arcs_29_9},
};
static arc arcs_30_0[1] = {
- {67, 1},
+ {66, 1},
};
-static arc arcs_30_1[2] = {
- {37, 2},
- {0, 1},
+static arc arcs_30_1[1] = {
+ {15, 2},
};
-static arc arcs_30_2[2] = {
- {21, 3},
- {0, 2},
+static arc arcs_30_2[1] = {
+ {16, 3},
};
-static arc arcs_30_3[1] = {
- {37, 4},
+static arc arcs_30_3[2] = {
+ {67, 4},
+ {68, 5},
};
static arc arcs_30_4[1] = {
- {0, 4},
+ {15, 6},
};
-static state states_30[5] = {
+static arc arcs_30_5[1] = {
+ {15, 7},
+};
+static arc arcs_30_6[1] = {
+ {16, 8},
+};
+static arc arcs_30_7[1] = {
+ {16, 9},
+};
+static arc arcs_30_8[2] = {
+ {67, 4},
+ {0, 8},
+};
+static arc arcs_30_9[1] = {
+ {0, 9},
+};
+static state states_30[10] = {
{1, arcs_30_0},
- {2, arcs_30_1},
- {2, arcs_30_2},
- {1, arcs_30_3},
+ {1, arcs_30_1},
+ {1, arcs_30_2},
+ {2, arcs_30_3},
{1, arcs_30_4},
+ {1, arcs_30_5},
+ {1, arcs_30_6},
+ {1, arcs_30_7},
+ {2, arcs_30_8},
+ {1, arcs_30_9},
};
-static arc arcs_31_0[2] = {
- {3, 1},
- {2, 2},
+static arc arcs_31_0[1] = {
+ {69, 1},
};
-static arc arcs_31_1[1] = {
+static arc arcs_31_1[2] = {
+ {37, 2},
{0, 1},
};
-static arc arcs_31_2[1] = {
- {68, 3},
+static arc arcs_31_2[2] = {
+ {21, 3},
+ {0, 2},
};
static arc arcs_31_3[1] = {
- {6, 4},
+ {37, 4},
};
-static arc arcs_31_4[2] = {
- {6, 4},
- {69, 1},
+static arc arcs_31_4[1] = {
+ {0, 4},
};
static state states_31[5] = {
- {2, arcs_31_0},
- {1, arcs_31_1},
- {1, arcs_31_2},
+ {1, arcs_31_0},
+ {2, arcs_31_1},
+ {2, arcs_31_2},
{1, arcs_31_3},
- {2, arcs_31_4},
+ {1, arcs_31_4},
};
-static arc arcs_32_0[1] = {
- {70, 1},
+static arc arcs_32_0[2] = {
+ {3, 1},
+ {2, 2},
};
-static arc arcs_32_1[2] = {
- {71, 0},
+static arc arcs_32_1[1] = {
{0, 1},
};
-static state states_32[2] = {
- {1, arcs_32_0},
- {2, arcs_32_1},
+static arc arcs_32_2[1] = {
+ {70, 3},
+};
+static arc arcs_32_3[1] = {
+ {6, 4},
+};
+static arc arcs_32_4[2] = {
+ {6, 4},
+ {71, 1},
+};
+static state states_32[5] = {
+ {2, arcs_32_0},
+ {1, arcs_32_1},
+ {1, arcs_32_2},
+ {1, arcs_32_3},
+ {2, arcs_32_4},
};
static arc arcs_33_0[1] = {
{72, 1},
@@ -677,70 +699,70 @@ static state states_33[2] = {
{1, arcs_33_0},
{2, arcs_33_1},
};
-static arc arcs_34_0[2] = {
+static arc arcs_34_0[1] = {
{74, 1},
- {75, 2},
};
-static arc arcs_34_1[1] = {
- {72, 2},
+static arc arcs_34_1[2] = {
+ {75, 0},
+ {0, 1},
+};
+static state states_34[2] = {
+ {1, arcs_34_0},
+ {2, arcs_34_1},
};
-static arc arcs_34_2[1] = {
+static arc arcs_35_0[2] = {
+ {76, 1},
+ {77, 2},
+};
+static arc arcs_35_1[1] = {
+ {74, 2},
+};
+static arc arcs_35_2[1] = {
{0, 2},
};
-static state states_34[3] = {
- {2, arcs_34_0},
- {1, arcs_34_1},
- {1, arcs_34_2},
+static state states_35[3] = {
+ {2, arcs_35_0},
+ {1, arcs_35_1},
+ {1, arcs_35_2},
};
-static arc arcs_35_0[1] = {
- {76, 1},
+static arc arcs_36_0[1] = {
+ {78, 1},
};
-static arc arcs_35_1[2] = {
- {77, 0},
+static arc arcs_36_1[2] = {
+ {79, 0},
{0, 1},
};
-static state states_35[2] = {
- {1, arcs_35_0},
- {2, arcs_35_1},
+static state states_36[2] = {
+ {1, arcs_36_0},
+ {2, arcs_36_1},
};
-static arc arcs_36_0[10] = {
- {78, 1},
- {79, 1},
+static arc arcs_37_0[10] = {
{80, 1},
{81, 1},
{82, 1},
{83, 1},
{84, 1},
- {63, 1},
- {74, 2},
- {85, 3},
+ {85, 1},
+ {86, 1},
+ {55, 1},
+ {76, 2},
+ {87, 3},
};
-static arc arcs_36_1[1] = {
+static arc arcs_37_1[1] = {
{0, 1},
};
-static arc arcs_36_2[1] = {
- {63, 1},
+static arc arcs_37_2[1] = {
+ {55, 1},
};
-static arc arcs_36_3[2] = {
- {74, 1},
+static arc arcs_37_3[2] = {
+ {76, 1},
{0, 3},
};
-static state states_36[4] = {
- {10, arcs_36_0},
- {1, arcs_36_1},
- {1, arcs_36_2},
- {2, arcs_36_3},
-};
-static arc arcs_37_0[1] = {
- {86, 1},
-};
-static arc arcs_37_1[2] = {
- {87, 0},
- {0, 1},
-};
-static state states_37[2] = {
- {1, arcs_37_0},
- {2, arcs_37_1},
+static state states_37[4] = {
+ {10, arcs_37_0},
+ {1, arcs_37_1},
+ {1, arcs_37_2},
+ {2, arcs_37_3},
};
static arc arcs_38_0[1] = {
{88, 1},
@@ -767,21 +789,20 @@ static state states_39[2] = {
static arc arcs_40_0[1] = {
{92, 1},
};
-static arc arcs_40_1[3] = {
+static arc arcs_40_1[2] = {
{93, 0},
- {94, 0},
{0, 1},
};
static state states_40[2] = {
{1, arcs_40_0},
- {3, arcs_40_1},
+ {2, arcs_40_1},
};
static arc arcs_41_0[1] = {
- {95, 1},
+ {94, 1},
};
static arc arcs_41_1[3] = {
+ {95, 0},
{96, 0},
- {97, 0},
{0, 1},
};
static state states_41[2] = {
@@ -789,170 +810,166 @@ static state states_41[2] = {
{3, arcs_41_1},
};
static arc arcs_42_0[1] = {
- {98, 1},
+ {97, 1},
};
-static arc arcs_42_1[4] = {
- {22, 0},
+static arc arcs_42_1[3] = {
+ {98, 0},
{99, 0},
- {100, 0},
{0, 1},
};
static state states_42[2] = {
{1, arcs_42_0},
- {4, arcs_42_1},
+ {3, arcs_42_1},
};
-static arc arcs_43_0[4] = {
- {96, 1},
- {97, 1},
- {101, 1},
- {102, 2},
+static arc arcs_43_0[1] = {
+ {100, 1},
};
-static arc arcs_43_1[1] = {
- {98, 3},
+static arc arcs_43_1[4] = {
+ {22, 0},
+ {101, 0},
+ {102, 0},
+ {0, 1},
};
-static arc arcs_43_2[2] = {
- {103, 2},
+static state states_43[2] = {
+ {1, arcs_43_0},
+ {4, arcs_43_1},
+};
+static arc arcs_44_0[4] = {
+ {98, 1},
+ {99, 1},
+ {103, 1},
+ {104, 2},
+};
+static arc arcs_44_1[1] = {
+ {100, 3},
+};
+static arc arcs_44_2[2] = {
+ {105, 2},
{0, 2},
};
-static arc arcs_43_3[1] = {
+static arc arcs_44_3[1] = {
{0, 3},
};
-static state states_43[4] = {
- {4, arcs_43_0},
- {1, arcs_43_1},
- {2, arcs_43_2},
- {1, arcs_43_3},
+static state states_44[4] = {
+ {4, arcs_44_0},
+ {1, arcs_44_1},
+ {2, arcs_44_2},
+ {1, arcs_44_3},
};
-static arc arcs_44_0[7] = {
+static arc arcs_45_0[7] = {
{17, 1},
- {104, 2},
- {106, 3},
- {109, 4},
+ {106, 2},
+ {108, 3},
+ {111, 4},
{13, 5},
- {110, 5},
- {111, 5},
+ {112, 5},
+ {113, 5},
};
-static arc arcs_44_1[2] = {
+static arc arcs_45_1[2] = {
{9, 6},
{19, 5},
};
-static arc arcs_44_2[2] = {
+static arc arcs_45_2[2] = {
{9, 7},
- {105, 5},
+ {107, 5},
};
-static arc arcs_44_3[2] = {
- {107, 8},
- {108, 5},
+static arc arcs_45_3[2] = {
+ {109, 8},
+ {110, 5},
};
-static arc arcs_44_4[1] = {
+static arc arcs_45_4[1] = {
{9, 9},
};
-static arc arcs_44_5[1] = {
+static arc arcs_45_5[1] = {
{0, 5},
};
-static arc arcs_44_6[1] = {
+static arc arcs_45_6[1] = {
{19, 5},
};
-static arc arcs_44_7[1] = {
- {105, 5},
+static arc arcs_45_7[1] = {
+ {107, 5},
};
-static arc arcs_44_8[1] = {
- {108, 5},
+static arc arcs_45_8[1] = {
+ {110, 5},
};
-static arc arcs_44_9[1] = {
- {109, 5},
+static arc arcs_45_9[1] = {
+ {111, 5},
};
-static state states_44[10] = {
- {7, arcs_44_0},
- {2, arcs_44_1},
- {2, arcs_44_2},
- {2, arcs_44_3},
- {1, arcs_44_4},
- {1, arcs_44_5},
- {1, arcs_44_6},
- {1, arcs_44_7},
- {1, arcs_44_8},
- {1, arcs_44_9},
-};
-static arc arcs_45_0[3] = {
+static state states_45[10] = {
+ {7, arcs_45_0},
+ {2, arcs_45_1},
+ {2, arcs_45_2},
+ {2, arcs_45_3},
+ {1, arcs_45_4},
+ {1, arcs_45_5},
+ {1, arcs_45_6},
+ {1, arcs_45_7},
+ {1, arcs_45_8},
+ {1, arcs_45_9},
+};
+static arc arcs_46_0[3] = {
{17, 1},
- {104, 2},
- {113, 3},
+ {106, 2},
+ {115, 3},
};
-static arc arcs_45_1[2] = {
+static arc arcs_46_1[2] = {
{9, 4},
{19, 5},
};
-static arc arcs_45_2[1] = {
- {112, 6},
+static arc arcs_46_2[1] = {
+ {114, 6},
};
-static arc arcs_45_3[1] = {
+static arc arcs_46_3[1] = {
{13, 5},
};
-static arc arcs_45_4[1] = {
+static arc arcs_46_4[1] = {
{19, 5},
};
-static arc arcs_45_5[1] = {
+static arc arcs_46_5[1] = {
{0, 5},
};
-static arc arcs_45_6[1] = {
- {105, 5},
+static arc arcs_46_6[1] = {
+ {107, 5},
};
-static state states_45[7] = {
- {3, arcs_45_0},
- {2, arcs_45_1},
- {1, arcs_45_2},
- {1, arcs_45_3},
- {1, arcs_45_4},
- {1, arcs_45_5},
- {1, arcs_45_6},
+static state states_46[7] = {
+ {3, arcs_46_0},
+ {2, arcs_46_1},
+ {1, arcs_46_2},
+ {1, arcs_46_3},
+ {1, arcs_46_4},
+ {1, arcs_46_5},
+ {1, arcs_46_6},
};
-static arc arcs_46_0[2] = {
+static arc arcs_47_0[2] = {
{37, 1},
{15, 2},
};
-static arc arcs_46_1[2] = {
+static arc arcs_47_1[2] = {
{15, 2},
{0, 1},
};
-static arc arcs_46_2[2] = {
+static arc arcs_47_2[2] = {
{37, 3},
{0, 2},
};
-static arc arcs_46_3[1] = {
+static arc arcs_47_3[1] = {
{0, 3},
};
-static state states_46[4] = {
- {2, arcs_46_0},
- {2, arcs_46_1},
- {2, arcs_46_2},
- {1, arcs_46_3},
-};
-static arc arcs_47_0[1] = {
- {76, 1},
-};
-static arc arcs_47_1[2] = {
- {21, 2},
- {0, 1},
-};
-static arc arcs_47_2[2] = {
- {76, 1},
- {0, 2},
-};
-static state states_47[3] = {
- {1, arcs_47_0},
+static state states_47[4] = {
+ {2, arcs_47_0},
{2, arcs_47_1},
{2, arcs_47_2},
+ {1, arcs_47_3},
};
static arc arcs_48_0[1] = {
- {37, 1},
+ {78, 1},
};
static arc arcs_48_1[2] = {
{21, 2},
{0, 1},
};
static arc arcs_48_2[2] = {
- {37, 1},
+ {78, 1},
{0, 2},
};
static state states_48[3] = {
@@ -963,71 +980,87 @@ static state states_48[3] = {
static arc arcs_49_0[1] = {
{37, 1},
};
-static arc arcs_49_1[1] = {
+static arc arcs_49_1[2] = {
+ {21, 2},
+ {0, 1},
+};
+static arc arcs_49_2[2] = {
+ {37, 1},
+ {0, 2},
+};
+static state states_49[3] = {
+ {1, arcs_49_0},
+ {2, arcs_49_1},
+ {2, arcs_49_2},
+};
+static arc arcs_50_0[1] = {
+ {37, 1},
+};
+static arc arcs_50_1[1] = {
{15, 2},
};
-static arc arcs_49_2[1] = {
+static arc arcs_50_2[1] = {
{37, 3},
};
-static arc arcs_49_3[2] = {
+static arc arcs_50_3[2] = {
{21, 4},
{0, 3},
};
-static arc arcs_49_4[2] = {
+static arc arcs_50_4[2] = {
{37, 1},
{0, 4},
};
-static state states_49[5] = {
- {1, arcs_49_0},
- {1, arcs_49_1},
- {1, arcs_49_2},
- {2, arcs_49_3},
- {2, arcs_49_4},
+static state states_50[5] = {
+ {1, arcs_50_0},
+ {1, arcs_50_1},
+ {1, arcs_50_2},
+ {2, arcs_50_3},
+ {2, arcs_50_4},
};
-static arc arcs_50_0[1] = {
- {114, 1},
+static arc arcs_51_0[1] = {
+ {116, 1},
};
-static arc arcs_50_1[1] = {
+static arc arcs_51_1[1] = {
{13, 2},
};
-static arc arcs_50_2[2] = {
+static arc arcs_51_2[2] = {
{17, 3},
{15, 4},
};
-static arc arcs_50_3[1] = {
+static arc arcs_51_3[1] = {
{9, 5},
};
-static arc arcs_50_4[1] = {
+static arc arcs_51_4[1] = {
{16, 6},
};
-static arc arcs_50_5[1] = {
+static arc arcs_51_5[1] = {
{19, 7},
};
-static arc arcs_50_6[1] = {
+static arc arcs_51_6[1] = {
{0, 6},
};
-static arc arcs_50_7[1] = {
+static arc arcs_51_7[1] = {
{15, 4},
};
-static state states_50[8] = {
- {1, arcs_50_0},
- {1, arcs_50_1},
- {2, arcs_50_2},
- {1, arcs_50_3},
- {1, arcs_50_4},
- {1, arcs_50_5},
- {1, arcs_50_6},
- {1, arcs_50_7},
-};
-static dfa dfas[51] = {
+static state states_51[8] = {
+ {1, arcs_51_0},
+ {1, arcs_51_1},
+ {2, arcs_51_2},
+ {1, arcs_51_3},
+ {1, arcs_51_4},
+ {1, arcs_51_5},
+ {1, arcs_51_6},
+ {1, arcs_51_7},
+};
+static dfa dfas[52] = {
{256, "single_input", 0, 3, states_0,
- "\004\060\002\000\320\360\017\144\001\000\000\000\043\345\004"},
+ "\004\060\002\000\120\341\137\040\007\020\000\000\214\224\023"},
{257, "file_input", 0, 2, states_1,
- "\204\060\002\000\320\360\017\144\001\000\000\000\043\345\004"},
+ "\204\060\002\000\120\341\137\040\007\020\000\000\214\224\023"},
{258, "expr_input", 0, 3, states_2,
- "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
{259, "eval_input", 0, 3, states_3,
- "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
{260, "funcdef", 0, 6, states_4,
"\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{261, "parameters", 0, 4, states_5,
@@ -1039,108 +1072,110 @@ static dfa dfas[51] = {
{264, "fplist", 0, 3, states_8,
"\000\040\002\000\000\000\000\000\000\000\000\000\000\000\000"},
{265, "stmt", 0, 2, states_9,
- "\000\060\002\000\320\360\017\144\001\000\000\000\043\345\004"},
+ "\000\060\002\000\120\341\137\040\007\020\000\000\214\224\023"},
{266, "simple_stmt", 0, 4, states_10,
- "\000\040\002\000\320\360\017\000\000\000\000\000\043\345\000"},
+ "\000\040\002\000\120\341\137\000\000\020\000\000\214\224\003"},
{267, "small_stmt", 0, 2, states_11,
- "\000\040\002\000\320\360\017\000\000\000\000\000\043\345\000"},
+ "\000\040\002\000\120\341\137\000\000\020\000\000\214\224\003"},
{268, "expr_stmt", 0, 2, states_12,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
{269, "print_stmt", 0, 3, states_13,
"\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},
{270, "del_stmt", 0, 3, states_14,
"\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000"},
{271, "pass_stmt", 0, 2, states_15,
- "\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"},
+ "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"},
{272, "flow_stmt", 0, 2, states_16,
- "\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000"},
+ "\000\000\000\000\000\340\001\000\000\000\000\000\000\000\000"},
{273, "break_stmt", 0, 2, states_17,
- "\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"},
- {274, "continue_stmt", 0, 2, states_18,
"\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"},
- {275, "return_stmt", 0, 3, states_19,
+ {274, "continue_stmt", 0, 2, states_18,
"\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"},
- {276, "raise_stmt", 0, 5, states_20,
+ {275, "return_stmt", 0, 3, states_19,
"\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"},
+ {276, "raise_stmt", 0, 5, states_20,
+ "\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"},
{277, "import_stmt", 0, 9, states_21,
- "\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000"},
+ "\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000"},
{278, "global_stmt", 0, 3, states_22,
- "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000"},
- {279, "access_stmt", 0, 7, states_23,
"\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"},
+ {279, "access_stmt", 0, 7, states_23,
+ "\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"},
{280, "accesstype", 0, 2, states_24,
"\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"},
- {281, "compound_stmt", 0, 2, states_25,
- "\000\020\000\000\000\000\000\144\001\000\000\000\000\000\004"},
- {282, "if_stmt", 0, 8, states_26,
- "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000"},
- {283, "while_stmt", 0, 8, states_27,
+ {281, "exec_stmt", 0, 7, states_25,
+ "\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000"},
+ {282, "compound_stmt", 0, 2, states_26,
+ "\000\020\000\000\000\000\000\040\007\000\000\000\000\000\020"},
+ {283, "if_stmt", 0, 8, states_27,
"\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"},
- {284, "for_stmt", 0, 10, states_28,
- "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000"},
- {285, "try_stmt", 0, 10, states_29,
+ {284, "while_stmt", 0, 8, states_28,
"\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000"},
- {286, "except_clause", 0, 5, states_30,
- "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000"},
- {287, "suite", 0, 5, states_31,
- "\004\040\002\000\320\360\017\000\000\000\000\000\043\345\000"},
- {288, "test", 0, 2, states_32,
- "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
- {289, "and_test", 0, 2, states_33,
- "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
- {290, "not_test", 0, 3, states_34,
- "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
- {291, "comparison", 0, 2, states_35,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {292, "comp_op", 0, 4, states_36,
- "\000\000\000\000\000\000\000\200\000\304\077\000\000\000\000"},
- {293, "expr", 0, 2, states_37,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {294, "xor_expr", 0, 2, states_38,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {295, "and_expr", 0, 2, states_39,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {296, "shift_expr", 0, 2, states_40,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {297, "arith_expr", 0, 2, states_41,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {298, "term", 0, 2, states_42,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {299, "factor", 0, 4, states_43,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {300, "atom", 0, 10, states_44,
- "\000\040\002\000\000\000\000\000\000\000\000\000\000\345\000"},
- {301, "trailer", 0, 7, states_45,
- "\000\000\002\000\000\000\000\000\000\000\000\000\000\001\002"},
- {302, "subscript", 0, 4, states_46,
- "\000\240\002\000\000\000\000\000\000\004\000\000\043\345\000"},
- {303, "exprlist", 0, 3, states_47,
- "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
- {304, "testlist", 0, 3, states_48,
- "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
- {305, "dictmaker", 0, 5, states_49,
- "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
- {306, "classdef", 0, 8, states_50,
- "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004"},
-};
-static label labels[115] = {
+ {285, "for_stmt", 0, 10, states_29,
+ "\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000"},
+ {286, "try_stmt", 0, 10, states_30,
+ "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000"},
+ {287, "except_clause", 0, 5, states_31,
+ "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000"},
+ {288, "suite", 0, 5, states_32,
+ "\004\040\002\000\120\341\137\000\000\020\000\000\214\224\003"},
+ {289, "test", 0, 2, states_33,
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
+ {290, "and_test", 0, 2, states_34,
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
+ {291, "not_test", 0, 3, states_35,
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
+ {292, "comparison", 0, 2, states_36,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {293, "comp_op", 0, 4, states_37,
+ "\000\000\000\000\000\000\200\000\000\020\377\000\000\000\000"},
+ {294, "expr", 0, 2, states_38,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {295, "xor_expr", 0, 2, states_39,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {296, "and_expr", 0, 2, states_40,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {297, "shift_expr", 0, 2, states_41,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {298, "arith_expr", 0, 2, states_42,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {299, "term", 0, 2, states_43,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {300, "factor", 0, 4, states_44,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {301, "atom", 0, 10, states_45,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\000\224\003"},
+ {302, "trailer", 0, 7, states_46,
+ "\000\000\002\000\000\000\000\000\000\000\000\000\000\004\010"},
+ {303, "subscript", 0, 4, states_47,
+ "\000\240\002\000\000\000\000\000\000\020\000\000\214\224\003"},
+ {304, "exprlist", 0, 3, states_48,
+ "\000\040\002\000\000\000\000\000\000\000\000\000\214\224\003"},
+ {305, "testlist", 0, 3, states_49,
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
+ {306, "dictmaker", 0, 5, states_50,
+ "\000\040\002\000\000\000\000\000\000\020\000\000\214\224\003"},
+ {307, "classdef", 0, 8, states_51,
+ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020"},
+};
+static label labels[117] = {
{0, "EMPTY"},
{256, 0},
{4, 0},
{266, 0},
- {281, 0},
+ {282, 0},
{257, 0},
{265, 0},
{0, 0},
{258, 0},
- {304, 0},
+ {305, 0},
{259, 0},
{260, 0},
{1, "def"},
{1, 0},
{261, 0},
{11, 0},
- {287, 0},
+ {288, 0},
{7, 0},
{262, 0},
{8, 0},
@@ -1158,11 +1193,12 @@ static label labels[115] = {
{277, 0},
{278, 0},
{279, 0},
- {303, 0},
+ {281, 0},
{22, 0},
{1, "print"},
- {288, 0},
+ {289, 0},
{1, "del"},
+ {304, 0},
{1, "pass"},
{273, 0},
{274, 0},
@@ -1177,31 +1213,32 @@ static label labels[115] = {
{1, "global"},
{1, "access"},
{280, 0},
- {282, 0},
+ {1, "exec"},
+ {1, "in"},
{283, 0},
{284, 0},
{285, 0},
- {306, 0},
+ {286, 0},
+ {307, 0},
{1, "if"},
{1, "elif"},
{1, "else"},
{1, "while"},
{1, "for"},
- {1, "in"},
{1, "try"},
- {286, 0},
+ {287, 0},
{1, "finally"},
{1, "except"},
{5, 0},
{6, 0},
- {289, 0},
- {1, "or"},
{290, 0},
+ {1, "or"},
+ {291, 0},
{1, "and"},
{1, "not"},
- {291, 0},
- {293, 0},
{292, 0},
+ {294, 0},
+ {293, 0},
{20, 0},
{21, 0},
{28, 0},
@@ -1210,39 +1247,39 @@ static label labels[115] = {
{29, 0},
{29, 0},
{1, "is"},
- {294, 0},
- {18, 0},
{295, 0},
- {33, 0},
+ {18, 0},
{296, 0},
- {19, 0},
+ {33, 0},
{297, 0},
+ {19, 0},
+ {298, 0},
{34, 0},
{35, 0},
- {298, 0},
+ {299, 0},
{14, 0},
{15, 0},
- {299, 0},
+ {300, 0},
{17, 0},
{24, 0},
{32, 0},
- {300, 0},
{301, 0},
+ {302, 0},
{9, 0},
{10, 0},
{26, 0},
- {305, 0},
+ {306, 0},
{27, 0},
{25, 0},
{2, 0},
{3, 0},
- {302, 0},
+ {303, 0},
{23, 0},
{1, "class"},
};
grammar gram = {
- 51,
+ 52,
dfas,
- {115, labels},
+ {117, labels},
256
};