diff options
Diffstat (limited to 'Python')
-rw-r--r-- | Python/compile.c | 283 | ||||
-rw-r--r-- | Python/graminit.c | 703 | ||||
-rw-r--r-- | Python/symtable.c | 2 |
3 files changed, 680 insertions, 308 deletions
diff --git a/Python/compile.c b/Python/compile.c index 7bbcd62..15159f8 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -744,11 +744,15 @@ static int com_add(struct compiling *, PyObject *, PyObject *, PyObject *); static int com_addconst(struct compiling *, PyObject *); static int com_addname(struct compiling *, PyObject *); static void com_addopname(struct compiling *, int, node *); +static void com_test(struct compiling *c, node *n); static void com_list(struct compiling *, node *, int); static void com_list_iter(struct compiling *, node *, node *, char *); +static void com_gen_iter(struct compiling *, node *, node *); static int com_argdefs(struct compiling *, node *); static void com_assign(struct compiling *, node *, int, node *); static void com_assign_name(struct compiling *, node *, int); +static int com_make_closure(struct compiling *c, PyCodeObject *co); + static PyCodeObject *icompile(node *, struct compiling *); static PyCodeObject *jcompile(node *, const char *, struct compiling *, PyCompilerFlags *); @@ -759,6 +763,7 @@ static node *get_rawdocstring(node *); static int get_ref_type(struct compiling *, char *); /* symtable operations */ +static int symtable_lookup(struct symtable *st, char *name); static struct symtable *symtable_build(node *, PyFutureFeatures *, const char *filename); static int symtable_load_symbols(struct compiling *); @@ -777,7 +782,10 @@ static void symtable_global(struct symtable *, node *); static void symtable_import(struct symtable *, node *); static void symtable_assign(struct symtable *, node *, int); static void symtable_list_comprehension(struct symtable *, node *); +static void symtable_generator_expression(struct symtable *, node *); static void symtable_list_for(struct symtable *, node *); +static void symtable_gen_for(struct symtable *, node *, int); +static void symtable_gen_iter(struct symtable *, node *); static int symtable_update_free_vars(struct symtable *); static int symtable_undo_free(struct symtable *, PyObject *, PyObject *); @@ -1589,7 +1597,7 @@ com_list_for(struct compiling *c, node *n, node *e, char *t) int anchor = 0; int save_begin = c->c_begin; - /* list_iter: for v in expr [list_iter] */ + /* list_for: for v in expr [list_iter] */ com_node(c, CHILD(n, 3)); /* expr */ com_addbyte(c, GET_ITER); c->c_begin = c->c_nexti; @@ -1606,6 +1614,52 @@ com_list_for(struct compiling *c, node *n, node *e, char *t) } static void +com_gen_for(struct compiling *c, node *n, node *t, int is_outmost) +{ + int break_anchor = 0; + int anchor = 0; + int save_begin = c->c_begin; + + REQ(n, gen_for); + /* gen_for: for v in test [gen_iter] */ + + com_addfwref(c, SETUP_LOOP, &break_anchor); + block_push(c, SETUP_LOOP); + + if (is_outmost) { + com_addop_varname(c, VAR_LOAD, "[outmost-iterable]"); + com_push(c, 1); + } + else { + com_node(c, CHILD(n, 3)); + com_addbyte(c, GET_ITER); + } + + c->c_begin = c->c_nexti; + com_set_lineno(c, c->c_last_line); + com_addfwref(c, FOR_ITER, &anchor); + com_push(c, 1); + com_assign(c, CHILD(n, 1), OP_ASSIGN, NULL); + + if (NCH(n) == 5) + com_gen_iter(c, CHILD(n, 4), t); + else { + com_test(c, t); + com_addbyte(c, YIELD_VALUE); + com_pop(c, 1); + } + + com_addoparg(c, JUMP_ABSOLUTE, c->c_begin); + c->c_begin = save_begin; + + com_backpatch(c, anchor); + com_pop(c, 1); /* FOR_ITER has popped this */ + com_addbyte(c, POP_BLOCK); + block_pop(c, SETUP_LOOP); + com_backpatch(c, break_anchor); +} + +static void com_list_if(struct compiling *c, node *n, node *e, char *t) { int anchor = 0; @@ -1624,6 +1678,32 @@ com_list_if(struct compiling *c, node *n, node *e, char *t) } static void +com_gen_if(struct compiling *c, node *n, node *t) +{ + /* gen_if: 'if' test [gen_iter] */ + int anchor = 0; + int a=0; + + com_node(c, CHILD(n, 1)); + com_addfwref(c, JUMP_IF_FALSE, &a); + com_addbyte(c, POP_TOP); + com_pop(c, 1); + + if (NCH(n) == 3) + com_gen_iter(c, CHILD(n, 2), t); + else { + com_test(c, t); + com_addbyte(c, YIELD_VALUE); + com_pop(c, 1); + } + com_addfwref(c, JUMP_FORWARD, &anchor); + com_backpatch(c, a); + /* We jump here with an extra entry which we now pop */ + com_addbyte(c, POP_TOP); + com_backpatch(c, anchor); +} + +static void com_list_iter(struct compiling *c, node *p, /* parent of list_iter node */ node *e, /* element expression node */ @@ -1655,6 +1735,28 @@ com_list_iter(struct compiling *c, } static void +com_gen_iter(struct compiling *c, node *n, node *t) +{ + /* gen_iter: gen_for | gen_if */ + node *ch; + REQ(n, gen_iter); + + ch = CHILD(n, 0); + + switch (TYPE(ch)) { + case gen_for: + com_gen_for(c, ch, t, 0); + break; + case gen_if: + com_gen_if(c, ch, t); + break; + default: + com_error(c, PyExc_SystemError, + "invalid gen_iter node type"); + } +} + +static void com_list_comprehension(struct compiling *c, node *n) { /* listmaker: test list_for */ @@ -1689,6 +1791,52 @@ com_listmaker(struct compiling *c, node *n) } static void +com_generator_expression(struct compiling *c, node *n) +{ + /* testlist_gexp: test gen_for */ + /* argument: test gen_for */ + PyCodeObject *co; + + REQ(CHILD(n, 0), test); + REQ(CHILD(n, 1), gen_for); + + symtable_enter_scope(c->c_symtable, "<genexpr>", TYPE(n), + n->n_lineno); + co = icompile(n, c); + symtable_exit_scope(c->c_symtable); + + if (co == NULL) + c->c_errors++; + else { + int closure = com_make_closure(c, co); + int i = com_addconst(c, (PyObject *)co); + + com_addoparg(c, LOAD_CONST, i); + com_push(c, 1); + if (closure) + com_addoparg(c, MAKE_CLOSURE, 0); + else + com_addoparg(c, MAKE_FUNCTION, 0); + + com_test(c, CHILD(CHILD(n, 1), 3)); + com_addbyte(c, GET_ITER); + com_addoparg(c, CALL_FUNCTION, 1); + com_pop(c, 1); + + Py_DECREF(co); + } +} + +static void +com_testlist_gexp(struct compiling *c, node *n) +{ + /* testlist_gexp: test ( gen_for | (',' test)* [','] ) */ + if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == gen_for) + com_generator_expression(c, n); + else com_list(c, n, 0); +} + +static void com_dictmaker(struct compiling *c, node *n) { int i; @@ -1721,7 +1869,7 @@ com_atom(struct compiling *c, node *n) com_push(c, 1); } else - com_node(c, CHILD(n, 1)); + com_testlist_gexp(c, CHILD(n, 1)); break; case LSQB: /* '[' [listmaker] ']' */ if (TYPE(CHILD(n, 1)) == RSQB) { @@ -1857,7 +2005,7 @@ static void com_argument(struct compiling *c, node *n, PyObject **pkeywords) { node *m; - REQ(n, argument); /* [test '='] test; really [keyword '='] test */ + REQ(n, argument); /* [test '='] test [gen_for]; really [keyword '='] test */ if (NCH(n) == 1) { if (*pkeywords != NULL) { com_error(c, PyExc_SyntaxError, @@ -1868,6 +2016,11 @@ com_argument(struct compiling *c, node *n, PyObject **pkeywords) } return; } + if (NCH(n) == 2) { + com_generator_expression(c, n); + return; + } + m = n; do { m = CHILD(m, 0); @@ -2723,7 +2876,8 @@ static void com_assign_sequence(struct compiling *c, node *n, int assigning) { int i; - if (TYPE(n) != testlist && TYPE(n) != listmaker) + if (TYPE(n) != testlist && TYPE(n) != testlist_gexp && + TYPE(n) != listmaker) REQ(n, exprlist); if (assigning) { i = (NCH(n)+1)/2; @@ -2765,7 +2919,13 @@ com_assign(struct compiling *c, node *n, int assigning, node *augn) case exprlist: case testlist: case testlist1: + case testlist_gexp: if (NCH(n) > 1) { + if (TYPE(CHILD(n, 1)) == gen_for) { + com_error(c, PyExc_SystemError, + "assign to generator expression not possible"); + return; + } if (assigning > OP_APPLY) { com_error(c, PyExc_SyntaxError, "augmented assign to tuple not possible"); @@ -4253,6 +4413,23 @@ compile_classdef(struct compiling *c, node *n) } static void +compile_generator_expression(struct compiling *c, node *n) +{ + /* testlist_gexp: test gen_for */ + /* argument: test gen_for */ + REQ(CHILD(n, 0), test); + REQ(CHILD(n, 1), gen_for); + + c->c_name = "<generator expression>"; + com_gen_for(c, CHILD(n, 1), CHILD(n, 0), 1); + + com_addoparg(c, LOAD_CONST, com_addconst(c, Py_None)); + com_push(c, 1); + com_addbyte(c, RETURN_VALUE); + com_pop(c, 1); +} + +static void compile_node(struct compiling *c, node *n) { com_set_lineno(c, n->n_lineno); @@ -4300,6 +4477,11 @@ compile_node(struct compiling *c, node *n) compile_classdef(c, n); break; + case testlist_gexp: /* A generator expression */ + case argument: /* A generator expression */ + compile_generator_expression(c, n); + break; + default: com_error(c, PyExc_SystemError, "compile_node: unexpected node type"); @@ -4976,7 +5158,6 @@ symtable_load_symbols(struct compiling *c) } } } - assert(PyDict_Size(c->c_freevars) == si.si_nfrees); if (si.si_ncells > 1) { /* one cell is always in order */ @@ -5346,11 +5527,11 @@ look_for_yield(node *n) return 0; case yield_stmt: - return 1; + return GENERATOR; default: if (look_for_yield(kid)) - return 1; + return GENERATOR; } } return 0; @@ -5494,6 +5675,18 @@ symtable_node(struct symtable *st, node *n) if (TYPE(CHILD(n, i)) >= single_input) symtable_node(st, CHILD(n, i)); break; + case arglist: + if (NCH(n) > 1) + for (i = 0; i < NCH(n); ++i) { + node *ch = CHILD(n, i); + if (TYPE(ch) == argument && NCH(ch) == 2 && + TYPE(CHILD(ch, 1)) == gen_for) { + PyErr_SetString(PyExc_SyntaxError, + "invalid syntax"); + symtable_error(st, n->n_lineno); + return; + } + } /* The remaining cases fall through to default except in special circumstances. This requires the individual cases to be coded with great care, even though they look like @@ -5504,6 +5697,11 @@ symtable_node(struct symtable *st, node *n) n = CHILD(n, 2); goto loop; } + else if (TYPE(n) == argument && NCH(n) == 2 && + TYPE(CHILD(n, 1)) == gen_for) { + symtable_generator_expression(st, n); + break; + } /* fall through */ case listmaker: if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == list_for) { @@ -5511,6 +5709,13 @@ symtable_node(struct symtable *st, node *n) break; } /* fall through */ + case testlist_gexp: + if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == gen_for) { + symtable_generator_expression(st, n); + break; + } + /* fall through */ + case atom: if (TYPE(n) == atom && TYPE(CHILD(n, 0)) == NAME) { symtable_add_use(st, STR(CHILD(n, 0))); @@ -5715,6 +5920,26 @@ symtable_list_comprehension(struct symtable *st, node *n) } static void +symtable_generator_expression(struct symtable *st, node *n) +{ + /* testlist_gexp: test gen_for */ + REQ(CHILD(n, 0), test); + REQ(CHILD(n, 1), gen_for); + + symtable_enter_scope(st, "<genexpr>", TYPE(n), n->n_lineno); + st->st_cur->ste_generator = GENERATOR_EXPRESSION; + + symtable_add_def(st, "[outmost-iterable]", DEF_PARAM); + + symtable_gen_for(st, CHILD(n, 1), 1); + symtable_node(st, CHILD(n, 0)); + symtable_exit_scope(st); + + /* for outmost iterable precomputation */ + symtable_node(st, CHILD(CHILD(n, 1), 3)); +} + +static void symtable_list_for(struct symtable *st, node *n) { REQ(n, list_for); @@ -5726,6 +5951,39 @@ symtable_list_for(struct symtable *st, node *n) } static void +symtable_gen_for(struct symtable *st, node *n, int is_outmost) +{ + REQ(n, gen_for); + + /* gen_for: for v in test [gen_iter] */ + symtable_assign(st, CHILD(n, 1), 0); + if (is_outmost) + symtable_add_use(st, "[outmost-iterable]"); + else + symtable_node(st, CHILD(n, 3)); + + if (NCH(n) == 5) + symtable_gen_iter(st, CHILD(n, 4)); +} + +static void +symtable_gen_iter(struct symtable *st, node *n) +{ + REQ(n, gen_iter); + + n = CHILD(n, 0); + if (TYPE(n) == gen_for) + symtable_gen_for(st, n, 0); + else { + REQ(n, gen_if); + symtable_node(st, CHILD(n, 1)); + + if (NCH(n) == 3) + symtable_gen_iter(st, CHILD(n, 2)); + } +} + +static void symtable_import(struct symtable *st, node *n) { int i; @@ -5813,6 +6071,17 @@ symtable_assign(struct symtable *st, node *n, int def_flag) symtable_assign(st, CHILD(n, i), def_flag); } return; + case testlist_gexp: + if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == gen_for) { + /* XXX This is an error, but the next pass + will catch it. */ + return; + } else { + for (i = 0; i < NCH(n); i += 2) + symtable_assign(st, CHILD(n, i), def_flag); + } + return; + case exprlist: case testlist: case testlist1: diff --git a/Python/graminit.c b/Python/graminit.c index 98bad94..cd8240b 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -1016,46 +1016,46 @@ static state states_48[4] = { }; static arc arcs_49_0[7] = { {16, 1}, - {127, 2}, - {130, 3}, - {133, 4}, + {128, 2}, + {131, 3}, + {134, 4}, {12, 5}, - {135, 5}, - {136, 6}, + {136, 5}, + {137, 6}, }; static arc arcs_49_1[2] = { - {9, 7}, + {127, 7}, {18, 5}, }; static arc arcs_49_2[2] = { - {128, 8}, - {129, 5}, + {129, 8}, + {130, 5}, }; static arc arcs_49_3[2] = { - {131, 9}, - {132, 5}, + {132, 9}, + {133, 5}, }; static arc arcs_49_4[1] = { - {134, 10}, + {135, 10}, }; static arc arcs_49_5[1] = { {0, 5}, }; static arc arcs_49_6[2] = { - {136, 6}, + {137, 6}, {0, 6}, }; static arc arcs_49_7[1] = { {18, 5}, }; static arc arcs_49_8[1] = { - {129, 5}, + {130, 5}, }; static arc arcs_49_9[1] = { - {132, 5}, + {133, 5}, }; static arc arcs_49_10[1] = { - {133, 5}, + {134, 5}, }; static state states_49[11] = { {7, arcs_49_0}, @@ -1074,7 +1074,7 @@ static arc arcs_50_0[1] = { {21, 1}, }; static arc arcs_50_1[3] = { - {137, 2}, + {138, 2}, {22, 3}, {0, 1}, }; @@ -1097,153 +1097,163 @@ static state states_50[5] = { {2, arcs_50_4}, }; static arc arcs_51_0[1] = { - {138, 1}, + {21, 1}, }; -static arc arcs_51_1[2] = { - {17, 2}, - {14, 3}, +static arc arcs_51_1[3] = { + {139, 2}, + {22, 3}, + {0, 1}, }; static arc arcs_51_2[1] = { - {14, 3}, + {0, 2}, }; -static arc arcs_51_3[1] = { +static arc arcs_51_3[2] = { {21, 4}, + {0, 3}, }; -static arc arcs_51_4[1] = { +static arc arcs_51_4[2] = { + {22, 3}, {0, 4}, }; static state states_51[5] = { {1, arcs_51_0}, - {2, arcs_51_1}, + {3, arcs_51_1}, {1, arcs_51_2}, - {1, arcs_51_3}, - {1, arcs_51_4}, + {2, arcs_51_3}, + {2, arcs_51_4}, }; -static arc arcs_52_0[3] = { - {16, 1}, - {127, 2}, - {70, 3}, +static arc arcs_52_0[1] = { + {140, 1}, }; static arc arcs_52_1[2] = { - {139, 4}, - {18, 5}, + {17, 2}, + {14, 3}, }; static arc arcs_52_2[1] = { - {140, 6}, + {14, 3}, }; static arc arcs_52_3[1] = { - {12, 5}, + {21, 4}, }; static arc arcs_52_4[1] = { - {18, 5}, -}; -static arc arcs_52_5[1] = { - {0, 5}, -}; -static arc arcs_52_6[1] = { - {129, 5}, + {0, 4}, }; -static state states_52[7] = { - {3, arcs_52_0}, +static state states_52[5] = { + {1, arcs_52_0}, {2, arcs_52_1}, {1, arcs_52_2}, {1, arcs_52_3}, {1, arcs_52_4}, - {1, arcs_52_5}, - {1, arcs_52_6}, }; -static arc arcs_53_0[1] = { - {141, 1}, +static arc arcs_53_0[3] = { + {16, 1}, + {128, 2}, + {70, 3}, }; static arc arcs_53_1[2] = { + {141, 4}, + {18, 5}, +}; +static arc arcs_53_2[1] = { + {142, 6}, +}; +static arc arcs_53_3[1] = { + {12, 5}, +}; +static arc arcs_53_4[1] = { + {18, 5}, +}; +static arc arcs_53_5[1] = { + {0, 5}, +}; +static arc arcs_53_6[1] = { + {130, 5}, +}; +static state states_53[7] = { + {3, arcs_53_0}, + {2, arcs_53_1}, + {1, arcs_53_2}, + {1, arcs_53_3}, + {1, arcs_53_4}, + {1, arcs_53_5}, + {1, arcs_53_6}, +}; +static arc arcs_54_0[1] = { + {143, 1}, +}; +static arc arcs_54_1[2] = { {22, 2}, {0, 1}, }; -static arc arcs_53_2[2] = { - {141, 1}, +static arc arcs_54_2[2] = { + {143, 1}, {0, 2}, }; -static state states_53[3] = { - {1, arcs_53_0}, - {2, arcs_53_1}, - {2, arcs_53_2}, +static state states_54[3] = { + {1, arcs_54_0}, + {2, arcs_54_1}, + {2, arcs_54_2}, }; -static arc arcs_54_0[3] = { +static arc arcs_55_0[3] = { {70, 1}, {21, 2}, {14, 3}, }; -static arc arcs_54_1[1] = { +static arc arcs_55_1[1] = { {70, 4}, }; -static arc arcs_54_2[2] = { +static arc arcs_55_2[2] = { {14, 3}, {0, 2}, }; -static arc arcs_54_3[3] = { +static arc arcs_55_3[3] = { {21, 5}, - {142, 6}, + {144, 6}, {0, 3}, }; -static arc arcs_54_4[1] = { +static arc arcs_55_4[1] = { {70, 6}, }; -static arc arcs_54_5[2] = { - {142, 6}, +static arc arcs_55_5[2] = { + {144, 6}, {0, 5}, }; -static arc arcs_54_6[1] = { +static arc arcs_55_6[1] = { {0, 6}, }; -static state states_54[7] = { - {3, arcs_54_0}, - {1, arcs_54_1}, - {2, arcs_54_2}, - {3, arcs_54_3}, - {1, arcs_54_4}, - {2, arcs_54_5}, - {1, arcs_54_6}, -}; -static arc arcs_55_0[1] = { - {14, 1}, -}; -static arc arcs_55_1[2] = { - {21, 2}, - {0, 1}, -}; -static arc arcs_55_2[1] = { - {0, 2}, -}; -static state states_55[3] = { - {1, arcs_55_0}, - {2, arcs_55_1}, - {1, arcs_55_2}, +static state states_55[7] = { + {3, arcs_55_0}, + {1, arcs_55_1}, + {2, arcs_55_2}, + {3, arcs_55_3}, + {1, arcs_55_4}, + {2, arcs_55_5}, + {1, arcs_55_6}, }; static arc arcs_56_0[1] = { - {73, 1}, + {14, 1}, }; static arc arcs_56_1[2] = { - {22, 2}, + {21, 2}, {0, 1}, }; -static arc arcs_56_2[2] = { - {73, 1}, +static arc arcs_56_2[1] = { {0, 2}, }; static state states_56[3] = { {1, arcs_56_0}, {2, arcs_56_1}, - {2, arcs_56_2}, + {1, arcs_56_2}, }; static arc arcs_57_0[1] = { - {21, 1}, + {73, 1}, }; static arc arcs_57_1[2] = { {22, 2}, {0, 1}, }; static arc arcs_57_2[2] = { - {21, 1}, + {73, 1}, {0, 2}, }; static state states_57[3] = { @@ -1258,29 +1268,21 @@ static arc arcs_58_1[2] = { {22, 2}, {0, 1}, }; -static arc arcs_58_2[1] = { - {21, 3}, -}; -static arc arcs_58_3[2] = { - {22, 4}, - {0, 3}, -}; -static arc arcs_58_4[2] = { - {21, 3}, - {0, 4}, +static arc arcs_58_2[2] = { + {21, 1}, + {0, 2}, }; -static state states_58[5] = { +static state states_58[3] = { {1, arcs_58_0}, {2, arcs_58_1}, - {1, arcs_58_2}, - {2, arcs_58_3}, - {2, arcs_58_4}, + {2, arcs_58_2}, }; static arc arcs_59_0[1] = { {21, 1}, }; -static arc arcs_59_1[1] = { - {14, 2}, +static arc arcs_59_1[2] = { + {22, 2}, + {0, 1}, }; static arc arcs_59_2[1] = { {21, 3}, @@ -1290,328 +1292,423 @@ static arc arcs_59_3[2] = { {0, 3}, }; static arc arcs_59_4[2] = { - {21, 1}, + {21, 3}, {0, 4}, }; static state states_59[5] = { {1, arcs_59_0}, - {1, arcs_59_1}, + {2, arcs_59_1}, {1, arcs_59_2}, {2, arcs_59_3}, {2, arcs_59_4}, }; static arc arcs_60_0[1] = { - {144, 1}, + {21, 1}, }; static arc arcs_60_1[1] = { + {14, 2}, +}; +static arc arcs_60_2[1] = { + {21, 3}, +}; +static arc arcs_60_3[2] = { + {22, 4}, + {0, 3}, +}; +static arc arcs_60_4[2] = { + {21, 1}, + {0, 4}, +}; +static state states_60[5] = { + {1, arcs_60_0}, + {1, arcs_60_1}, + {1, arcs_60_2}, + {2, arcs_60_3}, + {2, arcs_60_4}, +}; +static arc arcs_61_0[1] = { + {146, 1}, +}; +static arc arcs_61_1[1] = { {12, 2}, }; -static arc arcs_60_2[2] = { +static arc arcs_61_2[2] = { {16, 3}, {14, 4}, }; -static arc arcs_60_3[1] = { +static arc arcs_61_3[1] = { {9, 5}, }; -static arc arcs_60_4[1] = { +static arc arcs_61_4[1] = { {15, 6}, }; -static arc arcs_60_5[1] = { +static arc arcs_61_5[1] = { {18, 7}, }; -static arc arcs_60_6[1] = { +static arc arcs_61_6[1] = { {0, 6}, }; -static arc arcs_60_7[1] = { +static arc arcs_61_7[1] = { {14, 4}, }; -static state states_60[8] = { - {1, arcs_60_0}, - {1, arcs_60_1}, - {2, arcs_60_2}, - {1, arcs_60_3}, - {1, arcs_60_4}, - {1, arcs_60_5}, - {1, arcs_60_6}, - {1, arcs_60_7}, -}; -static arc arcs_61_0[3] = { - {145, 1}, +static state states_61[8] = { + {1, arcs_61_0}, + {1, arcs_61_1}, + {2, arcs_61_2}, + {1, arcs_61_3}, + {1, arcs_61_4}, + {1, arcs_61_5}, + {1, arcs_61_6}, + {1, arcs_61_7}, +}; +static arc arcs_62_0[3] = { + {147, 1}, {23, 2}, {24, 3}, }; -static arc arcs_61_1[2] = { +static arc arcs_62_1[2] = { {22, 4}, {0, 1}, }; -static arc arcs_61_2[1] = { +static arc arcs_62_2[1] = { {21, 5}, }; -static arc arcs_61_3[1] = { +static arc arcs_62_3[1] = { {21, 6}, }; -static arc arcs_61_4[4] = { - {145, 1}, +static arc arcs_62_4[4] = { + {147, 1}, {23, 2}, {24, 3}, {0, 4}, }; -static arc arcs_61_5[2] = { +static arc arcs_62_5[2] = { {22, 7}, {0, 5}, }; -static arc arcs_61_6[1] = { +static arc arcs_62_6[1] = { {0, 6}, }; -static arc arcs_61_7[1] = { +static arc arcs_62_7[1] = { {24, 3}, }; -static state states_61[8] = { - {3, arcs_61_0}, - {2, arcs_61_1}, - {1, arcs_61_2}, - {1, arcs_61_3}, - {4, arcs_61_4}, - {2, arcs_61_5}, - {1, arcs_61_6}, - {1, arcs_61_7}, +static state states_62[8] = { + {3, arcs_62_0}, + {2, arcs_62_1}, + {1, arcs_62_2}, + {1, arcs_62_3}, + {4, arcs_62_4}, + {2, arcs_62_5}, + {1, arcs_62_6}, + {1, arcs_62_7}, }; -static arc arcs_62_0[1] = { +static arc arcs_63_0[1] = { {21, 1}, }; -static arc arcs_62_1[2] = { +static arc arcs_63_1[3] = { {20, 2}, + {139, 3}, {0, 1}, }; -static arc arcs_62_2[1] = { - {21, 3}, +static arc arcs_63_2[1] = { + {21, 4}, }; -static arc arcs_62_3[1] = { +static arc arcs_63_3[1] = { {0, 3}, }; -static state states_62[4] = { - {1, arcs_62_0}, - {2, arcs_62_1}, - {1, arcs_62_2}, - {1, arcs_62_3}, +static arc arcs_63_4[2] = { + {139, 3}, + {0, 4}, }; -static arc arcs_63_0[2] = { - {137, 1}, - {147, 1}, +static state states_63[5] = { + {1, arcs_63_0}, + {3, arcs_63_1}, + {1, arcs_63_2}, + {1, arcs_63_3}, + {2, arcs_63_4}, +}; +static arc arcs_64_0[2] = { + {138, 1}, + {149, 1}, }; -static arc arcs_63_1[1] = { +static arc arcs_64_1[1] = { {0, 1}, }; -static state states_63[2] = { - {2, arcs_63_0}, - {1, arcs_63_1}, +static state states_64[2] = { + {2, arcs_64_0}, + {1, arcs_64_1}, }; -static arc arcs_64_0[1] = { +static arc arcs_65_0[1] = { {85, 1}, }; -static arc arcs_64_1[1] = { +static arc arcs_65_1[1] = { {53, 2}, }; -static arc arcs_64_2[1] = { +static arc arcs_65_2[1] = { {74, 3}, }; -static arc arcs_64_3[1] = { - {143, 4}, +static arc arcs_65_3[1] = { + {145, 4}, }; -static arc arcs_64_4[2] = { - {146, 5}, +static arc arcs_65_4[2] = { + {148, 5}, {0, 4}, }; -static arc arcs_64_5[1] = { +static arc arcs_65_5[1] = { {0, 5}, }; -static state states_64[6] = { - {1, arcs_64_0}, - {1, arcs_64_1}, - {1, arcs_64_2}, - {1, arcs_64_3}, - {2, arcs_64_4}, - {1, arcs_64_5}, +static state states_65[6] = { + {1, arcs_65_0}, + {1, arcs_65_1}, + {1, arcs_65_2}, + {1, arcs_65_3}, + {2, arcs_65_4}, + {1, arcs_65_5}, }; -static arc arcs_65_0[1] = { +static arc arcs_66_0[1] = { {81, 1}, }; -static arc arcs_65_1[1] = { +static arc arcs_66_1[1] = { {21, 2}, }; -static arc arcs_65_2[2] = { - {146, 3}, +static arc arcs_66_2[2] = { + {148, 3}, {0, 2}, }; -static arc arcs_65_3[1] = { +static arc arcs_66_3[1] = { {0, 3}, }; -static state states_65[4] = { - {1, arcs_65_0}, - {1, arcs_65_1}, - {2, arcs_65_2}, - {1, arcs_65_3}, +static state states_66[4] = { + {1, arcs_66_0}, + {1, arcs_66_1}, + {2, arcs_66_2}, + {1, arcs_66_3}, }; -static arc arcs_66_0[1] = { +static arc arcs_67_0[2] = { + {139, 1}, + {151, 1}, +}; +static arc arcs_67_1[1] = { + {0, 1}, +}; +static state states_67[2] = { + {2, arcs_67_0}, + {1, arcs_67_1}, +}; +static arc arcs_68_0[1] = { + {85, 1}, +}; +static arc arcs_68_1[1] = { + {53, 2}, +}; +static arc arcs_68_2[1] = { + {74, 3}, +}; +static arc arcs_68_3[1] = { + {21, 4}, +}; +static arc arcs_68_4[2] = { + {150, 5}, + {0, 4}, +}; +static arc arcs_68_5[1] = { + {0, 5}, +}; +static state states_68[6] = { + {1, arcs_68_0}, + {1, arcs_68_1}, + {1, arcs_68_2}, + {1, arcs_68_3}, + {2, arcs_68_4}, + {1, arcs_68_5}, +}; +static arc arcs_69_0[1] = { + {81, 1}, +}; +static arc arcs_69_1[1] = { + {21, 2}, +}; +static arc arcs_69_2[2] = { + {150, 3}, + {0, 2}, +}; +static arc arcs_69_3[1] = { + {0, 3}, +}; +static state states_69[4] = { + {1, arcs_69_0}, + {1, arcs_69_1}, + {2, arcs_69_2}, + {1, arcs_69_3}, +}; +static arc arcs_70_0[1] = { {21, 1}, }; -static arc arcs_66_1[2] = { +static arc arcs_70_1[2] = { {22, 0}, {0, 1}, }; -static state states_66[2] = { - {1, arcs_66_0}, - {2, arcs_66_1}, +static state states_70[2] = { + {1, arcs_70_0}, + {2, arcs_70_1}, }; -static arc arcs_67_0[1] = { +static arc arcs_71_0[1] = { {12, 1}, }; -static arc arcs_67_1[1] = { +static arc arcs_71_1[1] = { {0, 1}, }; -static state states_67[2] = { - {1, arcs_67_0}, - {1, arcs_67_1}, +static state states_71[2] = { + {1, arcs_71_0}, + {1, arcs_71_1}, }; -static dfa dfas[68] = { +static dfa dfas[72] = { {256, "single_input", 0, 3, states_0, - "\004\030\001\000\000\000\124\360\213\011\162\000\002\000\140\210\244\005\001"}, + "\004\030\001\000\000\000\124\360\213\011\162\000\002\000\140\010\111\023\004\000"}, {257, "file_input", 0, 2, states_1, - "\204\030\001\000\000\000\124\360\213\011\162\000\002\000\140\210\244\005\001"}, + "\204\030\001\000\000\000\124\360\213\011\162\000\002\000\140\010\111\023\004\000"}, {258, "eval_input", 0, 3, states_2, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, {259, "funcdef", 0, 6, states_3, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "parameters", 0, 4, states_4, - "\000\000\001\000\000\000\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\000\000\000\000\000\000\000\000"}, {261, "varargslist", 0, 10, states_5, - "\000\020\201\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\201\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {262, "fpdef", 0, 4, states_6, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {263, "fplist", 0, 3, states_7, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {264, "stmt", 0, 2, states_8, - "\000\030\001\000\000\000\124\360\213\011\162\000\002\000\140\210\244\005\001"}, + "\000\030\001\000\000\000\124\360\213\011\162\000\002\000\140\010\111\023\004\000"}, {265, "simple_stmt", 0, 4, states_9, - "\000\020\001\000\000\000\124\360\213\011\000\000\002\000\140\210\244\005\000"}, + "\000\020\001\000\000\000\124\360\213\011\000\000\002\000\140\010\111\023\000\000"}, {266, "small_stmt", 0, 2, states_10, - "\000\020\001\000\000\000\124\360\213\011\000\000\002\000\140\210\244\005\000"}, + "\000\020\001\000\000\000\124\360\213\011\000\000\002\000\140\010\111\023\000\000"}, {267, "expr_stmt", 0, 6, states_11, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, {268, "augassign", 0, 2, states_12, - "\000\000\000\000\300\377\003\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\300\377\003\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {269, "print_stmt", 0, 9, states_13, - "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {270, "del_stmt", 0, 3, states_14, - "\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {271, "pass_stmt", 0, 2, states_15, - "\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {272, "flow_stmt", 0, 2, states_16, - "\000\000\000\000\000\000\000\360\001\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\360\001\000\000\000\000\000\000\000\000\000\000\000"}, {273, "break_stmt", 0, 2, states_17, - "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, {274, "continue_stmt", 0, 2, states_18, - "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"}, {275, "return_stmt", 0, 3, states_19, - "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000"}, {276, "yield_stmt", 0, 3, states_20, - "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000"}, {277, "raise_stmt", 0, 7, states_21, - "\000\000\000\000\000\000\000\000\001\000\000\000\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\000\000"}, {278, "import_stmt", 0, 9, states_22, - "\000\000\000\000\000\000\000\000\012\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\012\000\000\000\000\000\000\000\000\000\000\000"}, {279, "import_as_name", 0, 4, states_23, - "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {280, "dotted_as_name", 0, 4, states_24, - "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {281, "dotted_name", 0, 2, states_25, - "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {282, "global_stmt", 0, 3, states_26, - "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000"}, {283, "exec_stmt", 0, 7, states_27, - "\000\000\000\000\000\000\000\000\000\001\000\000\000\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\000"}, {284, "assert_stmt", 0, 5, states_28, - "\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000"}, {285, "compound_stmt", 0, 2, states_29, - "\000\010\000\000\000\000\000\000\000\000\162\000\000\000\000\000\000\000\001"}, + "\000\010\000\000\000\000\000\000\000\000\162\000\000\000\000\000\000\000\004\000"}, {286, "if_stmt", 0, 8, states_30, - "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, {287, "while_stmt", 0, 8, states_31, - "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, {288, "for_stmt", 0, 10, states_32, - "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"}, {289, "try_stmt", 0, 10, states_33, - "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, {290, "except_clause", 0, 5, states_34, - "\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, {291, "suite", 0, 5, states_35, - "\004\020\001\000\000\000\124\360\213\011\000\000\002\000\140\210\244\005\000"}, + "\004\020\001\000\000\000\124\360\213\011\000\000\002\000\140\010\111\023\000\000"}, {292, "test", 0, 4, states_36, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, {293, "and_test", 0, 2, states_37, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\003\000\000"}, {294, "not_test", 0, 3, states_38, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\003\000\000"}, {295, "comparison", 0, 2, states_39, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {296, "comp_op", 0, 4, states_40, - "\000\000\000\000\000\000\000\000\000\004\000\000\362\017\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\004\000\000\362\017\000\000\000\000\000\000"}, {297, "expr", 0, 2, states_41, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {298, "xor_expr", 0, 2, states_42, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {299, "and_expr", 0, 2, states_43, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {300, "shift_expr", 0, 2, states_44, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {301, "arith_expr", 0, 2, states_45, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {302, "term", 0, 2, states_46, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {303, "factor", 0, 3, states_47, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, {304, "power", 0, 4, states_48, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\200\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\111\003\000\000"}, {305, "atom", 0, 11, states_49, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\200\244\001\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\111\003\000\000"}, {306, "listmaker", 0, 5, states_50, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, - {307, "lambdef", 0, 5, states_51, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000"}, - {308, "trailer", 0, 7, states_52, - "\000\000\001\000\000\000\000\000\100\000\000\000\000\000\000\200\000\000\000"}, - {309, "subscriptlist", 0, 3, states_53, - "\000\120\001\000\000\000\000\000\100\000\000\000\002\000\140\210\244\005\000"}, - {310, "subscript", 0, 7, states_54, - "\000\120\001\000\000\000\000\000\100\000\000\000\002\000\140\210\244\005\000"}, - {311, "sliceop", 0, 3, states_55, - "\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {312, "exprlist", 0, 3, states_56, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\244\001\000"}, - {313, "testlist", 0, 3, states_57, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, - {314, "testlist_safe", 0, 5, states_58, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, - {315, "dictmaker", 0, 5, states_59, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, - {316, "classdef", 0, 8, states_60, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, - {317, "arglist", 0, 8, states_61, - "\000\020\201\001\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, - {318, "argument", 0, 4, states_62, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, - {319, "list_iter", 0, 2, states_63, - "\000\000\000\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000"}, - {320, "list_for", 0, 6, states_64, - "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, - {321, "list_if", 0, 4, states_65, - "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, - {322, "testlist1", 0, 2, states_66, - "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\244\005\000"}, - {323, "encoding_decl", 0, 2, states_67, - "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, -}; -static label labels[149] = { + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {307, "testlist_gexp", 0, 5, states_51, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {308, "lambdef", 0, 5, states_52, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000"}, + {309, "trailer", 0, 7, states_53, + "\000\000\001\000\000\000\000\000\100\000\000\000\000\000\000\000\001\000\000\000"}, + {310, "subscriptlist", 0, 3, states_54, + "\000\120\001\000\000\000\000\000\100\000\000\000\002\000\140\010\111\023\000\000"}, + {311, "subscript", 0, 7, states_55, + "\000\120\001\000\000\000\000\000\100\000\000\000\002\000\140\010\111\023\000\000"}, + {312, "sliceop", 0, 3, states_56, + "\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {313, "exprlist", 0, 3, states_57, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000\000"}, + {314, "testlist", 0, 3, states_58, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {315, "testlist_safe", 0, 5, states_59, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {316, "dictmaker", 0, 5, states_60, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {317, "classdef", 0, 8, states_61, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000"}, + {318, "arglist", 0, 8, states_62, + "\000\020\201\001\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {319, "argument", 0, 5, states_63, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {320, "list_iter", 0, 2, states_64, + "\000\000\000\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000\000"}, + {321, "list_for", 0, 6, states_65, + "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"}, + {322, "list_if", 0, 4, states_66, + "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, + {323, "gen_iter", 0, 2, states_67, + "\000\000\000\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000\000"}, + {324, "gen_for", 0, 6, states_68, + "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"}, + {325, "gen_if", 0, 4, states_69, + "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, + {326, "testlist1", 0, 2, states_70, + "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\010\111\023\000\000"}, + {327, "encoding_decl", 0, 2, states_71, + "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, +}; +static label labels[153] = { {0, "EMPTY"}, {256, 0}, {4, 0}, @@ -1621,7 +1718,7 @@ static label labels[149] = { {264, 0}, {0, 0}, {258, 0}, - {313, 0}, + {314, 0}, {259, 0}, {1, "def"}, {1, 0}, @@ -1665,7 +1762,7 @@ static label labels[149] = { {1, "print"}, {35, 0}, {1, "del"}, - {312, 0}, + {313, 0}, {1, "pass"}, {273, 0}, {274, 0}, @@ -1692,7 +1789,7 @@ static label labels[149] = { {287, 0}, {288, 0}, {289, 0}, - {316, 0}, + {317, 0}, {1, "if"}, {1, "elif"}, {1, "else"}, @@ -1706,7 +1803,7 @@ static label labels[149] = { {6, 0}, {293, 0}, {1, "or"}, - {307, 0}, + {308, 0}, {294, 0}, {1, "and"}, {1, "not"}, @@ -1738,33 +1835,37 @@ static label labels[149] = { {32, 0}, {304, 0}, {305, 0}, - {308, 0}, + {309, 0}, + {307, 0}, {9, 0}, {306, 0}, {10, 0}, {26, 0}, - {315, 0}, + {316, 0}, {27, 0}, {25, 0}, - {322, 0}, + {326, 0}, {2, 0}, {3, 0}, - {320, 0}, + {321, 0}, + {324, 0}, {1, "lambda"}, - {317, 0}, - {309, 0}, + {318, 0}, {310, 0}, {311, 0}, - {314, 0}, + {312, 0}, + {315, 0}, {1, "class"}, - {318, 0}, {319, 0}, - {321, 0}, + {320, 0}, + {322, 0}, {323, 0}, + {325, 0}, + {327, 0}, }; grammar _PyParser_Grammar = { - 68, + 72, dfas, - {149, labels}, + {153, labels}, 256 }; diff --git a/Python/symtable.c b/Python/symtable.c index f86fd2f..5ca2041 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -66,6 +66,8 @@ PySymtableEntry_New(struct symtable *st, char *name, int type, int lineno) switch (type) { case funcdef: case lambdef: + case testlist_gexp: /* generator expression */ + case argument: /* generator expression */ ste->ste_type = TYPE_FUNCTION; break; case classdef: |