diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex index e80515c9caf..e6d3c774be6 100644 --- a/Doc/lib/libdis.tex +++ b/Doc/lib/libdis.tex @@ -301,6 +301,12 @@ is evaluated, the locals are passed to the class definition. Returns with TOS to the caller of the function. \end{opcodedesc} +\begin{opcodedesc}{IMPORT_STAR}{} +Loads all symbols not starting with '_' directly from the module TOS +to the local namespace. The module is popped after loading all names. +This opcode implements 'from module import *'. +\begin{opcodedesc} + \begin{opcodedesc}{EXEC_STMT}{} Implements \code{exec TOS2,TOS1,TOS}. The compiler fills missing optional parameters with None. @@ -411,8 +417,9 @@ modifies the name space. \end{opcodedesc} \begin{opcodedesc}{IMPORT_FROM}{namei} -Imports the attribute \code{co_names[\var{namei}]}. The module to import -from is found in TOS and left there. +Loads the attribute \code{co_names[\var{namei}]} from the module found in +TOS. The resulting object is pushed onto the stack, to be subsequently +stored by a \code{STORE_FAST} instruction. \end{opcodedesc} \begin{opcodedesc}{JUMP_FORWARD}{delta} diff --git a/Doc/ref/ref6.tex b/Doc/ref/ref6.tex index dc50c274f41..008cf1c436e 100644 --- a/Doc/ref/ref6.tex +++ b/Doc/ref/ref6.tex @@ -443,8 +443,9 @@ It continues with the next cycle of the nearest enclosing loop. \stindex{import} \begin{verbatim} -import_stmt: "import" module ("," module)* - | "from" module "import" identifier ("," identifier)* +import_stmt: "import" module ["as" name] ("," module ["as" name] )* + | "from" module "import" identifier ["as" name] + ("," identifier ["as" name] )* | "from" module "import" "*" module: (identifier ".")* identifier \end{verbatim} @@ -496,13 +497,16 @@ begin. The first form of \keyword{import} statement binds the module name in the local namespace to the module object, and then goes on to import the -next identifier, if any. The \keyword{from} form does not bind the -module name: it goes through the list of identifiers, looks each one -of them up in the module found in step (1), and binds the name in the -local namespace to the object thus found. If a name is not found, +next identifier, if any. If the module name is followed by \keyword{as}, +the name following \keyword{as} is used as the local name for the module. +The \keyword{from} form does not bind the module name: it goes through the +list of identifiers, looks each one of them up in the module found in step +(1), and binds the name in the local namespace to the object thus found. +Like with the first form of \keyword{import}, an alternate local name can be +supplied by specifying "\keyword{as} localname". If a name is not found, \exception{ImportError} is raised. If the list of identifiers is replaced -by a star (\samp{*}), all names defined in the module are bound, -except those beginning with an underscore (\character{_}). +by a star (\samp{*}), all names defined in the module are bound, except +those beginning with an underscore (\character{_}). \indexii{name}{binding} \exindex{ImportError} diff --git a/Grammar/Grammar b/Grammar/Grammar index 872ec81b6d5..02e2edd0ced 100644 --- a/Grammar/Grammar +++ b/Grammar/Grammar @@ -41,7 +41,9 @@ break_stmt: 'break' continue_stmt: 'continue' return_stmt: 'return' [testlist] raise_stmt: 'raise' [test [',' test [',' test]]] -import_stmt: 'import' dotted_name (',' dotted_name)* | 'from' dotted_name 'import' ('*' | NAME (',' NAME)*) +import_stmt: 'import' dotted_as_name (',' dotted_as_name)* | 'from' dotted_name 'import' ('*' | import_as_name (',' import_as_name)*) +import_as_name: NAME [NAME NAME] +dotted_as_name: dotted_name [NAME NAME] dotted_name: NAME ('.' NAME)* global_stmt: 'global' NAME (',' NAME)* #access_stmt: 'access' ('*' | NAME (',' NAME)*) ':' accesstype (',' accesstype)* diff --git a/Include/graminit.h b/Include/graminit.h index 8bb17504bca..e0f2c2a3959 100644 --- a/Include/graminit.h +++ b/Include/graminit.h @@ -19,43 +19,45 @@ #define return_stmt 274 #define raise_stmt 275 #define import_stmt 276 -#define dotted_name 277 -#define global_stmt 278 -#define exec_stmt 279 -#define assert_stmt 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 power 300 -#define atom 301 -#define listmaker 302 -#define lambdef 303 -#define trailer 304 -#define subscriptlist 305 -#define subscript 306 -#define sliceop 307 -#define exprlist 308 -#define testlist 309 -#define dictmaker 310 -#define classdef 311 -#define arglist 312 -#define argument 313 -#define list_iter 314 -#define list_for 315 -#define list_if 316 +#define import_as_name 277 +#define dotted_as_name 278 +#define dotted_name 279 +#define global_stmt 280 +#define exec_stmt 281 +#define assert_stmt 282 +#define compound_stmt 283 +#define if_stmt 284 +#define while_stmt 285 +#define for_stmt 286 +#define try_stmt 287 +#define except_clause 288 +#define suite 289 +#define test 290 +#define and_test 291 +#define not_test 292 +#define comparison 293 +#define comp_op 294 +#define expr 295 +#define xor_expr 296 +#define and_expr 297 +#define shift_expr 298 +#define arith_expr 299 +#define term 300 +#define factor 301 +#define power 302 +#define atom 303 +#define listmaker 304 +#define lambdef 305 +#define trailer 306 +#define subscriptlist 307 +#define subscript 308 +#define sliceop 309 +#define exprlist 310 +#define testlist 311 +#define dictmaker 312 +#define classdef 313 +#define arglist 314 +#define argument 315 +#define list_iter 316 +#define list_for 317 +#define list_if 318 diff --git a/Include/opcode.h b/Include/opcode.h index 78505b721d4..1bd89ee876d 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -65,7 +65,7 @@ redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. #define LOAD_LOCALS 82 #define RETURN_VALUE 83 - +#define IMPORT_STAR 84 #define EXEC_STMT 85 #define POP_BLOCK 87 diff --git a/Lib/dis.py b/Lib/dis.py index 3309357e292..fce39f275b0 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -195,7 +195,7 @@ def_op('BREAK_LOOP', 80) def_op('LOAD_LOCALS', 82) def_op('RETURN_VALUE', 83) - +def_op('IMPORT_STAR', 84) def_op('EXEC_STMT', 85) def_op('POP_BLOCK', 87) diff --git a/Lib/test/output/test_pkg b/Lib/test/output/test_pkg index 4cb503eb7cc..4e67f8cf81d 100644 --- a/Lib/test/output/test_pkg +++ b/Lib/test/output/test_pkg @@ -36,3 +36,10 @@ t6.ham loading t6.eggs loading ['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__path__', 'eggs', 'ham', 'spam'] ['eggs', 'ham', 'spam', 't6'] +running test t7 +t7 loading +['__builtins__', '__doc__', '__file__', '__name__', '__path__'] +['__builtins__', '__doc__', '__file__', '__name__', '__path__'] +t7.sub.subsub loading +['__builtins__', '__doc__', '__file__', '__name__', '__path__', 'spam'] +t7.sub.subsub.spam = 1 diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py index fd226126449..a99da353c78 100644 --- a/Lib/test/test_pkg.py +++ b/Lib/test/test_pkg.py @@ -164,6 +164,33 @@ print dir(t6) from t6 import * print dir(t6) print dir() +"""), + + ("t7", [ + ("t7.py", "print 'Importing t7.py'"), + ("t7", None), + ("t7 __init__.py", "print __name__, 'loading'"), + ("t7 sub.py", "print 'THIS SHOULD NOT BE PRINTED (sub.py)'"), + ("t7 sub", None), + ("t7 sub __init__.py", ""), + ("t7 sub subsub.py", "print 'THIS SHOULD NOT BE PRINTED (subsub.py)'"), + ("t7 sub subsub", None), + ("t7 sub subsub __init__.py", "print __name__, 'loading'; spam = 1"), + ], +""" +t7, sub, subsub = None, None, None +import t7 as tas +print dir(tas) +assert not t7 +from t7 import sub as subpar +print dir(subpar) +assert not t7 and not sub +from t7.sub import subsub as subsubsub +print dir(subsubsub) +assert not t7 and not sub and not subsub +from t7.sub.subsub import spam as ham +print "t7.sub.subsub.spam =", ham +assert not t7 and not sub and not subsub """), ] diff --git a/Python/ceval.c b/Python/ceval.c index 40b57387749..af28cdca874 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -66,7 +66,8 @@ static PyObject *apply_slice(PyObject *, PyObject *, PyObject *); static int assign_slice(PyObject *, PyObject *, PyObject *, PyObject *); static PyObject *cmp_outcome(int, PyObject *, PyObject *); -static int import_from(PyObject *, PyObject *, PyObject *); +static PyObject *import_from(PyObject *, PyObject *); +static int import_all_from(PyObject *, PyObject *); static PyObject *build_class(PyObject *, PyObject *, PyObject *); static int exec_statement(PyFrameObject *, PyObject *, PyObject *, PyObject *); @@ -1414,20 +1415,28 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals, if (x != NULL) continue; break; - case IMPORT_FROM: - w = GETNAMEV(oparg); - v = TOP(); + case IMPORT_STAR: + v = POP(); PyFrame_FastToLocals(f); if ((x = f->f_locals) == NULL) { PyErr_SetString(PyExc_SystemError, "no locals"); break; } - err = import_from(x, v, w); + err = import_all_from(x, v); PyFrame_LocalsToFast(f, 0); + Py_DECREF(v); if (err == 0) continue; break; + case IMPORT_FROM: + w = GETNAMEV(oparg); + v = TOP(); + x = import_from(v, w); + PUSH(x); + if (x != NULL) continue; + break; + case JUMP_FORWARD: JUMPBY(oparg); continue; @@ -2647,43 +2656,51 @@ cmp_outcome(int op, register PyObject *v, register PyObject *w) return v; } -static int -import_from(PyObject *locals, PyObject *v, PyObject *name) +static PyObject * +import_from(PyObject *v, PyObject *name) { PyObject *w, *x; + if (!PyModule_Check(v)) { + PyErr_SetString(PyExc_TypeError, + "import-from requires module object"); + return NULL; + } + w = PyModule_GetDict(v); /* TDB: can this not fail ? */ + x = PyDict_GetItem(w, name); + if (x == NULL) { + PyErr_Format(PyExc_ImportError, + "cannot import name %.230s", + PyString_AsString(name)); + } else + Py_INCREF(x); + return x; +} + +static int +import_all_from(PyObject *locals, PyObject *v) +{ + int pos = 0, err; + PyObject *name, *value; + PyObject *w; + if (!PyModule_Check(v)) { PyErr_SetString(PyExc_TypeError, "import-from requires module object"); return -1; } - w = PyModule_GetDict(v); - if (PyString_AsString(name)[0] == '*') { - int pos, err; - PyObject *name, *value; - pos = 0; - while (PyDict_Next(w, &pos, &name, &value)) { - if (!PyString_Check(name) || - PyString_AsString(name)[0] == '_') + w = PyModule_GetDict(v); /* TBD: can this not fail ? */ + + while (PyDict_Next(w, &pos, &name, &value)) { + if (!PyString_Check(name) || + PyString_AsString(name)[0] == '_') continue; - Py_INCREF(value); - err = PyDict_SetItem(locals, name, value); - Py_DECREF(value); - if (err != 0) - return -1; - } - return 0; - } - else { - x = PyDict_GetItem(w, name); - if (x == NULL) { - PyErr_Format(PyExc_ImportError, - "cannot import name %.230s", - PyString_AsString(name)); + Py_INCREF(value); + err = PyDict_SetItem(locals, name, value); + Py_DECREF(value); + if (err != 0) return -1; - } - else - return PyDict_SetItem(locals, name, x); } + return 0; } static PyObject * @@ -2825,7 +2842,7 @@ find_from_args(PyFrameObject *f, int nexti) next_instr += nexti; opcode = (*next_instr++); - if (opcode != IMPORT_FROM) { + if (opcode != IMPORT_FROM && opcode != IMPORT_STAR) { Py_INCREF(Py_None); return Py_None; } @@ -2833,18 +2850,28 @@ find_from_args(PyFrameObject *f, int nexti) list = PyList_New(0); if (list == NULL) return NULL; - - do { - oparg = (next_instr[1]<<8) + next_instr[0]; - next_instr += 2; - name = Getnamev(f, oparg); - if (PyList_Append(list, name) < 0) { + + if (opcode == IMPORT_STAR) { + name = PyString_FromString("*"); + if (!name) Py_DECREF(list); - break; + else { + if (PyList_Append(list, name) < 0) + Py_DECREF(list); + Py_DECREF(name); } - opcode = (*next_instr++); - } while (opcode == IMPORT_FROM); - + } else { + do { + oparg = (next_instr[1]<<8) + next_instr[0]; + next_instr += 2; + name = Getnamev(f, oparg); + if (PyList_Append(list, name) < 0) { + Py_DECREF(list); + break; + } + opcode = (*next_instr++); + } while (opcode == IMPORT_FROM); + } return list; } diff --git a/Python/compile.c b/Python/compile.c index 706564780d5..e18f627dd83 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2095,6 +2095,22 @@ com_raise_stmt(struct compiling *c, node *n) com_pop(c, i); } +static void +com_from_import(struct compiling *c, node *n) +{ + com_addopname(c, IMPORT_FROM, CHILD(n, 0)); + com_push(c, 1); + if (NCH(n) > 1) { + if (strcmp(STR(CHILD(n, 1)), "as") != 0) { + com_error(c, PyExc_SyntaxError, "invalid syntax"); + return; + } + com_addopname(c, STORE_NAME, CHILD(n, 2)); + } else + com_addopname(c, STORE_NAME, CHILD(n, 0)); + com_pop(c, 1); +} + static void com_import_stmt(struct compiling *c, node *n) { @@ -2107,18 +2123,32 @@ com_import_stmt(struct compiling *c, node *n) REQ(CHILD(n, 1), dotted_name); com_addopname(c, IMPORT_NAME, CHILD(n, 1)); com_push(c, 1); - for (i = 3; i < NCH(n); i += 2) - com_addopname(c, IMPORT_FROM, CHILD(n, i)); - com_addbyte(c, POP_TOP); + if (TYPE(CHILD(n, 3)) == STAR) + com_addbyte(c, IMPORT_STAR); + else { + for (i = 3; i < NCH(n); i += 2) + com_from_import(c, CHILD(n, i)); + com_addbyte(c, POP_TOP); + } com_pop(c, 1); } else { /* 'import' ... */ for (i = 1; i < NCH(n); i += 2) { - REQ(CHILD(n, i), dotted_name); - com_addopname(c, IMPORT_NAME, CHILD(n, i)); + node *subn = CHILD(n, i); + REQ(subn, dotted_as_name); + com_addopname(c, IMPORT_NAME, CHILD(subn, 0)); com_push(c, 1); - com_addopname(c, STORE_NAME, CHILD(CHILD(n, i), 0)); + if (NCH(subn) > 1) { + if (strcmp(STR(CHILD(subn, 1)), "as") != 0) { + com_error(c, PyExc_SyntaxError, + "invalid syntax"); + return; + } + com_addopname(c, STORE_NAME, CHILD(subn, 2)); + } else + com_addopname(c, STORE_NAME, + CHILD(CHILD(subn, 0),0)); com_pop(c, 1); } } @@ -3295,12 +3325,14 @@ optimize(struct compiling *c) case IMPORT_FROM: com_addlocal_o(c, GETNAMEOBJ(oparg)); break; + case IMPORT_STAR: case EXEC_STMT: c->c_flags &= ~CO_OPTIMIZED; break; } } + /* TBD: Is this still necessary ? */ if (PyDict_GetItemString(c->c_locals, "*") != NULL) c->c_flags &= ~CO_OPTIMIZED; diff --git a/Python/graminit.c b/Python/graminit.c index 82b01bca278..d5cc2a0ecaf 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -363,7 +363,7 @@ static arc arcs_20_1[1] = { {50, 3}, }; static arc arcs_20_2[1] = { - {50, 4}, + {52, 4}, }; static arc arcs_20_3[2] = { {22, 1}, @@ -374,7 +374,7 @@ static arc arcs_20_4[1] = { }; static arc arcs_20_5[2] = { {23, 6}, - {12, 7}, + {53, 7}, }; static arc arcs_20_6[1] = { {0, 6}, @@ -384,7 +384,7 @@ static arc arcs_20_7[2] = { {0, 7}, }; static arc arcs_20_8[1] = { - {12, 7}, + {53, 7}, }; static state states_20[9] = { {2, arcs_20_0}, @@ -401,417 +401,433 @@ static arc arcs_21_0[1] = { {12, 1}, }; static arc arcs_21_1[2] = { - {52, 0}, + {12, 2}, {0, 1}, }; -static state states_21[2] = { +static arc arcs_21_2[1] = { + {12, 3}, +}; +static arc arcs_21_3[1] = { + {0, 3}, +}; +static state states_21[4] = { {1, arcs_21_0}, {2, arcs_21_1}, + {1, arcs_21_2}, + {1, arcs_21_3}, }; static arc arcs_22_0[1] = { - {53, 1}, + {52, 1}, }; -static arc arcs_22_1[1] = { +static arc arcs_22_1[2] = { + {12, 2}, + {0, 1}, +}; +static arc arcs_22_2[1] = { + {12, 3}, +}; +static arc arcs_22_3[1] = { + {0, 3}, +}; +static state states_22[4] = { + {1, arcs_22_0}, + {2, arcs_22_1}, + {1, arcs_22_2}, + {1, arcs_22_3}, +}; +static arc arcs_23_0[1] = { + {12, 1}, +}; +static arc arcs_23_1[2] = { + {54, 0}, + {0, 1}, +}; +static state states_23[2] = { + {1, arcs_23_0}, + {2, arcs_23_1}, +}; +static arc arcs_24_0[1] = { + {55, 1}, +}; +static arc arcs_24_1[1] = { {12, 2}, }; -static arc arcs_22_2[2] = { +static arc arcs_24_2[2] = { {22, 1}, {0, 2}, }; -static state states_22[3] = { - {1, arcs_22_0}, - {1, arcs_22_1}, - {2, arcs_22_2}, -}; -static arc arcs_23_0[1] = { - {54, 1}, -}; -static arc arcs_23_1[1] = { - {55, 2}, -}; -static arc arcs_23_2[2] = { - {56, 3}, - {0, 2}, -}; -static arc arcs_23_3[1] = { - {21, 4}, -}; -static arc arcs_23_4[2] = { - {22, 5}, - {0, 4}, -}; -static arc arcs_23_5[1] = { - {21, 6}, -}; -static arc arcs_23_6[1] = { - {0, 6}, -}; -static state states_23[7] = { - {1, arcs_23_0}, - {1, arcs_23_1}, - {2, arcs_23_2}, - {1, arcs_23_3}, - {2, arcs_23_4}, - {1, arcs_23_5}, - {1, arcs_23_6}, -}; -static arc arcs_24_0[1] = { - {57, 1}, -}; -static arc arcs_24_1[1] = { - {21, 2}, -}; -static arc arcs_24_2[2] = { - {22, 3}, - {0, 2}, -}; -static arc arcs_24_3[1] = { - {21, 4}, -}; -static arc arcs_24_4[1] = { - {0, 4}, -}; -static state states_24[5] = { +static state states_24[3] = { {1, arcs_24_0}, {1, arcs_24_1}, {2, arcs_24_2}, - {1, arcs_24_3}, - {1, arcs_24_4}, }; -static arc arcs_25_0[6] = { - {58, 1}, - {59, 1}, - {60, 1}, - {61, 1}, - {10, 1}, - {62, 1}, +static arc arcs_25_0[1] = { + {56, 1}, }; static arc arcs_25_1[1] = { - {0, 1}, + {57, 2}, }; -static state states_25[2] = { - {6, arcs_25_0}, +static arc arcs_25_2[2] = { + {58, 3}, + {0, 2}, +}; +static arc arcs_25_3[1] = { + {21, 4}, +}; +static arc arcs_25_4[2] = { + {22, 5}, + {0, 4}, +}; +static arc arcs_25_5[1] = { + {21, 6}, +}; +static arc arcs_25_6[1] = { + {0, 6}, +}; +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 arc arcs_26_0[1] = { - {63, 1}, + {59, 1}, }; static arc arcs_26_1[1] = { {21, 2}, }; -static arc arcs_26_2[1] = { - {14, 3}, +static arc arcs_26_2[2] = { + {22, 3}, + {0, 2}, }; static arc arcs_26_3[1] = { - {15, 4}, + {21, 4}, }; -static arc arcs_26_4[3] = { - {64, 1}, - {65, 5}, +static arc arcs_26_4[1] = { {0, 4}, }; -static arc arcs_26_5[1] = { - {14, 6}, -}; -static arc arcs_26_6[1] = { - {15, 7}, -}; -static arc arcs_26_7[1] = { - {0, 7}, -}; -static state states_26[8] = { +static state states_26[5] = { {1, arcs_26_0}, {1, arcs_26_1}, - {1, arcs_26_2}, + {2, arcs_26_2}, {1, arcs_26_3}, - {3, arcs_26_4}, - {1, arcs_26_5}, - {1, arcs_26_6}, - {1, arcs_26_7}, + {1, arcs_26_4}, }; -static arc arcs_27_0[1] = { - {66, 1}, +static arc arcs_27_0[6] = { + {60, 1}, + {61, 1}, + {62, 1}, + {63, 1}, + {10, 1}, + {64, 1}, }; static arc arcs_27_1[1] = { - {21, 2}, + {0, 1}, }; -static arc arcs_27_2[1] = { - {14, 3}, -}; -static arc arcs_27_3[1] = { - {15, 4}, -}; -static arc arcs_27_4[2] = { - {65, 5}, - {0, 4}, -}; -static arc arcs_27_5[1] = { - {14, 6}, -}; -static arc arcs_27_6[1] = { - {15, 7}, -}; -static arc arcs_27_7[1] = { - {0, 7}, -}; -static state states_27[8] = { - {1, arcs_27_0}, +static state states_27[2] = { + {6, arcs_27_0}, {1, arcs_27_1}, - {1, arcs_27_2}, - {1, arcs_27_3}, - {2, arcs_27_4}, - {1, arcs_27_5}, - {1, arcs_27_6}, - {1, arcs_27_7}, }; static arc arcs_28_0[1] = { - {67, 1}, + {65, 1}, }; static arc arcs_28_1[1] = { - {39, 2}, + {21, 2}, }; static arc arcs_28_2[1] = { - {56, 3}, + {14, 3}, }; static arc arcs_28_3[1] = { - {9, 4}, + {15, 4}, }; -static arc arcs_28_4[1] = { - {14, 5}, +static arc arcs_28_4[3] = { + {66, 1}, + {67, 5}, + {0, 4}, }; static arc arcs_28_5[1] = { - {15, 6}, + {14, 6}, }; -static arc arcs_28_6[2] = { - {65, 7}, - {0, 6}, +static arc arcs_28_6[1] = { + {15, 7}, }; static arc arcs_28_7[1] = { - {14, 8}, + {0, 7}, }; -static arc arcs_28_8[1] = { - {15, 9}, -}; -static arc arcs_28_9[1] = { - {0, 9}, -}; -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}, + {3, 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] = { {68, 1}, }; static arc arcs_29_1[1] = { - {14, 2}, + {21, 2}, }; static arc arcs_29_2[1] = { - {15, 3}, + {14, 3}, }; -static arc arcs_29_3[2] = { - {69, 4}, - {70, 5}, +static arc arcs_29_3[1] = { + {15, 4}, }; -static arc arcs_29_4[1] = { - {14, 6}, +static arc arcs_29_4[2] = { + {67, 5}, + {0, 4}, }; static arc arcs_29_5[1] = { - {14, 7}, + {14, 6}, }; static arc arcs_29_6[1] = { - {15, 8}, + {15, 7}, }; static arc arcs_29_7[1] = { - {15, 9}, + {0, 7}, }; -static arc arcs_29_8[3] = { - {69, 4}, - {65, 5}, - {0, 8}, -}; -static arc arcs_29_9[1] = { - {0, 9}, -}; -static state states_29[10] = { +static state states_29[8] = { {1, arcs_29_0}, {1, arcs_29_1}, {1, arcs_29_2}, - {2, arcs_29_3}, - {1, arcs_29_4}, + {1, arcs_29_3}, + {2, arcs_29_4}, {1, arcs_29_5}, {1, arcs_29_6}, {1, arcs_29_7}, - {3, arcs_29_8}, - {1, arcs_29_9}, }; static arc arcs_30_0[1] = { - {71, 1}, + {69, 1}, }; -static arc arcs_30_1[2] = { +static arc arcs_30_1[1] = { + {39, 2}, +}; +static arc arcs_30_2[1] = { + {58, 3}, +}; +static arc arcs_30_3[1] = { + {9, 4}, +}; +static arc arcs_30_4[1] = { + {14, 5}, +}; +static arc arcs_30_5[1] = { + {15, 6}, +}; +static arc arcs_30_6[2] = { + {67, 7}, + {0, 6}, +}; +static arc arcs_30_7[1] = { + {14, 8}, +}; +static arc arcs_30_8[1] = { + {15, 9}, +}; +static arc arcs_30_9[1] = { + {0, 9}, +}; +static state states_30[10] = { + {1, arcs_30_0}, + {1, arcs_30_1}, + {1, arcs_30_2}, + {1, arcs_30_3}, + {1, arcs_30_4}, + {1, arcs_30_5}, + {2, arcs_30_6}, + {1, arcs_30_7}, + {1, arcs_30_8}, + {1, arcs_30_9}, +}; +static arc arcs_31_0[1] = { + {70, 1}, +}; +static arc arcs_31_1[1] = { + {14, 2}, +}; +static arc arcs_31_2[1] = { + {15, 3}, +}; +static arc arcs_31_3[2] = { + {71, 4}, + {72, 5}, +}; +static arc arcs_31_4[1] = { + {14, 6}, +}; +static arc arcs_31_5[1] = { + {14, 7}, +}; +static arc arcs_31_6[1] = { + {15, 8}, +}; +static arc arcs_31_7[1] = { + {15, 9}, +}; +static arc arcs_31_8[3] = { + {71, 4}, + {67, 5}, + {0, 8}, +}; +static arc arcs_31_9[1] = { + {0, 9}, +}; +static state states_31[10] = { + {1, arcs_31_0}, + {1, arcs_31_1}, + {1, arcs_31_2}, + {2, arcs_31_3}, + {1, arcs_31_4}, + {1, arcs_31_5}, + {1, arcs_31_6}, + {1, arcs_31_7}, + {3, arcs_31_8}, + {1, arcs_31_9}, +}; +static arc arcs_32_0[1] = { + {73, 1}, +}; +static arc arcs_32_1[2] = { {21, 2}, {0, 1}, }; -static arc arcs_30_2[2] = { +static arc arcs_32_2[2] = { {22, 3}, {0, 2}, }; -static arc arcs_30_3[1] = { +static arc arcs_32_3[1] = { {21, 4}, }; -static arc arcs_30_4[1] = { +static arc arcs_32_4[1] = { {0, 4}, }; -static state states_30[5] = { - {1, arcs_30_0}, - {2, arcs_30_1}, - {2, arcs_30_2}, - {1, arcs_30_3}, - {1, arcs_30_4}, +static state states_32[5] = { + {1, arcs_32_0}, + {2, arcs_32_1}, + {2, arcs_32_2}, + {1, arcs_32_3}, + {1, arcs_32_4}, }; -static arc arcs_31_0[2] = { +static arc arcs_33_0[2] = { {3, 1}, {2, 2}, }; -static arc arcs_31_1[1] = { +static arc arcs_33_1[1] = { {0, 1}, }; -static arc arcs_31_2[1] = { - {72, 3}, +static arc arcs_33_2[1] = { + {74, 3}, }; -static arc arcs_31_3[1] = { +static arc arcs_33_3[1] = { {6, 4}, }; -static arc arcs_31_4[2] = { +static arc arcs_33_4[2] = { {6, 4}, - {73, 1}, + {75, 1}, }; -static state states_31[5] = { - {2, arcs_31_0}, - {1, arcs_31_1}, - {1, arcs_31_2}, - {1, arcs_31_3}, - {2, arcs_31_4}, -}; -static arc arcs_32_0[2] = { - {74, 1}, - {76, 2}, -}; -static arc arcs_32_1[2] = { - {75, 3}, - {0, 1}, -}; -static arc arcs_32_2[1] = { - {0, 2}, -}; -static arc arcs_32_3[1] = { - {74, 1}, -}; -static state states_32[4] = { - {2, arcs_32_0}, - {2, arcs_32_1}, - {1, arcs_32_2}, - {1, arcs_32_3}, -}; -static arc arcs_33_0[1] = { - {77, 1}, -}; -static arc arcs_33_1[2] = { - {78, 0}, - {0, 1}, -}; -static state states_33[2] = { - {1, arcs_33_0}, - {2, arcs_33_1}, +static state states_33[5] = { + {2, arcs_33_0}, + {1, arcs_33_1}, + {1, arcs_33_2}, + {1, arcs_33_3}, + {2, arcs_33_4}, }; static arc arcs_34_0[2] = { - {79, 1}, - {80, 2}, + {76, 1}, + {78, 2}, }; -static arc arcs_34_1[1] = { - {77, 2}, +static arc arcs_34_1[2] = { + {77, 3}, + {0, 1}, }; static arc arcs_34_2[1] = { {0, 2}, }; -static state states_34[3] = { +static arc arcs_34_3[1] = { + {76, 1}, +}; +static state states_34[4] = { {2, arcs_34_0}, - {1, arcs_34_1}, + {2, arcs_34_1}, {1, arcs_34_2}, + {1, arcs_34_3}, }; static arc arcs_35_0[1] = { - {55, 1}, + {79, 1}, }; static arc arcs_35_1[2] = { - {81, 0}, + {80, 0}, {0, 1}, }; static state states_35[2] = { {1, arcs_35_0}, {2, arcs_35_1}, }; -static arc arcs_36_0[10] = { - {82, 1}, - {83, 1}, - {84, 1}, - {85, 1}, - {86, 1}, - {87, 1}, - {88, 1}, - {56, 1}, - {79, 2}, - {89, 3}, +static arc arcs_36_0[2] = { + {81, 1}, + {82, 2}, }; static arc arcs_36_1[1] = { - {0, 1}, + {79, 2}, }; static arc arcs_36_2[1] = { - {56, 1}, + {0, 2}, }; -static arc arcs_36_3[2] = { - {79, 1}, - {0, 3}, -}; -static state states_36[4] = { - {10, arcs_36_0}, +static state states_36[3] = { + {2, arcs_36_0}, {1, arcs_36_1}, {1, arcs_36_2}, - {2, arcs_36_3}, }; static arc arcs_37_0[1] = { - {90, 1}, + {57, 1}, }; static arc arcs_37_1[2] = { - {91, 0}, + {83, 0}, {0, 1}, }; static state states_37[2] = { {1, arcs_37_0}, {2, arcs_37_1}, }; -static arc arcs_38_0[1] = { - {92, 1}, +static arc arcs_38_0[10] = { + {84, 1}, + {85, 1}, + {86, 1}, + {87, 1}, + {88, 1}, + {89, 1}, + {90, 1}, + {58, 1}, + {81, 2}, + {91, 3}, }; -static arc arcs_38_1[2] = { - {93, 0}, +static arc arcs_38_1[1] = { {0, 1}, }; -static state states_38[2] = { - {1, arcs_38_0}, - {2, arcs_38_1}, +static arc arcs_38_2[1] = { + {58, 1}, +}; +static arc arcs_38_3[2] = { + {81, 1}, + {0, 3}, +}; +static state states_38[4] = { + {10, arcs_38_0}, + {1, arcs_38_1}, + {1, arcs_38_2}, + {2, arcs_38_3}, }; static arc arcs_39_0[1] = { - {94, 1}, + {92, 1}, }; static arc arcs_39_1[2] = { - {95, 0}, + {93, 0}, {0, 1}, }; static state states_39[2] = { @@ -819,640 +835,666 @@ static state states_39[2] = { {2, arcs_39_1}, }; static arc arcs_40_0[1] = { - {96, 1}, + {94, 1}, }; -static arc arcs_40_1[3] = { - {97, 0}, - {98, 0}, +static arc arcs_40_1[2] = { + {95, 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] = { - {99, 1}, + {96, 1}, }; -static arc arcs_41_1[3] = { - {100, 0}, - {101, 0}, +static arc arcs_41_1[2] = { + {97, 0}, {0, 1}, }; static state states_41[2] = { {1, arcs_41_0}, - {3, arcs_41_1}, + {2, arcs_41_1}, }; static arc arcs_42_0[1] = { - {102, 1}, + {98, 1}, }; -static arc arcs_42_1[4] = { - {23, 0}, - {103, 0}, - {104, 0}, +static arc arcs_42_1[3] = { + {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] = { - {100, 1}, +static arc arcs_43_0[1] = { {101, 1}, - {105, 1}, - {106, 2}, }; -static arc arcs_43_1[1] = { - {102, 2}, -}; -static arc arcs_43_2[1] = { - {0, 2}, -}; -static state states_43[3] = { - {4, arcs_43_0}, - {1, arcs_43_1}, - {1, arcs_43_2}, -}; -static arc arcs_44_0[1] = { - {107, 1}, -}; -static arc arcs_44_1[3] = { - {108, 1}, - {24, 2}, +static arc arcs_43_1[3] = { + {102, 0}, + {103, 0}, {0, 1}, }; -static arc arcs_44_2[1] = { - {102, 3}, +static state states_43[2] = { + {1, arcs_43_0}, + {3, arcs_43_1}, }; -static arc arcs_44_3[2] = { - {24, 2}, - {0, 3}, +static arc arcs_44_0[1] = { + {104, 1}, }; -static state states_44[4] = { +static arc arcs_44_1[4] = { + {23, 0}, + {105, 0}, + {106, 0}, + {0, 1}, +}; +static state states_44[2] = { {1, arcs_44_0}, - {3, arcs_44_1}, - {1, arcs_44_2}, - {2, arcs_44_3}, + {4, arcs_44_1}, }; -static arc arcs_45_0[7] = { - {16, 1}, - {109, 2}, - {112, 3}, - {115, 4}, - {12, 5}, - {116, 5}, - {117, 6}, +static arc arcs_45_0[4] = { + {102, 1}, + {103, 1}, + {107, 1}, + {108, 2}, }; -static arc arcs_45_1[2] = { - {9, 7}, - {18, 5}, +static arc arcs_45_1[1] = { + {104, 2}, }; -static arc arcs_45_2[2] = { - {110, 8}, - {111, 5}, +static arc arcs_45_2[1] = { + {0, 2}, }; -static arc arcs_45_3[2] = { - {113, 9}, - {114, 5}, -}; -static arc arcs_45_4[1] = { - {9, 10}, -}; -static arc arcs_45_5[1] = { - {0, 5}, -}; -static arc arcs_45_6[2] = { - {117, 6}, - {0, 6}, -}; -static arc arcs_45_7[1] = { - {18, 5}, -}; -static arc arcs_45_8[1] = { - {111, 5}, -}; -static arc arcs_45_9[1] = { - {114, 5}, -}; -static arc arcs_45_10[1] = { - {115, 5}, -}; -static state states_45[11] = { - {7, arcs_45_0}, - {2, arcs_45_1}, - {2, arcs_45_2}, - {2, arcs_45_3}, - {1, arcs_45_4}, - {1, arcs_45_5}, - {2, arcs_45_6}, - {1, arcs_45_7}, - {1, arcs_45_8}, - {1, arcs_45_9}, - {1, arcs_45_10}, +static state states_45[3] = { + {4, arcs_45_0}, + {1, arcs_45_1}, + {1, arcs_45_2}, }; static arc arcs_46_0[1] = { - {21, 1}, + {109, 1}, }; static arc arcs_46_1[3] = { - {118, 2}, - {22, 3}, + {110, 1}, + {24, 2}, {0, 1}, }; static arc arcs_46_2[1] = { - {0, 2}, + {104, 3}, }; static arc arcs_46_3[2] = { - {21, 4}, + {24, 2}, {0, 3}, }; -static arc arcs_46_4[2] = { - {22, 3}, - {0, 4}, -}; -static state states_46[5] = { +static state states_46[4] = { {1, arcs_46_0}, {3, arcs_46_1}, {1, arcs_46_2}, {2, arcs_46_3}, - {2, arcs_46_4}, }; -static arc arcs_47_0[1] = { - {119, 1}, +static arc arcs_47_0[7] = { + {16, 1}, + {111, 2}, + {114, 3}, + {117, 4}, + {12, 5}, + {118, 5}, + {119, 6}, }; static arc arcs_47_1[2] = { + {9, 7}, + {18, 5}, +}; +static arc arcs_47_2[2] = { + {112, 8}, + {113, 5}, +}; +static arc arcs_47_3[2] = { + {115, 9}, + {116, 5}, +}; +static arc arcs_47_4[1] = { + {9, 10}, +}; +static arc arcs_47_5[1] = { + {0, 5}, +}; +static arc arcs_47_6[2] = { + {119, 6}, + {0, 6}, +}; +static arc arcs_47_7[1] = { + {18, 5}, +}; +static arc arcs_47_8[1] = { + {113, 5}, +}; +static arc arcs_47_9[1] = { + {116, 5}, +}; +static arc arcs_47_10[1] = { + {117, 5}, +}; +static state states_47[11] = { + {7, arcs_47_0}, + {2, arcs_47_1}, + {2, arcs_47_2}, + {2, arcs_47_3}, + {1, arcs_47_4}, + {1, arcs_47_5}, + {2, arcs_47_6}, + {1, arcs_47_7}, + {1, arcs_47_8}, + {1, arcs_47_9}, + {1, arcs_47_10}, +}; +static arc arcs_48_0[1] = { + {21, 1}, +}; +static arc arcs_48_1[3] = { + {120, 2}, + {22, 3}, + {0, 1}, +}; +static arc arcs_48_2[1] = { + {0, 2}, +}; +static arc arcs_48_3[2] = { + {21, 4}, + {0, 3}, +}; +static arc arcs_48_4[2] = { + {22, 3}, + {0, 4}, +}; +static state states_48[5] = { + {1, arcs_48_0}, + {3, arcs_48_1}, + {1, arcs_48_2}, + {2, arcs_48_3}, + {2, arcs_48_4}, +}; +static arc arcs_49_0[1] = { + {121, 1}, +}; +static arc arcs_49_1[2] = { {17, 2}, {14, 3}, }; -static arc arcs_47_2[1] = { +static arc arcs_49_2[1] = { {14, 3}, }; -static arc arcs_47_3[1] = { +static arc arcs_49_3[1] = { {21, 4}, }; -static arc arcs_47_4[1] = { +static arc arcs_49_4[1] = { {0, 4}, }; -static state states_47[5] = { - {1, arcs_47_0}, - {2, arcs_47_1}, - {1, arcs_47_2}, - {1, arcs_47_3}, - {1, arcs_47_4}, -}; -static arc arcs_48_0[3] = { - {16, 1}, - {109, 2}, - {52, 3}, -}; -static arc arcs_48_1[2] = { - {120, 4}, - {18, 5}, -}; -static arc arcs_48_2[1] = { - {121, 6}, -}; -static arc arcs_48_3[1] = { - {12, 5}, -}; -static arc arcs_48_4[1] = { - {18, 5}, -}; -static arc arcs_48_5[1] = { - {0, 5}, -}; -static arc arcs_48_6[1] = { - {111, 5}, -}; -static state states_48[7] = { - {3, arcs_48_0}, - {2, arcs_48_1}, - {1, arcs_48_2}, - {1, arcs_48_3}, - {1, arcs_48_4}, - {1, arcs_48_5}, - {1, arcs_48_6}, -}; -static arc arcs_49_0[1] = { - {122, 1}, -}; -static arc arcs_49_1[2] = { - {22, 2}, - {0, 1}, -}; -static arc arcs_49_2[2] = { - {122, 1}, - {0, 2}, -}; -static state states_49[3] = { +static state states_49[5] = { {1, arcs_49_0}, {2, arcs_49_1}, - {2, arcs_49_2}, + {1, arcs_49_2}, + {1, arcs_49_3}, + {1, arcs_49_4}, }; static arc arcs_50_0[3] = { - {52, 1}, - {21, 2}, - {14, 3}, + {16, 1}, + {111, 2}, + {54, 3}, }; -static arc arcs_50_1[1] = { - {52, 4}, +static arc arcs_50_1[2] = { + {122, 4}, + {18, 5}, }; -static arc arcs_50_2[2] = { - {14, 3}, - {0, 2}, -}; -static arc arcs_50_3[3] = { - {21, 5}, +static arc arcs_50_2[1] = { {123, 6}, - {0, 3}, +}; +static arc arcs_50_3[1] = { + {12, 5}, }; static arc arcs_50_4[1] = { - {52, 6}, + {18, 5}, }; -static arc arcs_50_5[2] = { - {123, 6}, +static arc arcs_50_5[1] = { {0, 5}, }; static arc arcs_50_6[1] = { - {0, 6}, + {113, 5}, }; static state states_50[7] = { {3, arcs_50_0}, - {1, arcs_50_1}, - {2, arcs_50_2}, - {3, arcs_50_3}, + {2, arcs_50_1}, + {1, arcs_50_2}, + {1, arcs_50_3}, {1, arcs_50_4}, - {2, arcs_50_5}, + {1, arcs_50_5}, {1, arcs_50_6}, }; static arc arcs_51_0[1] = { - {14, 1}, + {124, 1}, }; static arc arcs_51_1[2] = { - {21, 2}, + {22, 2}, {0, 1}, }; -static arc arcs_51_2[1] = { +static arc arcs_51_2[2] = { + {124, 1}, {0, 2}, }; static state states_51[3] = { {1, arcs_51_0}, {2, arcs_51_1}, - {1, arcs_51_2}, + {2, arcs_51_2}, }; -static arc arcs_52_0[1] = { - {55, 1}, +static arc arcs_52_0[3] = { + {54, 1}, + {21, 2}, + {14, 3}, }; -static arc arcs_52_1[2] = { - {22, 2}, - {0, 1}, +static arc arcs_52_1[1] = { + {54, 4}, }; static arc arcs_52_2[2] = { - {55, 1}, + {14, 3}, {0, 2}, }; -static state states_52[3] = { - {1, arcs_52_0}, - {2, arcs_52_1}, +static arc arcs_52_3[3] = { + {21, 5}, + {125, 6}, + {0, 3}, +}; +static arc arcs_52_4[1] = { + {54, 6}, +}; +static arc arcs_52_5[2] = { + {125, 6}, + {0, 5}, +}; +static arc arcs_52_6[1] = { + {0, 6}, +}; +static state states_52[7] = { + {3, arcs_52_0}, + {1, arcs_52_1}, {2, arcs_52_2}, + {3, arcs_52_3}, + {1, arcs_52_4}, + {2, arcs_52_5}, + {1, arcs_52_6}, }; static arc arcs_53_0[1] = { - {21, 1}, + {14, 1}, }; static arc arcs_53_1[2] = { - {22, 2}, + {21, 2}, {0, 1}, }; -static arc arcs_53_2[2] = { - {21, 1}, +static arc arcs_53_2[1] = { {0, 2}, }; static state states_53[3] = { {1, arcs_53_0}, {2, arcs_53_1}, - {2, arcs_53_2}, + {1, arcs_53_2}, }; static arc arcs_54_0[1] = { + {57, 1}, +}; +static arc arcs_54_1[2] = { + {22, 2}, + {0, 1}, +}; +static arc arcs_54_2[2] = { + {57, 1}, + {0, 2}, +}; +static state states_54[3] = { + {1, arcs_54_0}, + {2, arcs_54_1}, + {2, arcs_54_2}, +}; +static arc arcs_55_0[1] = { {21, 1}, }; -static arc arcs_54_1[1] = { +static arc arcs_55_1[2] = { + {22, 2}, + {0, 1}, +}; +static arc arcs_55_2[2] = { + {21, 1}, + {0, 2}, +}; +static state states_55[3] = { + {1, arcs_55_0}, + {2, arcs_55_1}, + {2, arcs_55_2}, +}; +static arc arcs_56_0[1] = { + {21, 1}, +}; +static arc arcs_56_1[1] = { {14, 2}, }; -static arc arcs_54_2[1] = { +static arc arcs_56_2[1] = { {21, 3}, }; -static arc arcs_54_3[2] = { +static arc arcs_56_3[2] = { {22, 4}, {0, 3}, }; -static arc arcs_54_4[2] = { +static arc arcs_56_4[2] = { {21, 1}, {0, 4}, }; -static state states_54[5] = { - {1, arcs_54_0}, - {1, arcs_54_1}, - {1, arcs_54_2}, - {2, arcs_54_3}, - {2, arcs_54_4}, +static state states_56[5] = { + {1, arcs_56_0}, + {1, arcs_56_1}, + {1, arcs_56_2}, + {2, arcs_56_3}, + {2, arcs_56_4}, }; -static arc arcs_55_0[1] = { - {124, 1}, +static arc arcs_57_0[1] = { + {126, 1}, }; -static arc arcs_55_1[1] = { +static arc arcs_57_1[1] = { {12, 2}, }; -static arc arcs_55_2[2] = { +static arc arcs_57_2[2] = { {16, 3}, {14, 4}, }; -static arc arcs_55_3[1] = { +static arc arcs_57_3[1] = { {9, 5}, }; -static arc arcs_55_4[1] = { +static arc arcs_57_4[1] = { {15, 6}, }; -static arc arcs_55_5[1] = { +static arc arcs_57_5[1] = { {18, 7}, }; -static arc arcs_55_6[1] = { +static arc arcs_57_6[1] = { {0, 6}, }; -static arc arcs_55_7[1] = { +static arc arcs_57_7[1] = { {14, 4}, }; -static state states_55[8] = { - {1, arcs_55_0}, - {1, arcs_55_1}, - {2, arcs_55_2}, - {1, arcs_55_3}, - {1, arcs_55_4}, - {1, arcs_55_5}, - {1, arcs_55_6}, - {1, arcs_55_7}, +static state states_57[8] = { + {1, arcs_57_0}, + {1, arcs_57_1}, + {2, arcs_57_2}, + {1, arcs_57_3}, + {1, arcs_57_4}, + {1, arcs_57_5}, + {1, arcs_57_6}, + {1, arcs_57_7}, }; -static arc arcs_56_0[3] = { - {125, 1}, +static arc arcs_58_0[3] = { + {127, 1}, {23, 2}, {24, 3}, }; -static arc arcs_56_1[2] = { +static arc arcs_58_1[2] = { {22, 4}, {0, 1}, }; -static arc arcs_56_2[1] = { +static arc arcs_58_2[1] = { {21, 5}, }; -static arc arcs_56_3[1] = { +static arc arcs_58_3[1] = { {21, 6}, }; -static arc arcs_56_4[4] = { - {125, 1}, +static arc arcs_58_4[4] = { + {127, 1}, {23, 2}, {24, 3}, {0, 4}, }; -static arc arcs_56_5[2] = { +static arc arcs_58_5[2] = { {22, 7}, {0, 5}, }; -static arc arcs_56_6[1] = { +static arc arcs_58_6[1] = { {0, 6}, }; -static arc arcs_56_7[1] = { +static arc arcs_58_7[1] = { {24, 3}, }; -static state states_56[8] = { - {3, arcs_56_0}, - {2, arcs_56_1}, - {1, arcs_56_2}, - {1, arcs_56_3}, - {4, arcs_56_4}, - {2, arcs_56_5}, - {1, arcs_56_6}, - {1, arcs_56_7}, +static state states_58[8] = { + {3, arcs_58_0}, + {2, arcs_58_1}, + {1, arcs_58_2}, + {1, arcs_58_3}, + {4, arcs_58_4}, + {2, arcs_58_5}, + {1, arcs_58_6}, + {1, arcs_58_7}, }; -static arc arcs_57_0[1] = { +static arc arcs_59_0[1] = { {21, 1}, }; -static arc arcs_57_1[2] = { +static arc arcs_59_1[2] = { {20, 2}, {0, 1}, }; -static arc arcs_57_2[1] = { +static arc arcs_59_2[1] = { {21, 3}, }; -static arc arcs_57_3[1] = { +static arc arcs_59_3[1] = { {0, 3}, }; -static state states_57[4] = { - {1, arcs_57_0}, - {2, arcs_57_1}, - {1, arcs_57_2}, - {1, arcs_57_3}, -}; -static arc arcs_58_0[2] = { - {126, 1}, - {127, 1}, -}; -static arc arcs_58_1[1] = { - {0, 1}, -}; -static state states_58[2] = { - {2, arcs_58_0}, - {1, arcs_58_1}, -}; -static arc arcs_59_0[1] = { - {67, 1}, -}; -static arc arcs_59_1[1] = { - {39, 2}, -}; -static arc arcs_59_2[1] = { - {56, 3}, -}; -static arc arcs_59_3[1] = { - {9, 4}, -}; -static arc arcs_59_4[2] = { - {118, 5}, - {0, 4}, -}; -static arc arcs_59_5[1] = { - {0, 5}, -}; -static state states_59[6] = { +static state states_59[4] = { {1, arcs_59_0}, - {1, arcs_59_1}, + {2, arcs_59_1}, {1, arcs_59_2}, {1, arcs_59_3}, - {2, arcs_59_4}, - {1, arcs_59_5}, }; -static arc arcs_60_0[1] = { - {63, 1}, +static arc arcs_60_0[2] = { + {128, 1}, + {129, 1}, }; static arc arcs_60_1[1] = { + {0, 1}, +}; +static state states_60[2] = { + {2, arcs_60_0}, + {1, arcs_60_1}, +}; +static arc arcs_61_0[1] = { + {69, 1}, +}; +static arc arcs_61_1[1] = { + {39, 2}, +}; +static arc arcs_61_2[1] = { + {58, 3}, +}; +static arc arcs_61_3[1] = { + {9, 4}, +}; +static arc arcs_61_4[2] = { + {120, 5}, + {0, 4}, +}; +static arc arcs_61_5[1] = { + {0, 5}, +}; +static state states_61[6] = { + {1, arcs_61_0}, + {1, arcs_61_1}, + {1, arcs_61_2}, + {1, arcs_61_3}, + {2, arcs_61_4}, + {1, arcs_61_5}, +}; +static arc arcs_62_0[1] = { + {65, 1}, +}; +static arc arcs_62_1[1] = { {21, 2}, }; -static arc arcs_60_2[2] = { - {118, 3}, +static arc arcs_62_2[2] = { + {120, 3}, {0, 2}, }; -static arc arcs_60_3[1] = { +static arc arcs_62_3[1] = { {0, 3}, }; -static state states_60[4] = { - {1, arcs_60_0}, - {1, arcs_60_1}, - {2, arcs_60_2}, - {1, arcs_60_3}, +static state states_62[4] = { + {1, arcs_62_0}, + {1, arcs_62_1}, + {2, arcs_62_2}, + {1, arcs_62_3}, }; -static dfa dfas[61] = { +static dfa dfas[63] = { {256, "single_input", 0, 3, states_0, - "\004\030\001\000\140\341\153\202\034\200\000\000\060\042\271\020"}, + "\004\030\001\000\140\341\213\011\162\000\002\000\300\210\344\102\000"}, {257, "file_input", 0, 2, states_1, - "\204\030\001\000\140\341\153\202\034\200\000\000\060\042\271\020"}, + "\204\030\001\000\140\341\213\011\162\000\002\000\300\210\344\102\000"}, {258, "eval_input", 0, 3, states_2, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\271\000"}, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\002\000"}, {259, "funcdef", 0, 6, states_3, - "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "parameters", 0, 4, states_4, - "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {261, "varargslist", 0, 10, states_5, - "\000\020\201\001\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\201\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {262, "fpdef", 0, 4, states_6, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {263, "fplist", 0, 3, states_7, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {264, "stmt", 0, 2, states_8, - "\000\030\001\000\140\341\153\202\034\200\000\000\060\042\271\020"}, + "\000\030\001\000\140\341\213\011\162\000\002\000\300\210\344\102\000"}, {265, "simple_stmt", 0, 4, states_9, - "\000\020\001\000\140\341\153\002\000\200\000\000\060\042\271\000"}, + "\000\020\001\000\140\341\213\011\000\000\002\000\300\210\344\002\000"}, {266, "small_stmt", 0, 2, states_10, - "\000\020\001\000\140\341\153\002\000\200\000\000\060\042\271\000"}, + "\000\020\001\000\140\341\213\011\000\000\002\000\300\210\344\002\000"}, {267, "expr_stmt", 0, 2, states_11, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\271\000"}, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\002\000"}, {268, "print_stmt", 0, 3, states_12, - "\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"}, {269, "del_stmt", 0, 3, states_13, - "\000\000\000\000\100\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"}, {270, "pass_stmt", 0, 2, states_14, - "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"}, {271, "flow_stmt", 0, 2, states_15, - "\000\000\000\000\000\340\001\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\340\001\000\000\000\000\000\000\000\000\000\000"}, {272, "break_stmt", 0, 2, states_16, - "\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000"}, {273, "continue_stmt", 0, 2, states_17, - "\000\000\000\000\000\100\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"}, {274, "return_stmt", 0, 3, states_18, - "\000\000\000\000\000\200\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"}, {275, "raise_stmt", 0, 7, states_19, - "\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"}, {276, "import_stmt", 0, 9, states_20, - "\000\000\000\000\000\000\012\000\000\000\000\000\000\000\000\000"}, - {277, "dotted_name", 0, 2, states_21, - "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {278, "global_stmt", 0, 3, states_22, - "\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"}, - {279, "exec_stmt", 0, 7, states_23, - "\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, - {280, "assert_stmt", 0, 5, states_24, - "\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, - {281, "compound_stmt", 0, 2, states_25, - "\000\010\000\000\000\000\000\200\034\000\000\000\000\000\000\020"}, - {282, "if_stmt", 0, 8, states_26, - "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000"}, - {283, "while_stmt", 0, 8, states_27, - "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000"}, - {284, "for_stmt", 0, 10, states_28, - "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000"}, - {285, "try_stmt", 0, 10, states_29, - "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, - {286, "except_clause", 0, 5, states_30, - "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000"}, - {287, "suite", 0, 5, states_31, - "\004\020\001\000\140\341\153\002\000\200\000\000\060\042\271\000"}, - {288, "test", 0, 4, states_32, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\271\000"}, - {289, "and_test", 0, 2, states_33, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\071\000"}, - {290, "not_test", 0, 3, states_34, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\071\000"}, - {291, "comparison", 0, 2, states_35, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {292, "comp_op", 0, 4, states_36, - "\000\000\000\000\000\000\000\001\000\200\374\003\000\000\000\000"}, - {293, "expr", 0, 2, states_37, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {294, "xor_expr", 0, 2, states_38, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {295, "and_expr", 0, 2, states_39, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {296, "shift_expr", 0, 2, states_40, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {297, "arith_expr", 0, 2, states_41, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {298, "term", 0, 2, states_42, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {299, "factor", 0, 3, states_43, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {300, "power", 0, 4, states_44, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\040\071\000"}, - {301, "atom", 0, 11, states_45, - "\000\020\001\000\000\000\000\000\000\000\000\000\000\040\071\000"}, - {302, "listmaker", 0, 5, states_46, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\271\000"}, - {303, "lambdef", 0, 5, states_47, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000"}, - {304, "trailer", 0, 7, states_48, - "\000\000\001\000\000\000\020\000\000\000\000\000\000\040\000\000"}, - {305, "subscriptlist", 0, 3, states_49, - "\000\120\001\000\000\000\020\000\000\200\000\000\060\042\271\000"}, - {306, "subscript", 0, 7, states_50, - "\000\120\001\000\000\000\020\000\000\200\000\000\060\042\271\000"}, - {307, "sliceop", 0, 3, states_51, - "\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {308, "exprlist", 0, 3, states_52, - "\000\020\001\000\000\000\000\000\000\000\000\000\060\042\071\000"}, - {309, "testlist", 0, 3, states_53, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\271\000"}, - {310, "dictmaker", 0, 5, states_54, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\271\000"}, - {311, "classdef", 0, 8, states_55, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020"}, - {312, "arglist", 0, 8, states_56, - "\000\020\201\001\000\000\000\000\000\200\000\000\060\042\271\000"}, - {313, "argument", 0, 4, states_57, - "\000\020\001\000\000\000\000\000\000\200\000\000\060\042\271\000"}, - {314, "list_iter", 0, 2, states_58, - "\000\000\000\000\000\000\000\200\010\000\000\000\000\000\000\000"}, - {315, "list_for", 0, 6, states_59, - "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000"}, - {316, "list_if", 0, 4, states_60, - "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\012\000\000\000\000\000\000\000\000\000\000"}, + {277, "import_as_name", 0, 4, states_21, + "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {278, "dotted_as_name", 0, 4, states_22, + "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {279, "dotted_name", 0, 2, states_23, + "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {280, "global_stmt", 0, 3, states_24, + "\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, + {281, "exec_stmt", 0, 7, states_25, + "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {282, "assert_stmt", 0, 5, states_26, + "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, + {283, "compound_stmt", 0, 2, states_27, + "\000\010\000\000\000\000\000\000\162\000\000\000\000\000\000\100\000"}, + {284, "if_stmt", 0, 8, states_28, + "\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, + {285, "while_stmt", 0, 8, states_29, + "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"}, + {286, "for_stmt", 0, 10, states_30, + "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {287, "try_stmt", 0, 10, states_31, + "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000"}, + {288, "except_clause", 0, 5, states_32, + "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"}, + {289, "suite", 0, 5, states_33, + "\004\020\001\000\140\341\213\011\000\000\002\000\300\210\344\002\000"}, + {290, "test", 0, 4, states_34, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\002\000"}, + {291, "and_test", 0, 2, states_35, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\000\000"}, + {292, "not_test", 0, 3, states_36, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\000\000"}, + {293, "comparison", 0, 2, states_37, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {294, "comp_op", 0, 4, states_38, + "\000\000\000\000\000\000\000\004\000\000\362\017\000\000\000\000\000"}, + {295, "expr", 0, 2, states_39, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {296, "xor_expr", 0, 2, states_40, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {297, "and_expr", 0, 2, states_41, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {298, "shift_expr", 0, 2, states_42, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {299, "arith_expr", 0, 2, states_43, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {300, "term", 0, 2, states_44, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {301, "factor", 0, 3, states_45, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {302, "power", 0, 4, states_46, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\200\344\000\000"}, + {303, "atom", 0, 11, states_47, + "\000\020\001\000\000\000\000\000\000\000\000\000\000\200\344\000\000"}, + {304, "listmaker", 0, 5, states_48, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\002\000"}, + {305, "lambdef", 0, 5, states_49, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000"}, + {306, "trailer", 0, 7, states_50, + "\000\000\001\000\000\000\100\000\000\000\000\000\000\200\000\000\000"}, + {307, "subscriptlist", 0, 3, states_51, + "\000\120\001\000\000\000\100\000\000\000\002\000\300\210\344\002\000"}, + {308, "subscript", 0, 7, states_52, + "\000\120\001\000\000\000\100\000\000\000\002\000\300\210\344\002\000"}, + {309, "sliceop", 0, 3, states_53, + "\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {310, "exprlist", 0, 3, states_54, + "\000\020\001\000\000\000\000\000\000\000\000\000\300\210\344\000\000"}, + {311, "testlist", 0, 3, states_55, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\002\000"}, + {312, "dictmaker", 0, 5, states_56, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\002\000"}, + {313, "classdef", 0, 8, states_57, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\100\000"}, + {314, "arglist", 0, 8, states_58, + "\000\020\201\001\000\000\000\000\000\000\002\000\300\210\344\002\000"}, + {315, "argument", 0, 4, states_59, + "\000\020\001\000\000\000\000\000\000\000\002\000\300\210\344\002\000"}, + {316, "list_iter", 0, 2, states_60, + "\000\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000"}, + {317, "list_for", 0, 6, states_61, + "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, + {318, "list_if", 0, 4, states_62, + "\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, }; -static label labels[128] = { +static label labels[130] = { {0, "EMPTY"}, {256, 0}, {4, 0}, {265, 0}, - {281, 0}, + {283, 0}, {257, 0}, {264, 0}, {0, 0}, {258, 0}, - {309, 0}, + {311, 0}, {259, 0}, {1, "def"}, {1, 0}, {260, 0}, {11, 0}, - {287, 0}, + {289, 0}, {7, 0}, {261, 0}, {8, 0}, {262, 0}, {22, 0}, - {288, 0}, + {290, 0}, {12, 0}, {16, 0}, {36, 0}, @@ -1465,12 +1507,12 @@ static label labels[128] = { {270, 0}, {271, 0}, {276, 0}, - {278, 0}, - {279, 0}, {280, 0}, + {281, 0}, + {282, 0}, {1, "print"}, {1, "del"}, - {308, 0}, + {310, 0}, {1, "pass"}, {272, 0}, {273, 0}, @@ -1481,38 +1523,40 @@ static label labels[128] = { {1, "return"}, {1, "raise"}, {1, "import"}, - {277, 0}, + {278, 0}, {1, "from"}, + {279, 0}, + {277, 0}, {23, 0}, {1, "global"}, {1, "exec"}, - {293, 0}, + {295, 0}, {1, "in"}, {1, "assert"}, - {282, 0}, - {283, 0}, {284, 0}, {285, 0}, - {311, 0}, + {286, 0}, + {287, 0}, + {313, 0}, {1, "if"}, {1, "elif"}, {1, "else"}, {1, "while"}, {1, "for"}, {1, "try"}, - {286, 0}, + {288, 0}, {1, "finally"}, {1, "except"}, {5, 0}, {6, 0}, - {289, 0}, + {291, 0}, {1, "or"}, - {303, 0}, - {290, 0}, + {305, 0}, + {292, 0}, {1, "and"}, {1, "not"}, - {291, 0}, - {292, 0}, + {293, 0}, + {294, 0}, {20, 0}, {21, 0}, {28, 0}, @@ -1521,48 +1565,48 @@ static label labels[128] = { {29, 0}, {29, 0}, {1, "is"}, - {294, 0}, - {18, 0}, - {295, 0}, - {33, 0}, {296, 0}, - {19, 0}, + {18, 0}, {297, 0}, + {33, 0}, + {298, 0}, + {19, 0}, + {299, 0}, {34, 0}, {35, 0}, - {298, 0}, + {300, 0}, {14, 0}, {15, 0}, - {299, 0}, + {301, 0}, {17, 0}, {24, 0}, {32, 0}, - {300, 0}, - {301, 0}, - {304, 0}, - {9, 0}, {302, 0}, + {303, 0}, + {306, 0}, + {9, 0}, + {304, 0}, {10, 0}, {26, 0}, - {310, 0}, + {312, 0}, {27, 0}, {25, 0}, {2, 0}, {3, 0}, - {314, 0}, - {1, "lambda"}, - {312, 0}, - {305, 0}, - {306, 0}, - {307, 0}, - {1, "class"}, - {313, 0}, - {315, 0}, {316, 0}, + {1, "lambda"}, + {314, 0}, + {307, 0}, + {308, 0}, + {309, 0}, + {1, "class"}, + {315, 0}, + {317, 0}, + {318, 0}, }; grammar _PyParser_Grammar = { - 61, + 63, dfas, - {128, labels}, + {130, labels}, 256 }; diff --git a/Python/import.c b/Python/import.c index 9b3094287e6..00250e98b67 100644 --- a/Python/import.c +++ b/Python/import.c @@ -66,7 +66,7 @@ extern time_t PyOS_GetLastModificationTime(char *, FILE *); /* XXX Perhaps the magic number should be frozen and a version field added to the .pyc file header? */ /* New way to come up with the magic number: (YEAR-1995), MONTH, DAY */ -#define MAGIC (50811 | ((long)'\r'<<16) | ((long)'\n'<<24)) +#define MAGIC (50815 | ((long)'\r'<<16) | ((long)'\n'<<24)) /* Magic word as global; note that _PyImport_Init() can change the value of this global to accommodate for alterations of how the