Make 'as' an actual keyword when with's future statement is used. Not
authorThomas Wouters <thomas@python.org>
Tue, 28 Feb 2006 22:42:15 +0000 (22:42 +0000)
committerThomas Wouters <thomas@python.org>
Tue, 28 Feb 2006 22:42:15 +0000 (22:42 +0000)
actually necessary for functionality, but good for transition.

Grammar/Grammar
Parser/parser.c
Parser/parsetok.c
Python/ast.c
Python/graminit.c

index 08c8a00846123a356ef735964535a8df6bf25070..9f66df648d58d130fdf959e4b03e553125bb52e9 100644 (file)
@@ -61,8 +61,8 @@ import_stmt: import_name | import_from
 import_name: 'import' dotted_as_names
 import_from: ('from' ('.'* dotted_name | '.')
               'import' ('*' | '(' import_as_names ')' | import_as_names))
-import_as_name: NAME [NAME NAME]
-dotted_as_name: dotted_name [NAME NAME]
+import_as_name: NAME [('as' | NAME) NAME]
+dotted_as_name: dotted_name [('as' | NAME) NAME]
 import_as_names: import_as_name (',' import_as_name)* [',']
 dotted_as_names: dotted_as_name (',' dotted_as_name)*
 dotted_name: NAME ('.' NAME)*
@@ -80,7 +80,7 @@ try_stmt: ('try' ':' suite
            ['finally' ':' suite] |
           'finally' ':' suite))
 with_stmt: 'with' test [ with_var ] ':' suite
-with_var: NAME expr
+with_var: ('as' | NAME) expr
 # NB compile.c makes sure that the default except clause is last
 except_clause: 'except' [test [',' test]]
 suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
index cad5ce20646c298c7db9ccf250ee136fc0a6d6d2..4a5307c003bbd81cdeac2a88b4a2a3865dda773b 100644 (file)
@@ -144,18 +144,20 @@ classify(parser_state *ps, int type, char *str)
                register label *l = g->g_ll.ll_label;
                register int i;
                for (i = n; i > 0; i--, l++) {
-                       if (l->lb_type == NAME && l->lb_str != NULL &&
-                                       l->lb_str[0] == s[0] &&
-                                       strcmp(l->lb_str, s) == 0) {
+                       if (l->lb_type != NAME || l->lb_str == NULL ||
+                           l->lb_str[0] != s[0] ||
+                           strcmp(l->lb_str, s) != 0)
+                               continue;
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-                               if (!(ps->p_flags & CO_FUTURE_WITH_STATEMENT) &&
-                                   s[0] == 'w' &&
-                                   strcmp(s, "with") == 0)
-                                       break; /* not a keyword */
-#endif
-                               D(printf("It's a keyword\n"));
-                               return n - i;
+                       if (!(ps->p_flags & CO_FUTURE_WITH_STATEMENT)) {
+                               if (s[0] == 'w' && strcmp(s, "with") == 0)
+                                       break; /* not a keyword yet */
+                               else if (s[0] == 'a' && strcmp(s, "as") == 0)
+                                       break; /* not a keyword yet */
                        }
+#endif
+                       D(printf("It's a keyword\n"));
+                       return n - i;
                }
        }
        
