]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
* bltinmodule.c: removed exec() built-in function.
authorGuido van Rossum <guido@python.org>
Mon, 18 Oct 1993 17:06:59 +0000 (17:06 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 18 Oct 1993 17:06:59 +0000 (17:06 +0000)
* Grammar: add exec statement; allow testlist in expr statement.
* ceval.c, compile.c, opcode.h: support exec statement;
  avoid optimizing locals when it is used
* fileobject.{c,h}: add getfilename() internal function.

Grammar/Grammar
Include/fileobject.h
Include/graminit.h
Include/opcode.h
Objects/fileobject.c
Python/bltinmodule.c
Python/ceval.c
Python/compile.c
Python/graminit.c

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