# HG changeset patch # User Chris Angelico # Date 1393522249 -39600 # Node ID 59d37fbf71cde0ddf89f11b7e34a20d758ab03bb # Parent 5c078eb8da3966bd5111abd063d159a46ac8641b Updates to make things work Changes Tools/parser/unparse.py to add an unparser for ExceptExp, and updates Lib/symbol.py; the other changes I don't understand, I think the build process did them automatically. diff -r 5c078eb8da39 -r 59d37fbf71cd Include/Python-ast.h --- a/Include/Python-ast.h Mon Feb 24 01:27:06 2014 +0100 +++ b/Include/Python-ast.h Fri Feb 28 04:30:49 2014 +1100 @@ -180,11 +180,11 @@ enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4, IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8, SetComp_kind=9, DictComp_kind=10, GeneratorExp_kind=11, - Yield_kind=12, YieldFrom_kind=13, Compare_kind=14, - Call_kind=15, Num_kind=16, Str_kind=17, Bytes_kind=18, - NameConstant_kind=19, Ellipsis_kind=20, Attribute_kind=21, - Subscript_kind=22, Starred_kind=23, Name_kind=24, - List_kind=25, Tuple_kind=26}; + ExceptExp_kind=12, Yield_kind=13, YieldFrom_kind=14, + Compare_kind=15, Call_kind=16, Num_kind=17, Str_kind=18, + Bytes_kind=19, NameConstant_kind=20, Ellipsis_kind=21, + Attribute_kind=22, Subscript_kind=23, Starred_kind=24, + Name_kind=25, List_kind=26, Tuple_kind=27}; struct _expr { enum _expr_kind kind; union { @@ -246,6 +246,12 @@ } GeneratorExp; struct { + expr_ty body; + expr_ty etype; + expr_ty value; + } ExceptExp; + + struct { expr_ty value; } Yield; @@ -496,6 +502,9 @@ #define GeneratorExp(a0, a1, a2, a3, a4) _Py_GeneratorExp(a0, a1, a2, a3, a4) expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena *arena); +#define ExceptExp(a0, a1, a2, a3, a4, a5) _Py_ExceptExp(a0, a1, a2, a3, a4, a5) +expr_ty _Py_ExceptExp(expr_ty body, expr_ty etype, expr_ty value, int lineno, + int col_offset, PyArena *arena); #define Yield(a0, a1, a2, a3) _Py_Yield(a0, a1, a2, a3) expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, PyArena *arena); #define YieldFrom(a0, a1, a2, a3) _Py_YieldFrom(a0, a1, a2, a3) diff -r 5c078eb8da39 -r 59d37fbf71cd Include/graminit.h --- a/Include/graminit.h Mon Feb 24 01:27:06 2014 +0100 +++ b/Include/graminit.h Fri Feb 28 04:30:49 2014 +1100 @@ -66,19 +66,21 @@ #define power 319 #define atom 320 #define testlist_comp 321 -#define trailer 322 -#define subscriptlist 323 -#define subscript 324 -#define sliceop 325 -#define exprlist 326 -#define testlist 327 -#define dictorsetmaker 328 -#define classdef 329 -#define arglist 330 -#define argument 331 -#define comp_iter 332 -#define comp_for 333 -#define comp_if 334 -#define encoding_decl 335 -#define yield_expr 336 -#define yield_arg 337 +#define testlist_except 322 +#define trailer 323 +#define subscriptlist 324 +#define subscript 325 +#define sliceop 326 +#define exprlist 327 +#define testlist 328 +#define dictorsetmaker 329 +#define classdef 330 +#define arglist 331 +#define argument 332 +#define comp_iter 333 +#define comp_for 334 +#define comp_if 335 +#define except_trailer 336 +#define encoding_decl 337 +#define yield_expr 338 +#define yield_arg 339 diff -r 5c078eb8da39 -r 59d37fbf71cd Lib/symbol.py --- a/Lib/symbol.py Mon Feb 24 01:27:06 2014 +0100 +++ b/Lib/symbol.py Fri Feb 28 04:30:49 2014 +1100 @@ -76,22 +76,24 @@ power = 319 atom = 320 testlist_comp = 321 -trailer = 322 -subscriptlist = 323 -subscript = 324 -sliceop = 325 -exprlist = 326 -testlist = 327 -dictorsetmaker = 328 -classdef = 329 -arglist = 330 -argument = 331 -comp_iter = 332 -comp_for = 333 -comp_if = 334 -encoding_decl = 335 -yield_expr = 336 -yield_arg = 337 +testlist_except = 322 +trailer = 323 +subscriptlist = 324 +subscript = 325 +sliceop = 326 +exprlist = 327 +testlist = 328 +dictorsetmaker = 329 +classdef = 330 +arglist = 331 +argument = 332 +comp_iter = 333 +comp_for = 334 +comp_if = 335 +except_trailer = 336 +encoding_decl = 337 +yield_expr = 338 +yield_arg = 339 #--end constants-- sym_name = {} diff -r 5c078eb8da39 -r 59d37fbf71cd Python/Python-ast.c --- a/Python/Python-ast.c Mon Feb 24 01:27:06 2014 +0100 +++ b/Python/Python-ast.c Fri Feb 28 04:30:49 2014 +1100 @@ -232,6 +232,13 @@ "elt", "generators", }; +static PyTypeObject *ExceptExp_type; +_Py_IDENTIFIER(etype); +static char *ExceptExp_fields[]={ + "body", + "etype", + "value", +}; static PyTypeObject *Yield_type; static char *Yield_fields[]={ "value", @@ -877,6 +884,8 @@ GeneratorExp_type = make_type("GeneratorExp", expr_type, GeneratorExp_fields, 2); if (!GeneratorExp_type) return 0; + ExceptExp_type = make_type("ExceptExp", expr_type, ExceptExp_fields, 3); + if (!ExceptExp_type) return 0; Yield_type = make_type("Yield", expr_type, Yield_fields, 1); if (!Yield_type) return 0; YieldFrom_type = make_type("YieldFrom", expr_type, YieldFrom_fields, 1); @@ -1825,6 +1834,38 @@ } expr_ty +ExceptExp(expr_ty body, expr_ty etype, expr_ty value, int lineno, int + col_offset, PyArena *arena) +{ + expr_ty p; + if (!body) { + PyErr_SetString(PyExc_ValueError, + "field body is required for ExceptExp"); + return NULL; + } + if (!etype) { + PyErr_SetString(PyExc_ValueError, + "field etype is required for ExceptExp"); + return NULL; + } + if (!value) { + PyErr_SetString(PyExc_ValueError, + "field value is required for ExceptExp"); + return NULL; + } + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = ExceptExp_kind; + p->v.ExceptExp.body = body; + p->v.ExceptExp.etype = etype; + p->v.ExceptExp.value = value; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + +expr_ty Yield(expr_ty value, int lineno, int col_offset, PyArena *arena) { expr_ty p; @@ -2898,6 +2939,25 @@ goto failed; Py_DECREF(value); break; + case ExceptExp_kind: + result = PyType_GenericNew(ExceptExp_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_expr(o->v.ExceptExp.body); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.ExceptExp.etype); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_etype, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.ExceptExp.value); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + goto failed; + Py_DECREF(value); + break; case Yield_kind: result = PyType_GenericNew(Yield_type, NULL, NULL); if (!result) goto failed; @@ -5375,6 +5435,52 @@ if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptExp_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + expr_ty body; + expr_ty etype; + expr_ty value; + + if (_PyObject_HasAttrId(obj, &PyId_body)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_body); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &body, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ExceptExp"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_etype)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_etype); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &etype, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"etype\" missing from ExceptExp"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_value)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_value); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &value, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from ExceptExp"); + return 1; + } + *out = ExceptExp(body, etype, value, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type); if (isinstance == -1) { return 1; @@ -6902,6 +7008,8 @@ return NULL; if (PyDict_SetItemString(d, "GeneratorExp", (PyObject*)GeneratorExp_type) < 0) return NULL; + if (PyDict_SetItemString(d, "ExceptExp", (PyObject*)ExceptExp_type) < 0) + return NULL; if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return NULL; if (PyDict_SetItemString(d, "YieldFrom", (PyObject*)YieldFrom_type) < 0) diff -r 5c078eb8da39 -r 59d37fbf71cd Python/graminit.c --- a/Python/graminit.c Mon Feb 24 01:27:06 2014 +0100 +++ b/Python/graminit.c Fri Feb 28 04:30:49 2014 +1100 @@ -1365,14 +1365,14 @@ static arc arcs_64_0[10] = { {13, 1}, {148, 2}, - {150, 3}, + {151, 3}, {21, 4}, - {153, 4}, - {154, 5}, + {154, 4}, + {155, 5}, {79, 4}, - {155, 4}, {156, 4}, {157, 4}, + {158, 4}, }; static arc arcs_64_1[3] = { {47, 6}, @@ -1380,28 +1380,28 @@ {15, 4}, }; static arc arcs_64_2[2] = { - {147, 7}, - {149, 4}, + {149, 7}, + {150, 4}, }; static arc arcs_64_3[2] = { - {151, 8}, - {152, 4}, + {152, 8}, + {153, 4}, }; static arc arcs_64_4[1] = { {0, 4}, }; static arc arcs_64_5[2] = { - {154, 5}, + {155, 5}, {0, 5}, }; static arc arcs_64_6[1] = { {15, 4}, }; static arc arcs_64_7[1] = { - {149, 4}, + {150, 4}, }; static arc arcs_64_8[1] = { - {152, 4}, + {153, 4}, }; static state states_64[9] = { {10, arcs_64_0}, @@ -1419,7 +1419,7 @@ {48, 1}, }; static arc arcs_65_1[3] = { - {158, 2}, + {159, 2}, {30, 3}, {0, 1}, }; @@ -1442,388 +1442,440 @@ {3, arcs_65_3}, {2, arcs_65_4}, }; -static arc arcs_66_0[3] = { +static arc arcs_66_0[2] = { + {24, 1}, + {48, 1}, +}; +static arc arcs_66_1[4] = { + {160, 2}, + {159, 2}, + {30, 3}, + {0, 1}, +}; +static arc arcs_66_2[1] = { + {0, 2}, +}; +static arc arcs_66_3[3] = { + {24, 4}, + {48, 4}, + {0, 3}, +}; +static arc arcs_66_4[2] = { + {30, 3}, + {0, 4}, +}; +static state states_66[5] = { + {2, arcs_66_0}, + {4, arcs_66_1}, + {1, arcs_66_2}, + {3, arcs_66_3}, + {2, arcs_66_4}, +}; +static arc arcs_67_0[3] = { {13, 1}, {148, 2}, {78, 3}, }; -static arc arcs_66_1[2] = { +static arc arcs_67_1[2] = { {14, 4}, {15, 5}, }; -static arc arcs_66_2[1] = { - {159, 6}, -}; -static arc arcs_66_3[1] = { +static arc arcs_67_2[1] = { + {161, 6}, +}; +static arc arcs_67_3[1] = { {21, 5}, }; -static arc arcs_66_4[1] = { +static arc arcs_67_4[1] = { {15, 5}, }; -static arc arcs_66_5[1] = { +static arc arcs_67_5[1] = { {0, 5}, }; -static arc arcs_66_6[1] = { - {149, 5}, -}; -static state states_66[7] = { - {3, arcs_66_0}, - {2, arcs_66_1}, - {1, arcs_66_2}, - {1, arcs_66_3}, - {1, arcs_66_4}, - {1, arcs_66_5}, - {1, arcs_66_6}, -}; -static arc arcs_67_0[1] = { - {160, 1}, -}; -static arc arcs_67_1[2] = { +static arc arcs_67_6[1] = { + {150, 5}, +}; +static state states_67[7] = { + {3, arcs_67_0}, + {2, arcs_67_1}, + {1, arcs_67_2}, + {1, arcs_67_3}, + {1, arcs_67_4}, + {1, arcs_67_5}, + {1, arcs_67_6}, +}; +static arc arcs_68_0[1] = { + {162, 1}, +}; +static arc arcs_68_1[2] = { {30, 2}, {0, 1}, }; -static arc arcs_67_2[2] = { - {160, 1}, +static arc arcs_68_2[2] = { + {162, 1}, {0, 2}, }; -static state states_67[3] = { - {1, arcs_67_0}, - {2, arcs_67_1}, - {2, arcs_67_2}, -}; -static arc arcs_68_0[2] = { +static state states_68[3] = { + {1, arcs_68_0}, + {2, arcs_68_1}, + {2, arcs_68_2}, +}; +static arc arcs_69_0[2] = { {24, 1}, {25, 2}, }; -static arc arcs_68_1[2] = { +static arc arcs_69_1[2] = { {25, 2}, {0, 1}, }; -static arc arcs_68_2[3] = { +static arc arcs_69_2[3] = { {24, 3}, - {161, 4}, + {163, 4}, {0, 2}, }; -static arc arcs_68_3[2] = { - {161, 4}, +static arc arcs_69_3[2] = { + {163, 4}, {0, 3}, }; -static arc arcs_68_4[1] = { +static arc arcs_69_4[1] = { {0, 4}, }; -static state states_68[5] = { - {2, arcs_68_0}, - {2, arcs_68_1}, - {3, arcs_68_2}, - {2, arcs_68_3}, - {1, arcs_68_4}, -}; -static arc arcs_69_0[1] = { +static state states_69[5] = { + {2, arcs_69_0}, + {2, arcs_69_1}, + {3, arcs_69_2}, + {2, arcs_69_3}, + {1, arcs_69_4}, +}; +static arc arcs_70_0[1] = { {25, 1}, }; -static arc arcs_69_1[2] = { +static arc arcs_70_1[2] = { {24, 2}, {0, 1}, }; -static arc arcs_69_2[1] = { +static arc arcs_70_2[1] = { {0, 2}, }; -static state states_69[3] = { - {1, arcs_69_0}, - {2, arcs_69_1}, - {1, arcs_69_2}, -}; -static arc arcs_70_0[2] = { +static state states_70[3] = { + {1, arcs_70_0}, + {2, arcs_70_1}, + {1, arcs_70_2}, +}; +static arc arcs_71_0[2] = { {103, 1}, {48, 1}, }; -static arc arcs_70_1[2] = { +static arc arcs_71_1[2] = { {30, 2}, {0, 1}, }; -static arc arcs_70_2[3] = { +static arc arcs_71_2[3] = { {103, 1}, {48, 1}, {0, 2}, }; -static state states_70[3] = { - {2, arcs_70_0}, - {2, arcs_70_1}, - {3, arcs_70_2}, -}; -static arc arcs_71_0[1] = { +static state states_71[3] = { + {2, arcs_71_0}, + {2, arcs_71_1}, + {3, arcs_71_2}, +}; +static arc arcs_72_0[1] = { {24, 1}, }; -static arc arcs_71_1[2] = { +static arc arcs_72_1[2] = { {30, 2}, {0, 1}, }; -static arc arcs_71_2[2] = { +static arc arcs_72_2[2] = { {24, 1}, {0, 2}, }; -static state states_71[3] = { - {1, arcs_71_0}, - {2, arcs_71_1}, - {2, arcs_71_2}, -}; -static arc arcs_72_0[1] = { +static state states_72[3] = { + {1, arcs_72_0}, + {2, arcs_72_1}, + {2, arcs_72_2}, +}; +static arc arcs_73_0[1] = { {24, 1}, }; -static arc arcs_72_1[4] = { +static arc arcs_73_1[4] = { {25, 2}, - {158, 3}, + {159, 3}, {30, 4}, {0, 1}, }; -static arc arcs_72_2[1] = { +static arc arcs_73_2[1] = { {24, 5}, }; -static arc arcs_72_3[1] = { +static arc arcs_73_3[1] = { {0, 3}, }; -static arc arcs_72_4[2] = { +static arc arcs_73_4[2] = { {24, 6}, {0, 4}, }; -static arc arcs_72_5[3] = { - {158, 3}, +static arc arcs_73_5[3] = { + {159, 3}, {30, 7}, {0, 5}, }; -static arc arcs_72_6[2] = { +static arc arcs_73_6[2] = { {30, 4}, {0, 6}, }; -static arc arcs_72_7[2] = { +static arc arcs_73_7[2] = { {24, 8}, {0, 7}, }; -static arc arcs_72_8[1] = { +static arc arcs_73_8[1] = { {25, 9}, }; -static arc arcs_72_9[1] = { +static arc arcs_73_9[1] = { {24, 10}, }; -static arc arcs_72_10[2] = { +static arc arcs_73_10[2] = { {30, 7}, {0, 10}, }; -static state states_72[11] = { - {1, arcs_72_0}, - {4, arcs_72_1}, - {1, arcs_72_2}, - {1, arcs_72_3}, - {2, arcs_72_4}, - {3, arcs_72_5}, - {2, arcs_72_6}, - {2, arcs_72_7}, - {1, arcs_72_8}, - {1, arcs_72_9}, - {2, arcs_72_10}, -}; -static arc arcs_73_0[1] = { - {162, 1}, -}; -static arc arcs_73_1[1] = { +static state states_73[11] = { + {1, arcs_73_0}, + {4, arcs_73_1}, + {1, arcs_73_2}, + {1, arcs_73_3}, + {2, arcs_73_4}, + {3, arcs_73_5}, + {2, arcs_73_6}, + {2, arcs_73_7}, + {1, arcs_73_8}, + {1, arcs_73_9}, + {2, arcs_73_10}, +}; +static arc arcs_74_0[1] = { + {164, 1}, +}; +static arc arcs_74_1[1] = { {21, 2}, }; -static arc arcs_73_2[2] = { +static arc arcs_74_2[2] = { {13, 3}, {25, 4}, }; -static arc arcs_73_3[2] = { +static arc arcs_74_3[2] = { {14, 5}, {15, 6}, }; -static arc arcs_73_4[1] = { +static arc arcs_74_4[1] = { {26, 7}, }; -static arc arcs_73_5[1] = { +static arc arcs_74_5[1] = { {15, 6}, }; -static arc arcs_73_6[1] = { +static arc arcs_74_6[1] = { {25, 4}, }; -static arc arcs_73_7[1] = { +static arc arcs_74_7[1] = { {0, 7}, }; -static state states_73[8] = { - {1, arcs_73_0}, - {1, arcs_73_1}, - {2, arcs_73_2}, - {2, arcs_73_3}, - {1, arcs_73_4}, - {1, arcs_73_5}, - {1, arcs_73_6}, - {1, arcs_73_7}, -}; -static arc arcs_74_0[3] = { - {163, 1}, +static state states_74[8] = { + {1, arcs_74_0}, + {1, arcs_74_1}, + {2, arcs_74_2}, + {2, arcs_74_3}, + {1, arcs_74_4}, + {1, arcs_74_5}, + {1, arcs_74_6}, + {1, arcs_74_7}, +}; +static arc arcs_75_0[3] = { + {165, 1}, {31, 2}, {32, 3}, }; -static arc arcs_74_1[2] = { +static arc arcs_75_1[2] = { {30, 4}, {0, 1}, }; -static arc arcs_74_2[1] = { +static arc arcs_75_2[1] = { {24, 5}, }; -static arc arcs_74_3[1] = { +static arc arcs_75_3[1] = { {24, 6}, }; -static arc arcs_74_4[4] = { - {163, 1}, +static arc arcs_75_4[4] = { + {165, 1}, {31, 2}, {32, 3}, {0, 4}, }; -static arc arcs_74_5[2] = { +static arc arcs_75_5[2] = { {30, 7}, {0, 5}, }; -static arc arcs_74_6[1] = { +static arc arcs_75_6[1] = { {0, 6}, }; -static arc arcs_74_7[2] = { - {163, 5}, +static arc arcs_75_7[2] = { + {165, 5}, {32, 3}, }; -static state states_74[8] = { - {3, arcs_74_0}, - {2, arcs_74_1}, - {1, arcs_74_2}, - {1, arcs_74_3}, - {4, arcs_74_4}, - {2, arcs_74_5}, - {1, arcs_74_6}, - {2, arcs_74_7}, -}; -static arc arcs_75_0[1] = { +static state states_75[8] = { + {3, arcs_75_0}, + {2, arcs_75_1}, + {1, arcs_75_2}, + {1, arcs_75_3}, + {4, arcs_75_4}, + {2, arcs_75_5}, + {1, arcs_75_6}, + {2, arcs_75_7}, +}; +static arc arcs_76_0[1] = { {24, 1}, }; -static arc arcs_75_1[3] = { - {158, 2}, +static arc arcs_76_1[4] = { + {160, 2}, + {159, 2}, {29, 3}, {0, 1}, }; -static arc arcs_75_2[1] = { +static arc arcs_76_2[1] = { {0, 2}, }; -static arc arcs_75_3[1] = { +static arc arcs_76_3[1] = { {24, 2}, }; -static state states_75[4] = { - {1, arcs_75_0}, - {3, arcs_75_1}, - {1, arcs_75_2}, - {1, arcs_75_3}, -}; -static arc arcs_76_0[2] = { - {158, 1}, - {165, 1}, -}; -static arc arcs_76_1[1] = { +static state states_76[4] = { + {1, arcs_76_0}, + {4, arcs_76_1}, + {1, arcs_76_2}, + {1, arcs_76_3}, +}; +static arc arcs_77_0[2] = { + {159, 1}, + {167, 1}, +}; +static arc arcs_77_1[1] = { {0, 1}, }; -static state states_76[2] = { - {2, arcs_76_0}, - {1, arcs_76_1}, -}; -static arc arcs_77_0[1] = { +static state states_77[2] = { + {2, arcs_77_0}, + {1, arcs_77_1}, +}; +static arc arcs_78_0[1] = { {96, 1}, }; -static arc arcs_77_1[1] = { +static arc arcs_78_1[1] = { {62, 2}, }; -static arc arcs_77_2[1] = { +static arc arcs_78_2[1] = { {97, 3}, }; -static arc arcs_77_3[1] = { +static arc arcs_78_3[1] = { {107, 4}, }; -static arc arcs_77_4[2] = { - {164, 5}, +static arc arcs_78_4[2] = { + {166, 5}, {0, 4}, }; -static arc arcs_77_5[1] = { +static arc arcs_78_5[1] = { {0, 5}, }; -static state states_77[6] = { - {1, arcs_77_0}, - {1, arcs_77_1}, - {1, arcs_77_2}, - {1, arcs_77_3}, - {2, arcs_77_4}, - {1, arcs_77_5}, -}; -static arc arcs_78_0[1] = { - {92, 1}, -}; -static arc arcs_78_1[1] = { - {109, 2}, -}; -static arc arcs_78_2[2] = { - {164, 3}, - {0, 2}, -}; -static arc arcs_78_3[1] = { - {0, 3}, -}; -static state states_78[4] = { +static state states_78[6] = { {1, arcs_78_0}, {1, arcs_78_1}, - {2, arcs_78_2}, + {1, arcs_78_2}, {1, arcs_78_3}, + {2, arcs_78_4}, + {1, arcs_78_5}, }; static arc arcs_79_0[1] = { - {21, 1}, + {92, 1}, }; static arc arcs_79_1[1] = { - {0, 1}, -}; -static state states_79[2] = { + {109, 2}, +}; +static arc arcs_79_2[2] = { + {166, 3}, + {0, 2}, +}; +static arc arcs_79_3[1] = { + {0, 3}, +}; +static state states_79[4] = { {1, arcs_79_0}, {1, arcs_79_1}, + {2, arcs_79_2}, + {1, arcs_79_3}, }; static arc arcs_80_0[1] = { - {167, 1}, -}; -static arc arcs_80_1[2] = { - {168, 2}, + {104, 1}, +}; +static arc arcs_80_1[1] = { + {24, 2}, +}; +static arc arcs_80_2[1] = { + {25, 3}, +}; +static arc arcs_80_3[1] = { + {24, 4}, +}; +static arc arcs_80_4[1] = { + {0, 4}, +}; +static state states_80[5] = { + {1, arcs_80_0}, + {1, arcs_80_1}, + {1, arcs_80_2}, + {1, arcs_80_3}, + {1, arcs_80_4}, +}; +static arc arcs_81_0[1] = { + {21, 1}, +}; +static arc arcs_81_1[1] = { {0, 1}, }; -static arc arcs_80_2[1] = { +static state states_81[2] = { + {1, arcs_81_0}, + {1, arcs_81_1}, +}; +static arc arcs_82_0[1] = { + {169, 1}, +}; +static arc arcs_82_1[2] = { + {170, 2}, + {0, 1}, +}; +static arc arcs_82_2[1] = { {0, 2}, }; -static state states_80[3] = { - {1, arcs_80_0}, - {2, arcs_80_1}, - {1, arcs_80_2}, -}; -static arc arcs_81_0[2] = { +static state states_82[3] = { + {1, arcs_82_0}, + {2, arcs_82_1}, + {1, arcs_82_2}, +}; +static arc arcs_83_0[2] = { {73, 1}, {9, 2}, }; -static arc arcs_81_1[1] = { +static arc arcs_83_1[1] = { {24, 2}, }; -static arc arcs_81_2[1] = { +static arc arcs_83_2[1] = { {0, 2}, }; -static state states_81[3] = { - {2, arcs_81_0}, - {1, arcs_81_1}, - {1, arcs_81_2}, -}; -static dfa dfas[82] = { +static state states_83[3] = { + {2, arcs_83_0}, + {1, arcs_83_1}, + {1, arcs_83_2}, +}; +static dfa dfas[84] = { {256, "single_input", 0, 3, states_0, - "\004\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\120\076\204\000"}, + "\004\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\220\174\020\002"}, {257, "file_input", 0, 2, states_1, - "\204\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\120\076\204\000"}, + "\204\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\220\174\020\002"}, {258, "eval_input", 0, 3, states_2, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\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\000"}, {260, "decorators", 0, 2, states_4, @@ -1843,15 +1895,15 @@ {267, "vfpdef", 0, 2, states_11, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {268, "stmt", 0, 2, states_12, - "\000\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\120\076\204\000"}, + "\000\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\220\174\020\002"}, {269, "simple_stmt", 0, 4, states_13, - "\000\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\120\076\200\000"}, + "\000\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\220\174\000\002"}, {270, "small_stmt", 0, 2, states_14, - "\000\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\120\076\200\000"}, + "\000\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\220\174\000\002"}, {271, "expr_stmt", 0, 6, states_15, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, {272, "testlist_star_expr", 0, 3, states_16, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, {273, "augassign", 0, 2, states_17, "\000\000\000\000\000\000\376\037\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {274, "del_stmt", 0, 3, states_18, @@ -1859,7 +1911,7 @@ {275, "pass_stmt", 0, 2, states_19, "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {276, "flow_stmt", 0, 2, states_20, - "\000\000\000\000\000\000\000\000\340\001\000\000\000\000\000\000\000\000\000\000\200\000"}, + "\000\000\000\000\000\000\000\000\340\001\000\000\000\000\000\000\000\000\000\000\000\002"}, {277, "break_stmt", 0, 2, states_21, "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {278, "continue_stmt", 0, 2, states_22, @@ -1867,7 +1919,7 @@ {279, "return_stmt", 0, 3, states_23, "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {280, "yield_stmt", 0, 2, states_24, - "\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\000\000\000\000\000\000\000\000\000\000\000\000\000\002"}, {281, "raise_stmt", 0, 5, states_25, "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000"}, {282, "import_stmt", 0, 2, states_26, @@ -1893,7 +1945,7 @@ {292, "assert_stmt", 0, 5, states_36, "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, {293, "compound_stmt", 0, 2, states_37, - "\000\010\020\000\000\000\000\000\000\000\000\220\045\000\000\000\000\000\000\000\004\000"}, + "\000\010\020\000\000\000\000\000\000\000\000\220\045\000\000\000\000\000\000\000\020\000"}, {294, "if_stmt", 0, 8, states_38, "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, {295, "while_stmt", 0, 8, states_39, @@ -1905,85 +1957,89 @@ {298, "with_stmt", 0, 5, states_42, "\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"}, {299, "with_item", 0, 4, states_43, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, {300, "except_clause", 0, 5, states_44, "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"}, {301, "suite", 0, 5, states_45, - "\004\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\120\076\200\000"}, + "\004\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\220\174\000\002"}, {302, "test", 0, 6, states_46, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, {303, "test_nocond", 0, 2, states_47, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, {304, "lambdef", 0, 5, states_48, "\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000"}, {305, "lambdef_nocond", 0, 5, states_49, "\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000"}, {306, "or_test", 0, 2, states_50, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\220\174\000\000"}, {307, "and_test", 0, 2, states_51, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\220\174\000\000"}, {308, "not_test", 0, 3, states_52, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\220\174\000\000"}, {309, "comparison", 0, 2, states_53, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {310, "comp_op", 0, 4, states_54, "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\220\177\000\000\000\000\000\000"}, {311, "star_expr", 0, 3, states_55, "\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {312, "expr", 0, 2, states_56, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {313, "xor_expr", 0, 2, states_57, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {314, "and_expr", 0, 2, states_58, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {315, "shift_expr", 0, 2, states_59, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {316, "arith_expr", 0, 2, states_60, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {317, "term", 0, 2, states_61, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {318, "factor", 0, 3, states_62, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, {319, "power", 0, 4, states_63, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\220\174\000\000"}, {320, "atom", 0, 9, states_64, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\220\174\000\000"}, {321, "testlist_comp", 0, 5, states_65, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, - {322, "trailer", 0, 7, states_66, + "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {322, "testlist_except", 0, 5, states_66, + "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {323, "trailer", 0, 7, states_67, "\000\040\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\020\000\000\000"}, - {323, "subscriptlist", 0, 3, states_67, - "\000\040\040\002\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, - {324, "subscript", 0, 5, states_68, - "\000\040\040\002\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, - {325, "sliceop", 0, 3, states_69, + {324, "subscriptlist", 0, 3, states_68, + "\000\040\040\002\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {325, "subscript", 0, 5, states_69, + "\000\040\040\002\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {326, "sliceop", 0, 3, states_70, "\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {326, "exprlist", 0, 3, states_70, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, - {327, "testlist", 0, 3, states_71, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, - {328, "dictorsetmaker", 0, 11, states_72, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, - {329, "classdef", 0, 8, states_73, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000"}, - {330, "arglist", 0, 8, states_74, - "\000\040\040\200\001\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, - {331, "argument", 0, 4, states_75, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, - {332, "comp_iter", 0, 2, states_76, + {327, "exprlist", 0, 3, states_71, + "\000\040\040\200\000\000\000\000\000\200\000\000\000\000\000\000\000\206\220\174\000\000"}, + {328, "testlist", 0, 3, states_72, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {329, "dictorsetmaker", 0, 11, states_73, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {330, "classdef", 0, 8, states_74, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000"}, + {331, "arglist", 0, 8, states_75, + "\000\040\040\200\001\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {332, "argument", 0, 4, states_76, + "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\220\174\000\000"}, + {333, "comp_iter", 0, 2, states_77, "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, - {333, "comp_for", 0, 6, states_77, + {334, "comp_for", 0, 6, states_78, "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, - {334, "comp_if", 0, 4, states_78, + {335, "comp_if", 0, 4, states_79, "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, - {335, "encoding_decl", 0, 2, states_79, + {336, "except_trailer", 0, 5, states_80, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"}, + {337, "encoding_decl", 0, 2, states_81, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {336, "yield_expr", 0, 3, states_80, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000"}, - {337, "yield_arg", 0, 3, states_81, - "\000\040\040\000\000\000\000\000\000\202\000\000\000\200\020\000\000\206\120\076\000\000"}, -}; -static label labels[169] = { + {338, "yield_expr", 0, 3, states_82, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002"}, + {339, "yield_arg", 0, 3, states_83, + "\000\040\040\000\000\000\000\000\000\202\000\000\000\200\020\000\000\206\220\174\000\000"}, +}; +static label labels[171] = { {0, "EMPTY"}, {256, 0}, {4, 0}, @@ -1993,16 +2049,16 @@ {268, 0}, {0, 0}, {258, 0}, - {327, 0}, + {328, 0}, {259, 0}, {49, 0}, {289, 0}, {7, 0}, - {330, 0}, + {331, 0}, {8, 0}, {260, 0}, {261, 0}, - {329, 0}, + {330, 0}, {262, 0}, {1, "def"}, {1, 0}, @@ -2031,7 +2087,7 @@ {292, 0}, {272, 0}, {273, 0}, - {336, 0}, + {338, 0}, {311, 0}, {36, 0}, {37, 0}, @@ -2046,7 +2102,7 @@ {46, 0}, {48, 0}, {1, "del"}, - {326, 0}, + {327, 0}, {1, "pass"}, {277, 0}, {278, 0}, @@ -2130,33 +2186,35 @@ {31, 0}, {319, 0}, {320, 0}, + {323, 0}, {322, 0}, + {9, 0}, {321, 0}, - {9, 0}, {10, 0}, {25, 0}, - {328, 0}, + {329, 0}, {26, 0}, {2, 0}, {3, 0}, {1, "None"}, {1, "True"}, {1, "False"}, - {333, 0}, - {323, 0}, + {334, 0}, + {336, 0}, {324, 0}, {325, 0}, + {326, 0}, {1, "class"}, - {331, 0}, {332, 0}, - {334, 0}, + {333, 0}, {335, 0}, + {337, 0}, {1, "yield"}, - {337, 0}, + {339, 0}, }; grammar _PyParser_Grammar = { - 82, + 84, dfas, - {169, labels}, + {171, labels}, 256 }; diff -r 5c078eb8da39 -r 59d37fbf71cd Tools/parser/unparse.py --- a/Tools/parser/unparse.py Mon Feb 24 01:27:06 2014 +0100 +++ b/Tools/parser/unparse.py Fri Feb 28 04:30:49 2014 +1100 @@ -367,6 +367,15 @@ self.dispatch(t.orelse) self.write(")") + def _ExceptExp(self, t): + self.write("(") + self.dispatch(t.body) + self.write(" except ") + self.dispatch(t.etype) + self.write(": ") + self.dispatch(t.value) + self.write(")") + def _Set(self, t): assert(t.elts) # should be at least one element self.write("{")