index cf445e1bfbed9721871f0a1e7d4827920b60fb35..8b1f70ccba4e6b12f5a872dc05532d337de8f22e 100644 (file)
@@ -176,8 +176,8 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
                    if (len == 4 && str[0] == 'w' && strcmp(str, "with") == 0)
                        warn(with_msg, err_ret->filename, tok->lineno);
                    else if (!(handling_import || handling_with) &&
-                            len == 2 &&
-                            str[0] == 'a' && strcmp(str, "as") == 0)
+                            len == 2 && str[0] == 'a' &&
+                            strcmp(str, "as") == 0)
                        warn(as_msg, err_ret->filename, tok->lineno);
                }
                else if (type == NAME &&
index 39ae8f3c5579ea1e3c5b4eba21b2a7fd2f63e664..7edd345fefc89dba15cd853c9e8f950c1e5e427a 100644 (file)
@@ -2088,8 +2088,8 @@ static alias_ty
 alias_for_import_name(struct compiling *c, const node *n)
 {
     /*
-      import_as_name: NAME [NAME NAME]
-      dotted_as_name: dotted_name [NAME NAME]
+      import_as_name: NAME ['as' NAME]
+      dotted_as_name: dotted_name ['as' NAME]
       dotted_name: NAME ('.' NAME)*
     */
     PyObject *str;
index 491b166ca59681ef4c6629b42b74c7c7fe592045..1853ca407dbe937d477d032368f2e1532defcad5 100644 (file)
@@ -556,7 +556,8 @@ static state states_26[9] = {
 static arc arcs_27_0[1] = {
        {19, 1},
 };
-static arc arcs_27_1[2] = {
+static arc arcs_27_1[3] = {
+       {78, 2},
        {19, 2},
        {0, 1},
 };
@@ -568,14 +569,15 @@ static arc arcs_27_3[1] = {
 };
 static state states_27[4] = {
        {1, arcs_27_0},
-       {2, arcs_27_1},
+       {3, arcs_27_1},
        {1, arcs_27_2},
        {1, arcs_27_3},
 };
 static arc arcs_28_0[1] = {
        {12, 1},
 };
-static arc arcs_28_1[2] = {
+static arc arcs_28_1[3] = {
+       {78, 2},
        {19, 2},
        {0, 1},
 };
@@ -587,7 +589,7 @@ static arc arcs_28_3[1] = {
 };
 static state states_28[4] = {
        {1, arcs_28_0},
-       {2, arcs_28_1},
+       {3, arcs_28_1},
        {1, arcs_28_2},
        {1, arcs_28_3},
 };
@@ -608,7 +610,7 @@ static state states_29[3] = {
        {2, arcs_29_2},
 };
 static arc arcs_30_0[1] = {
-       {78, 1},
+       {79, 1},
 };
 static arc arcs_30_1[2] = {
        {27, 0},
@@ -630,7 +632,7 @@ static state states_31[2] = {
        {2, arcs_31_1},
 };
 static arc arcs_32_0[1] = {
-       {79, 1},
+       {80, 1},
 };
 static arc arcs_32_1[1] = {
        {19, 2},
@@ -645,13 +647,13 @@ static state states_32[3] = {
        {2, arcs_32_2},
 };
 static arc arcs_33_0[1] = {
-       {80, 1},
+       {81, 1},
 };
 static arc arcs_33_1[1] = {
-       {81, 2},
+       {82, 2},
 };
 static arc arcs_33_2[2] = {
-       {82, 3},
+       {83, 3},
        {0, 2},
 };
 static arc arcs_33_3[1] = {
@@ -677,7 +679,7 @@ static state states_33[7] = {
        {1, arcs_33_6},
 };
 static arc arcs_34_0[1] = {
-       {83, 1},
+       {84, 1},
 };
 static arc arcs_34_1[1] = {
        {26, 2},
@@ -700,13 +702,13 @@ static state states_34[5] = {
        {1, arcs_34_4},
 };
 static arc arcs_35_0[7] = {
-       {84, 1},
        {85, 1},
        {86, 1},
        {87, 1},
        {88, 1},
-       {17, 1},
        {89, 1},
+       {17, 1},
+       {90, 1},
 };
 static arc arcs_35_1[1] = {
        {0, 1},
@@ -716,7 +718,7 @@ static state states_35[2] = {
        {1, arcs_35_1},
 };
 static arc arcs_36_0[1] = {
-       {90, 1},
+       {91, 1},
 };
 static arc arcs_36_1[1] = {
        {26, 2},
@@ -728,8 +730,8 @@ static arc arcs_36_3[1] = {
        {22, 4},
 };
 static arc arcs_36_4[3] = {
-       {91, 1},
-       {92, 5},
+       {92, 1},
+       {93, 5},
        {0, 4},
 };
 static arc arcs_36_5[1] = {
@@ -752,7 +754,7 @@ static state states_36[8] = {
        {1, arcs_36_7},
 };
 static arc arcs_37_0[1] = {
-       {93, 1},
+       {94, 1},
 };
 static arc arcs_37_1[1] = {
        {26, 2},
@@ -764,7 +766,7 @@ static arc arcs_37_3[1] = {
        {22, 4},
 };
 static arc arcs_37_4[2] = {
-       {92, 5},
+       {93, 5},
        {0, 4},
 };
 static arc arcs_37_5[1] = {
@@ -787,13 +789,13 @@ static state states_37[8] = {
        {1, arcs_37_7},
 };
 static arc arcs_38_0[1] = {
-       {94, 1},
+       {95, 1},
 };
 static arc arcs_38_1[1] = {
        {59, 2},
 };
 static arc arcs_38_2[1] = {
-       {82, 3},
+       {83, 3},
 };
 static arc arcs_38_3[1] = {
        {9, 4},
@@ -805,7 +807,7 @@ static arc arcs_38_5[1] = {
        {22, 6},
 };
 static arc arcs_38_6[2] = {
-       {92, 7},
+       {93, 7},
        {0, 6},
 };
 static arc arcs_38_7[1] = {
@@ -830,7 +832,7 @@ static state states_38[10] = {
        {1, arcs_38_9},
 };
 static arc arcs_39_0[1] = {
-       {95, 1},
+       {96, 1},
 };
 static arc arcs_39_1[1] = {
        {21, 2},
@@ -839,8 +841,8 @@ static arc arcs_39_2[1] = {
        {22, 3},
 };
 static arc arcs_39_3[2] = {
-       {96, 4},
-       {97, 5},
+       {97, 4},
+       {98, 5},
 };
 static arc arcs_39_4[1] = {
        {21, 6},
@@ -855,9 +857,9 @@ static arc arcs_39_7[1] = {
        {22, 9},
 };
 static arc arcs_39_8[4] = {
-       {96, 4},
-       {92, 10},
-       {97, 5},
+       {97, 4},
+       {93, 10},
+       {98, 5},
        {0, 8},
 };
 static arc arcs_39_9[1] = {
@@ -870,7 +872,7 @@ static arc arcs_39_11[1] = {
        {22, 12},
 };
 static arc arcs_39_12[2] = {
-       {97, 5},
+       {98, 5},
        {0, 12},
 };
 static state states_39[13] = {
@@ -889,13 +891,13 @@ static state states_39[13] = {
        {2, arcs_39_12},
 };
 static arc arcs_40_0[1] = {
-       {98, 1},
+       {99, 1},
 };
 static arc arcs_40_1[1] = {
        {26, 2},
 };
 static arc arcs_40_2[2] = {
-       {99, 3},
+       {100, 3},
        {21, 4},
 };
 static arc arcs_40_3[1] = {
@@ -915,22 +917,23 @@ static state states_40[6] = {
        {1, arcs_40_4},
        {1, arcs_40_5},
 };
-static arc arcs_41_0[1] = {
+static arc arcs_41_0[2] = {
+       {78, 1},
        {19, 1},
 };
 static arc arcs_41_1[1] = {
-       {81, 2},
+       {82, 2},
 };
 static arc arcs_41_2[1] = {
        {0, 2},
 };
 static state states_41[3] = {
-       {1, arcs_41_0},
+       {2, arcs_41_0},
        {1, arcs_41_1},
        {1, arcs_41_2},
 };
 static arc arcs_42_0[1] = {
-       {100, 1},
+       {101, 1},
 };
 static arc arcs_42_1[2] = {
        {26, 2},
@@ -961,14 +964,14 @@ static arc arcs_43_1[1] = {
        {0, 1},
 };
 static arc arcs_43_2[1] = {
-       {101, 3},
+       {102, 3},
 };
 static arc arcs_43_3[1] = {
        {6, 4},
 };
 static arc arcs_43_4[2] = {
        {6, 4},
-       {102, 1},
+       {103, 1},
 };
 static state states_43[5] = {
        {2, arcs_43_0},
@@ -978,21 +981,21 @@ static state states_43[5] = {
        {2, arcs_43_4},
 };
 static arc arcs_44_0[1] = {
-       {104, 1},
+       {105, 1},
 };
 static arc arcs_44_1[2] = {
        {27, 2},
        {0, 1},
 };
 static arc arcs_44_2[1] = {
-       {104, 3},
+       {105, 3},
 };
 static arc arcs_44_3[2] = {
        {27, 4},
        {0, 3},
 };
 static arc arcs_44_4[2] = {
-       {104, 3},
+       {105, 3},
        {0, 4},
 };
 static state states_44[5] = {
@@ -1003,8 +1006,8 @@ static state states_44[5] = {
        {2, arcs_44_4},
 };
 static arc arcs_45_0[2] = {
-       {105, 1},
        {106, 1},
+       {107, 1},
 };
 static arc arcs_45_1[1] = {
        {0, 1},
@@ -1014,7 +1017,7 @@ static state states_45[2] = {
        {1, arcs_45_1},
 };
 static arc arcs_46_0[1] = {
-       {107, 1},
+       {108, 1},
 };
 static arc arcs_46_1[2] = {
        {23, 2},
@@ -1024,7 +1027,7 @@ static arc arcs_46_2[1] = {
        {21, 3},
 };
 static arc arcs_46_3[1] = {
-       {104, 4},
+       {105, 4},
 };
 static arc arcs_46_4[1] = {
        {0, 4},
@@ -1037,21 +1040,21 @@ static state states_46[5] = {
        {1, arcs_46_4},
 };
 static arc arcs_47_0[2] = {
-       {105, 1},
-       {108, 2},
+       {106, 1},
+       {109, 2},
 };
 static arc arcs_47_1[2] = {
-       {90, 3},
+       {91, 3},
        {0, 1},
 };
 static arc arcs_47_2[1] = {
        {0, 2},
 };
 static arc arcs_47_3[1] = {
-       {105, 4},
+       {106, 4},
 };
 static arc arcs_47_4[1] = {
-       {92, 5},
+       {93, 5},
 };
 static arc arcs_47_5[1] = {
        {26, 2},
@@ -1065,10 +1068,10 @@ static state states_47[6] = {
        {1, arcs_47_5},
 };
 static arc arcs_48_0[1] = {
-       {109, 1},
+       {110, 1},
 };
 static arc arcs_48_1[2] = {
-       {110, 0},
+       {111, 0},
        {0, 1},
 };
 static state states_48[2] = {
@@ -1076,10 +1079,10 @@ static state states_48[2] = {
        {2, arcs_48_1},
 };
 static arc arcs_49_0[1] = {
-       {111, 1},
+       {112, 1},
 };
 static arc arcs_49_1[2] = {
-       {112, 0},
+       {113, 0},
        {0, 1},
 };
 static state states_49[2] = {
@@ -1087,11 +1090,11 @@ static state states_49[2] = {
        {2, arcs_49_1},
 };
 static arc arcs_50_0[2] = {
-       {113, 1},
-       {114, 2},
+       {114, 1},
+       {115, 2},
 };
 static arc arcs_50_1[1] = {
-       {111, 2},
+       {112, 2},
 };
 static arc arcs_50_2[1] = {
        {0, 2},
@@ -1102,10 +1105,10 @@ static state states_50[3] = {
        {1, arcs_50_2},
 };
 static arc arcs_51_0[1] = {
-       {81, 1},
+       {82, 1},
 };
 static arc arcs_51_1[2] = {
-       {115, 0},
+       {116, 0},
        {0, 1},
 };
 static state states_51[2] = {
@@ -1113,25 +1116,25 @@ static state states_51[2] = {
        {2, arcs_51_1},
 };
 static arc arcs_52_0[10] = {
-       {116, 1},
        {117, 1},
        {118, 1},
        {119, 1},
        {120, 1},
        {121, 1},
        {122, 1},
-       {82, 1},
-       {113, 2},
-       {123, 3},
+       {123, 1},
+       {83, 1},
+       {114, 2},
+       {124, 3},
 };
 static arc arcs_52_1[1] = {
        {0, 1},
 };
 static arc arcs_52_2[1] = {
-       {82, 1},
+       {83, 1},
 };
 static arc arcs_52_3[2] = {
-       {113, 1},
+       {114, 1},
        {0, 3},
 };
 static state states_52[4] = {
@@ -1141,10 +1144,10 @@ static state states_52[4] = {
        {2, arcs_52_3},
 };
 static arc arcs_53_0[1] = {
-       {124, 1},
+       {125, 1},
 };
 static arc arcs_53_1[2] = {
-       {125, 0},
+       {126, 0},
        {0, 1},
 };
 static state states_53[2] = {
@@ -1152,10 +1155,10 @@ static state states_53[2] = {
        {2, arcs_53_1},
 };
 static arc arcs_54_0[1] = {
-       {126, 1},
+       {127, 1},
 };
 static arc arcs_54_1[2] = {
-       {127, 0},
+       {128, 0},
        {0, 1},
 };
 static state states_54[2] = {
@@ -1163,10 +1166,10 @@ static state states_54[2] = {
        {2, arcs_54_1},
 };
 static arc arcs_55_0[1] = {
-       {128, 1},
+       {129, 1},
 };
 static arc arcs_55_1[2] = {
-       {129, 0},
+       {130, 0},
        {0, 1},
 };
 static state states_55[2] = {
@@ -1174,10 +1177,10 @@ static state states_55[2] = {
        {2, arcs_55_1},
 };
 static arc arcs_56_0[1] = {
-       {130, 1},
+       {131, 1},
 };
 static arc arcs_56_1[3] = {
-       {131, 0},
+       {132, 0},
        {57, 0},
        {0, 1},
 };
@@ -1186,11 +1189,11 @@ static state states_56[2] = {
        {3, arcs_56_1},
 };
 static arc arcs_57_0[1] = {
-       {132, 1},
+       {133, 1},
 };
 static arc arcs_57_1[3] = {
-       {133, 0},
        {134, 0},
+       {135, 0},
        {0, 1},
 };
 static state states_57[2] = {
@@ -1198,13 +1201,13 @@ static state states_57[2] = {
        {3, arcs_57_1},
 };
 static arc arcs_58_0[1] = {
-       {135, 1},
+       {136, 1},
 };
 static arc arcs_58_1[5] = {
        {28, 0},
-       {136, 0},
        {137, 0},
        {138, 0},
+       {139, 0},
        {0, 1},
 };
 static state states_58[2] = {
@@ -1212,13 +1215,13 @@ static state states_58[2] = {
        {5, arcs_58_1},
 };
 static arc arcs_59_0[4] = {
-       {133, 1},
        {134, 1},
-       {139, 1},
-       {140, 2},
+       {135, 1},
+       {140, 1},
+       {141, 2},
 };
 static arc arcs_59_1[1] = {
-       {135, 2},
+       {136, 2},
 };
 static arc arcs_59_2[1] = {
        {0, 2},
@@ -1229,15 +1232,15 @@ static state states_59[3] = {
        {1, arcs_59_2},
 };
 static arc arcs_60_0[1] = {
-       {141, 1},
+       {142, 1},
 };
 static arc arcs_60_1[3] = {
-       {142, 1},
+       {143, 1},
        {29, 2},
        {0, 1},
 };
 static arc arcs_60_2[1] = {
-       {135, 3},
+       {136, 3},
 };
 static arc arcs_60_3[1] = {
        {0, 3},
@@ -1250,47 +1253,47 @@ static state states_60[4] = {
 };
 static arc arcs_61_0[7] = {
        {13, 1},
-       {144, 2},
-       {147, 3},
-       {150, 4},
+       {145, 2},
+       {148, 3},
+       {151, 4},
        {19, 5},
-       {152, 5},
-       {153, 6},
+       {153, 5},
+       {154, 6},
 };
 static arc arcs_61_1[3] = {
        {43, 7},
-       {143, 7},
+       {144, 7},
        {15, 5},
 };
 static arc arcs_61_2[2] = {
-       {145, 8},
-       {146, 5},
+       {146, 8},
+       {147, 5},
 };
 static arc arcs_61_3[2] = {
-       {148, 9},
-       {149, 5},
+       {149, 9},
+       {150, 5},
 };
 static arc arcs_61_4[1] = {
-       {151, 10},
+       {152, 10},
 };
 static arc arcs_61_5[1] = {
        {0, 5},
 };
 static arc arcs_61_6[2] = {
-       {153, 6},
+       {154, 6},
        {0, 6},
 };
 static arc arcs_61_7[1] = {
        {15, 5},
 };
 static arc arcs_61_8[1] = {
-       {146, 5},
+       {147, 5},
 };
 static arc arcs_61_9[1] = {
-       {149, 5},
+       {150, 5},
 };
 static arc arcs_61_10[1] = {
-       {150, 5},
+       {151, 5},
 };
 static state states_61[11] = {
        {7, arcs_61_0},
@@ -1309,7 +1312,7 @@ static arc arcs_62_0[1] = {
        {26, 1},
 };
 static arc arcs_62_1[3] = {
-       {154, 2},
+       {155, 2},
        {27, 3},
        {0, 1},
 };
@@ -1335,7 +1338,7 @@ static arc arcs_63_0[1] = {
        {26, 1},
 };
 static arc arcs_63_1[3] = {
-       {155, 2},
+       {156, 2},
        {27, 3},
        {0, 1},
 };
@@ -1358,7 +1361,7 @@ static state states_63[5] = {
        {2, arcs_63_4},
 };
 static arc arcs_64_0[1] = {
-       {107, 1},
+       {108, 1},
 };
 static arc arcs_64_1[2] = {
        {23, 2},
@@ -1382,7 +1385,7 @@ static state states_64[5] = {
 };
 static arc arcs_65_0[3] = {
        {13, 1},
-       {144, 2},
+       {145, 2},
        {75, 3},
 };
 static arc arcs_65_1[2] = {
@@ -1390,7 +1393,7 @@ static arc arcs_65_1[2] = {
        {15, 5},
 };
 static arc arcs_65_2[1] = {
-       {156, 6},
+       {157, 6},
 };
 static arc arcs_65_3[1] = {
        {19, 5},
@@ -1402,7 +1405,7 @@ static arc arcs_65_5[1] = {
        {0, 5},
 };
 static arc arcs_65_6[1] = {
-       {146, 5},
+       {147, 5},
 };
 static state states_65[7] = {
        {3, arcs_65_0},
@@ -1414,14 +1417,14 @@ static state states_65[7] = {
        {1, arcs_65_6},
 };
 static arc arcs_66_0[1] = {
-       {157, 1},
+       {158, 1},
 };
 static arc arcs_66_1[2] = {
        {27, 2},
        {0, 1},
 };
 static arc arcs_66_2[2] = {
-       {157, 1},
+       {158, 1},
        {0, 2},
 };
 static state states_66[3] = {
@@ -1443,14 +1446,14 @@ static arc arcs_67_2[2] = {
 };
 static arc arcs_67_3[3] = {
        {26, 5},
-       {158, 6},
+       {159, 6},
        {0, 3},
 };
 static arc arcs_67_4[1] = {
        {75, 6},
 };
 static arc arcs_67_5[2] = {
-       {158, 6},
+       {159, 6},
        {0, 5},
 };
 static arc arcs_67_6[1] = {
@@ -1481,14 +1484,14 @@ static state states_68[3] = {
        {1, arcs_68_2},
 };
 static arc arcs_69_0[1] = {
-       {81, 1},
+       {82, 1},
 };
 static arc arcs_69_1[2] = {
        {27, 2},
        {0, 1},
 };
 static arc arcs_69_2[2] = {
-       {81, 1},
+       {82, 1},
        {0, 2},
 };
 static state states_69[3] = {
@@ -1537,7 +1540,7 @@ static state states_71[5] = {
        {2, arcs_71_4},
 };
 static arc arcs_72_0[1] = {
-       {159, 1},
+       {160, 1},
 };
 static arc arcs_72_1[1] = {
        {19, 2},
@@ -1573,7 +1576,7 @@ static state states_72[8] = {
        {1, arcs_72_7},
 };
 static arc arcs_73_0[3] = {
-       {160, 1},
+       {161, 1},
        {28, 2},
        {29, 3},
 };
@@ -1588,7 +1591,7 @@ static arc arcs_73_3[1] = {
        {26, 6},
 };
 static arc arcs_73_4[4] = {
-       {160, 1},
+       {161, 1},
        {28, 2},
        {29, 3},
        {0, 4},
@@ -1617,7 +1620,7 @@ static arc arcs_74_0[1] = {
        {26, 1},
 };
 static arc arcs_74_1[3] = {
-       {155, 2},
+       {156, 2},
        {25, 3},
        {0, 1},
 };
@@ -1634,8 +1637,8 @@ static state states_74[4] = {
        {1, arcs_74_3},
 };
 static arc arcs_75_0[2] = {
-       {154, 1},
-       {162, 1},
+       {155, 1},
+       {163, 1},
 };
 static arc arcs_75_1[1] = {
        {0, 1},
@@ -1645,19 +1648,19 @@ static state states_75[2] = {
        {1, arcs_75_1},
 };
 static arc arcs_76_0[1] = {
-       {94, 1},
+       {95, 1},
 };
 static arc arcs_76_1[1] = {
        {59, 2},
 };
 static arc arcs_76_2[1] = {
-       {82, 3},
+       {83, 3},
 };
 static arc arcs_76_3[1] = {
-       {103, 4},
+       {104, 4},
 };
 static arc arcs_76_4[2] = {
-       {161, 5},
+       {162, 5},
        {0, 4},
 };
 static arc arcs_76_5[1] = {
@@ -1672,13 +1675,13 @@ static state states_76[6] = {
        {1, arcs_76_5},
 };
 static arc arcs_77_0[1] = {
-       {90, 1},
+       {91, 1},
 };
 static arc arcs_77_1[1] = {
        {26, 2},
 };
 static arc arcs_77_2[2] = {
-       {161, 3},
+       {162, 3},
        {0, 2},
 };
 static arc arcs_77_3[1] = {
@@ -1691,8 +1694,8 @@ static state states_77[4] = {
        {1, arcs_77_3},
 };
 static arc arcs_78_0[2] = {
-       {155, 1},
-       {164, 1},
+       {156, 1},
+       {165, 1},
 };
 static arc arcs_78_1[1] = {
        {0, 1},
@@ -1702,19 +1705,19 @@ static state states_78[2] = {
        {1, arcs_78_1},
 };
 static arc arcs_79_0[1] = {
-       {94, 1},
+       {95, 1},
 };
 static arc arcs_79_1[1] = {
        {59, 2},
 };
 static arc arcs_79_2[1] = {
-       {82, 3},
+       {83, 3},
 };
 static arc arcs_79_3[1] = {
-       {105, 4},
+       {106, 4},
 };
 static arc arcs_79_4[2] = {
-       {163, 5},
+       {164, 5},
        {0, 4},
 };
 static arc arcs_79_5[1] = {
@@ -1729,13 +1732,13 @@ static state states_79[6] = {
        {1, arcs_79_5},
 };
 static arc arcs_80_0[1] = {
-       {90, 1},
+       {91, 1},
 };
 static arc arcs_80_1[1] = {
        {26, 2},
 };
 static arc arcs_80_2[2] = {
-       {163, 3},
+       {164, 3},
        {0, 2},
 };
 static arc arcs_80_3[1] = {
@@ -1769,7 +1772,7 @@ static state states_82[2] = {
        {1, arcs_82_1},
 };
 static arc arcs_83_0[1] = {
-       {166, 1},
+       {167, 1},
 };
 static arc arcs_83_1[2] = {
        {9, 2},
@@ -1785,11 +1788,11 @@ static state states_83[3] = {
 };
 static dfa dfas[84] = {
        {256, "single_input", 0, 3, states_0,
-        "\004\050\014\000\000\000\000\025\074\205\011\344\004\010\002\000\140\010\111\203\100"},
+        "\004\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"},
        {257, "file_input", 0, 2, states_1,
-        "\204\050\014\000\000\000\000\025\074\205\011\344\004\010\002\000\140\010\111\203\100"},
+        "\204\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"},
        {258, "eval_input", 0, 3, states_2,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {259, "decorator", 0, 7, states_3,
         "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
        {260, "decorators", 0, 2, states_4,
@@ -1805,13 +1808,13 @@ static dfa dfas[84] = {
        {265, "fplist", 0, 3, states_9,
         "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
        {266, "stmt", 0, 2, states_10,
-        "\000\050\014\000\000\000\000\025\074\205\011\344\004\010\002\000\140\010\111\203\100"},
+        "\000\050\014\000\000\000\000\025\074\005\023\310\011\020\004\000\300\020\222\006\201"},
        {267, "simple_stmt", 0, 4, states_11,
-        "\000\040\010\000\000\000\000\025\074\205\011\000\000\010\002\000\140\010\111\003\100"},
+        "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"},
        {268, "small_stmt", 0, 2, states_12,
-        "\000\040\010\000\000\000\000\025\074\205\011\000\000\010\002\000\140\010\111\003\100"},
+        "\000\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"},
        {269, "expr_stmt", 0, 6, states_13,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {270, "augassign", 0, 2, states_14,
         "\000\000\000\000\000\360\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
        {271, "print_stmt", 0, 9, states_15,
@@ -1821,7 +1824,7 @@ static dfa dfas[84] = {
        {273, "pass_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"},
        {274, "flow_stmt", 0, 2, states_18,
-        "\000\000\000\000\000\000\000\000\074\000\000\000\000\000\000\000\000\000\000\000\100"},
+        "\000\000\000\000\000\000\000\000\074\000\000\000\000\000\000\000\000\000\000\000\200"},
        {275, "break_stmt", 0, 2, states_19,
         "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"},
        {276, "continue_stmt", 0, 2, states_20,
@@ -1829,7 +1832,7 @@ static dfa dfas[84] = {
        {277, "return_stmt", 0, 3, states_21,
         "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"},
        {278, "yield_stmt", 0, 2, states_22,
-        "\000\000\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\000\000\000\000\000\000\000\200"},
        {279, "raise_stmt", 0, 7, states_23,
         "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"},
        {280, "import_stmt", 0, 2, states_24,
@@ -1849,111 +1852,111 @@ static dfa dfas[84] = {
        {287, "dotted_name", 0, 2, states_31,
         "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
        {288, "global_stmt", 0, 3, states_32,
-        "\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000"},
-       {289, "exec_stmt", 0, 7, states_33,
         "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"},
+       {289, "exec_stmt", 0, 7, states_33,
+        "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000"},
        {290, "assert_stmt", 0, 5, states_34,
-        "\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\000\000\020\000\000\000\000\000\000\000\000\000\000"},
        {291, "compound_stmt", 0, 2, states_35,
-        "\000\010\004\000\000\000\000\000\000\000\000\344\004\000\000\000\000\000\000\200\000"},
+        "\000\010\004\000\000\000\000\000\000\000\000\310\011\000\000\000\000\000\000\000\001"},
        {292, "if_stmt", 0, 8, states_36,
-        "\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\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"},
        {293, "while_stmt", 0, 8, states_37,
-        "\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"},
-       {294, "for_stmt", 0, 10, states_38,
         "\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"},
-       {295, "try_stmt", 0, 13, states_39,
+       {294, "for_stmt", 0, 10, states_38,
         "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"},
+       {295, "try_stmt", 0, 13, states_39,
+        "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"},
        {296, "with_stmt", 0, 6, states_40,
-        "\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\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"},
        {297, "with_var", 0, 3, states_41,
-        "\000\000\010\000\000\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\100\000\000\000\000\000\000\000\000\000\000\000"},
        {298, "except_clause", 0, 5, states_42,
-        "\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\000\000\040\000\000\000\000\000\000\000\000"},
        {299, "suite", 0, 5, states_43,
-        "\004\040\010\000\000\000\000\025\074\205\011\000\000\010\002\000\140\010\111\003\100"},
+        "\004\040\010\000\000\000\000\025\074\005\023\000\000\020\004\000\300\020\222\006\200"},
        {300, "testlist_safe", 0, 5, states_44,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {301, "old_test", 0, 2, states_45,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {302, "old_lambdef", 0, 5, states_46,
-        "\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\000\000\020\000\000\000\000\000\000\000"},
        {303, "test", 0, 6, states_47,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {304, "or_test", 0, 2, states_48,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"},
        {305, "and_test", 0, 2, states_49,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"},
        {306, "not_test", 0, 3, states_50,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\004\000\300\020\222\006\000"},
        {307, "comparison", 0, 2, states_51,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {308, "comp_op", 0, 4, states_52,
-        "\000\000\000\000\000\000\000\000\000\000\004\000\000\000\362\017\000\000\000\000\000"},
+        "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\344\037\000\000\000\000\000"},
        {309, "expr", 0, 2, states_53,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {310, "xor_expr", 0, 2, states_54,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {311, "and_expr", 0, 2, states_55,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {312, "shift_expr", 0, 2, states_56,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {313, "arith_expr", 0, 2, states_57,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {314, "term", 0, 2, states_58,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {315, "factor", 0, 3, states_59,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {316, "power", 0, 4, states_60,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"},
        {317, "atom", 0, 11, states_61,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\222\006\000"},
        {318, "listmaker", 0, 5, states_62,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {319, "testlist_gexp", 0, 5, states_63,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {320, "lambdef", 0, 5, states_64,
-        "\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\000\000\020\000\000\000\000\000\000\000"},
        {321, "trailer", 0, 7, states_65,
-        "\000\040\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\001\000\000"},
+        "\000\040\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\002\000\000"},
        {322, "subscriptlist", 0, 3, states_66,
-        "\000\040\050\000\000\000\000\000\000\010\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"},
        {323, "subscript", 0, 7, states_67,
-        "\000\040\050\000\000\000\000\000\000\010\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\050\000\000\000\000\000\000\010\000\000\000\020\004\000\300\020\222\006\000"},
        {324, "sliceop", 0, 3, states_68,
         "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
        {325, "exprlist", 0, 3, states_69,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\000\000\000\300\020\222\006\000"},
        {326, "testlist", 0, 3, states_70,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {327, "dictmaker", 0, 5, states_71,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {328, "classdef", 0, 8, states_72,
-        "\000\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\000\000\000\000\000\000\000\000\000\001"},
        {329, "arglist", 0, 8, states_73,
-        "\000\040\010\060\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\060\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {330, "argument", 0, 4, states_74,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {331, "list_iter", 0, 2, states_75,
-        "\000\000\000\000\000\000\000\000\000\000\000\104\000\000\000\000\000\000\000\000\000"},
+        "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"},
        {332, "list_for", 0, 6, states_76,
-        "\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\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"},
        {333, "list_if", 0, 4, states_77,
-        "\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\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"},
        {334, "gen_iter", 0, 2, states_78,
-        "\000\000\000\000\000\000\000\000\000\000\000\104\000\000\000\000\000\000\000\000\000"},
+        "\000\000\000\000\000\000\000\000\000\000\000\210\000\000\000\000\000\000\000\000\000"},
        {335, "gen_for", 0, 6, states_79,
-        "\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\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"},
        {336, "gen_if", 0, 4, states_80,
-        "\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\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"},
        {337, "testlist1", 0, 2, states_81,
-        "\000\040\010\000\000\000\000\000\000\000\000\000\000\010\002\000\140\010\111\003\000"},
+        "\000\040\010\000\000\000\000\000\000\000\000\000\000\020\004\000\300\020\222\006\000"},
        {338, "encoding_decl", 0, 2, states_82,
         "\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
        {339, "yield_expr", 0, 3, states_83,
-        "\000\000\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\000\000\000\000\000\000\000\200"},
 };
-static label labels[167] = {
+static label labels[168] = {
        {0, "EMPTY"},
        {256, 0},
        {4, 0},
@@ -2032,6 +2035,7 @@ static label labels[167] = {
        {23, 0},
        {285, 0},
        {283, 0},
+       {1, "as"},
        {284, 0},
        {1, "global"},
        {1, "exec"},
@@ -2125,6 +2129,6 @@ static label labels[167] = {
 grammar _PyParser_Grammar = {
        84,
        dfas,
-       {167, labels},
+       {168, labels},
        256
 };