summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/compile.c283
-rw-r--r--Python/graminit.c703
-rw-r--r--Python/symtable.c2
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: