diff options
-rw-r--r-- | Grammar/Grammar | 9 | ||||
-rw-r--r-- | Include/fileobject.h | 1 | ||||
-rw-r--r-- | Include/graminit.h | 53 | ||||
-rw-r--r-- | Include/opcode.h | 2 | ||||
-rw-r--r-- | Objects/fileobject.c | 10 | ||||
-rw-r--r-- | Python/bltinmodule.c | 9 | ||||
-rw-r--r-- | Python/ceval.c | 78 | ||||
-rw-r--r-- | Python/compile.c | 26 | ||||
-rw-r--r-- | Python/graminit.c | 833 |
9 files changed, 585 insertions, 436 deletions
diff --git a/Grammar/Grammar b/Grammar/Grammar index 430b791..1ba6b5c 100644 --- a/Grammar/Grammar +++ b/Grammar/Grammar @@ -2,6 +2,10 @@ # Change log: +# 18-Oct-93: +# Use testlist instead of exprlist in expr_stmt +# Add exec statement + # 19-May-93: # Add access statement @@ -87,8 +91,8 @@ fplist: fpdef (',' fpdef)* [','] stmt: simple_stmt | compound_stmt simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE -small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | access_stmt -expr_stmt: (exprlist '=')* exprlist +small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | access_stmt | exec_stmt +expr_stmt: (testlist '=')* testlist # For assignments, additional restrictions enforced by the interpreter print_stmt: 'print' (test ',')* [test] del_stmt: 'del' exprlist @@ -104,6 +108,7 @@ access_stmt: 'access' ('*' | NAME (',' NAME)*) ':' accesstype (',' accesstype)* accesstype: NAME+ # accesstype should be ('public' | 'protected' | 'private') ['read'] ['write'] # but can't be because that would create undesirable reserved words! +exec_stmt: 'exec' expr ['in' expr [',' expr]] compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] diff --git a/Include/fileobject.h b/Include/fileobject.h index 14c345f..00e4ca9 100644 --- a/Include/fileobject.h +++ b/Include/fileobject.h @@ -38,6 +38,7 @@ extern object *newfileobject PROTO((char *, char *)); extern object *newopenfileobject PROTO((FILE *, char *, char *, int (*)FPROTO((FILE *)))); extern FILE *getfilefile PROTO((object *)); +extern object *getfilename PROTO((object *)); extern object *filegetline PROTO((object *, int)); #ifdef __cplusplus diff --git a/Include/graminit.h b/Include/graminit.h index 0ba02a6..288e333 100644 --- a/Include/graminit.h +++ b/Include/graminit.h @@ -23,29 +23,30 @@ #define global_stmt 278 #define access_stmt 279 #define accesstype 280 -#define compound_stmt 281 -#define if_stmt 282 -#define while_stmt 283 -#define for_stmt 284 -#define try_stmt 285 -#define except_clause 286 -#define suite 287 -#define test 288 -#define and_test 289 -#define not_test 290 -#define comparison 291 -#define comp_op 292 -#define expr 293 -#define xor_expr 294 -#define and_expr 295 -#define shift_expr 296 -#define arith_expr 297 -#define term 298 -#define factor 299 -#define atom 300 -#define trailer 301 -#define subscript 302 -#define exprlist 303 -#define testlist 304 -#define dictmaker 305 -#define classdef 306 +#define exec_stmt 281 +#define compound_stmt 282 +#define if_stmt 283 +#define while_stmt 284 +#define for_stmt 285 +#define try_stmt 286 +#define except_clause 287 +#define suite 288 +#define test 289 +#define and_test 290 +#define not_test 291 +#define comparison 292 +#define comp_op 293 +#define expr 294 +#define xor_expr 295 +#define and_expr 296 +#define shift_expr 297 +#define arith_expr 298 +#define term 299 +#define factor 300 +#define atom 301 +#define trailer 302 +#define subscript 303 +#define exprlist 304 +#define testlist 305 +#define dictmaker 306 +#define classdef 307 diff --git a/Include/opcode.h b/Include/opcode.h index b53b44d..53ce333 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -78,6 +78,8 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #define RAISE_EXCEPTION 81 #define LOAD_LOCALS 82 #define RETURN_VALUE 83 +#define LOAD_GLOBALS 84 +#define EXEC_STMT 85 #define BUILD_FUNCTION 86 #define POP_BLOCK 87 diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 99cdba2..b981bb8 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -52,6 +52,16 @@ getfilefile(f) } object * +getfilename(f) + object *f; +{ + if (f == NULL || !is_fileobject(f)) + return NULL; + else + return ((fileobject *)f)->f_name; +} + +object * newopenfileobject(fp, name, mode, close) FILE *fp; char *name; 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 }; |