Index: Grammar/Grammar =================================================================== RCS file: /cvsroot/python/python/dist/src/Grammar/Grammar,v retrieving revision 1.42.6.1 diff -c -r1.42.6.1 Grammar *** Grammar/Grammar 2001/07/07 22:55:27 1.42.6.1 --- Grammar/Grammar 2001/07/31 19:28:29 *************** *** 38,44 **** simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | exec_stmt | assert_stmt expr_stmt: testlist (augassign testlist | ('=' testlist)*) ! augassign: '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' # For normal assignments, additional restrictions enforced by the interpreter print_stmt: 'print' ( [ test (',' test)* [','] ] | '>>' test [ (',' test)+ [','] ] ) del_stmt: 'del' exprlist --- 38,44 ---- simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE small_stmt: expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | import_stmt | global_stmt | exec_stmt | assert_stmt expr_stmt: testlist (augassign testlist | ('=' testlist)*) ! augassign: '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' | '//=' # For normal assignments, additional restrictions enforced by the interpreter print_stmt: 'print' ( [ test (',' test)* [','] ] | '>>' test [ (',' test)+ [','] ] ) del_stmt: 'del' exprlist *************** *** 77,83 **** and_expr: shift_expr ('&' shift_expr)* shift_expr: arith_expr (('<<'|'>>') arith_expr)* arith_expr: term (('+'|'-') term)* ! term: factor (('*'|'/'|'%') factor)* factor: ('+'|'-'|'~') factor | power power: atom trailer* ('**' factor)* atom: '(' [testlist] ')' | '[' [listmaker] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING+ --- 77,83 ---- and_expr: shift_expr ('&' shift_expr)* shift_expr: arith_expr (('<<'|'>>') arith_expr)* arith_expr: term (('+'|'-') term)* ! term: factor (('*'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power power: atom trailer* ('**' factor)* atom: '(' [testlist] ')' | '[' [listmaker] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING+ Index: Include/abstract.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/abstract.h,v retrieving revision 2.31.2.2 diff -c -r2.31.2.2 abstract.h *** Include/abstract.h 2001/07/07 22:55:27 2.31.2.2 --- Include/abstract.h 2001/07/31 19:28:32 *************** *** 547,552 **** --- 547,572 ---- */ + DL_IMPORT(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving an integral result, + or null on failure. + This is the equivalent of the Python expression: o1//o2. + + + */ + + DL_IMPORT(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving a float result, + or null on failure. + This is the equivalent of the Python expression: o1/o2. + + + */ + DL_IMPORT(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2); /* *************** *** 738,743 **** --- 758,785 ---- /* Returns the result of dividing o1 by o2, possibly in-place, or null on failure. This is the equivalent of the Python expression: + o1 /= o2. + + */ + + DL_IMPORT(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1, + PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving an integral result, + possibly in-place, or null on failure. + This is the equivalent of the Python expression: + o1 /= o2. + + */ + + DL_IMPORT(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1, + PyObject *o2); + + /* + Returns the result of dividing o1 by o2 giving a float result, + possibly in-place, or null on failure. + This is the equivalent of the Python expression: o1 /= o2. */ Index: Include/compile.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/compile.h,v retrieving revision 2.29.4.3 diff -c -r2.29.4.3 compile.h *** Include/compile.h 2001/07/16 21:38:09 2.29.4.3 --- Include/compile.h 2001/07/31 19:28:32 *************** *** 41,46 **** --- 41,48 ---- effect, this passes on the "from __future__ import generators" state in effect when the code block was compiled. */ #define CO_GENERATOR_ALLOWED 0x1000 + /* XXX Ditto for future division */ + #define CO_FUTURE_DIVISION 0x2000 extern DL_IMPORT(PyTypeObject) PyCode_Type; *************** *** 64,69 **** --- 66,72 ---- int ff_last_lineno; int ff_nested_scopes; int ff_generators; + int ff_division; } PyFutureFeatures; DL_IMPORT(PyFutureFeatures *) PyNode_Future(struct _node *, char *); *************** *** 75,80 **** --- 78,86 ---- #define GENERATORS_DEFAULT 0 #define FUTURE_GENERATORS "generators" + + #define DIVISION_DEFAULT 0 + #define FUTURE_DIVISION "division" /* for internal use only */ #define _PyCode_GETCODEPTR(co, pp) \ Index: Include/object.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/object.h,v retrieving revision 2.79.2.23 diff -c -r2.79.2.23 object.h *** Include/object.h 2001/07/03 00:48:14 2.79.2.23 --- Include/object.h 2001/07/31 19:28:33 *************** *** 161,166 **** --- 161,172 ---- binaryfunc nb_inplace_and; binaryfunc nb_inplace_xor; binaryfunc nb_inplace_or; + + /* The following require the Py_TPFLAGS_HAVE_CLASS flag */ + binaryfunc nb_floor_divide; + binaryfunc nb_true_divide; + binaryfunc nb_inplace_floor_divide; + binaryfunc nb_inplace_true_divide; } PyNumberMethods; typedef struct { *************** *** 396,402 **** /* tp_iter is defined */ #define Py_TPFLAGS_HAVE_ITER (1L<<7) ! /* Experimental stuff for healing the type/class split */ #define Py_TPFLAGS_HAVE_CLASS (1L<<8) /* Set if the type object is dynamically allocated */ --- 402,408 ---- /* tp_iter is defined */ #define Py_TPFLAGS_HAVE_ITER (1L<<7) ! /* New members introduced by Python 2.2 exist */ #define Py_TPFLAGS_HAVE_CLASS (1L<<8) /* Set if the type object is dynamically allocated */ Index: Include/opcode.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/opcode.h,v retrieving revision 2.35.2.1 diff -c -r2.35.2.1 opcode.h *** Include/opcode.h 2001/07/07 22:55:27 2.35.2.1 --- Include/opcode.h 2001/07/31 19:28:33 *************** *** 29,34 **** --- 29,38 ---- #define BINARY_ADD 23 #define BINARY_SUBTRACT 24 #define BINARY_SUBSCR 25 + #define BINARY_FLOOR_DIVIDE 26 + #define BINARY_TRUE_DIVIDE 27 + #define INPLACE_FLOOR_DIVIDE 28 + #define INPLACE_TRUE_DIVIDE 29 #define SLICE 30 /* Also uses 31-33 */ Index: Include/pythonrun.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/pythonrun.h,v retrieving revision 2.41.4.2 diff -c -r2.41.4.2 pythonrun.h *** Include/pythonrun.h 2001/07/16 21:38:09 2.41.4.2 --- Include/pythonrun.h 2001/07/31 19:28:33 *************** *** 12,17 **** --- 12,18 ---- accordingly then. */ #define PyCF_NESTED_SCOPES (0x00000001UL) #define PyCF_GENERATORS (0x00000002UL) + #define PyCF_DIVISION (0x00000004UL) typedef struct { unsigned long cf_flags; /* bitmask of PyCF_xxx flags */ } PyCompilerFlags; Index: Include/token.h =================================================================== RCS file: /cvsroot/python/python/dist/src/Include/token.h,v retrieving revision 2.18 diff -c -r2.18 token.h *** Include/token.h 2000/09/01 23:29:26 2.18 --- Include/token.h 2001/07/31 19:28:33 *************** *** 55,64 **** #define LEFTSHIFTEQUAL 45 #define RIGHTSHIFTEQUAL 46 #define DOUBLESTAREQUAL 47 /* Don't forget to update the table _PyParser_TokenNames in tokenizer.c! */ ! #define OP 48 ! #define ERRORTOKEN 49 ! #define N_TOKENS 50 /* Special definitions for cooperation with parser */ --- 55,66 ---- #define LEFTSHIFTEQUAL 45 #define RIGHTSHIFTEQUAL 46 #define DOUBLESTAREQUAL 47 + #define DOUBLESLASH 48 + #define DOUBLESLASHEQUAL 49 /* Don't forget to update the table _PyParser_TokenNames in tokenizer.c! */ ! #define OP 50 ! #define ERRORTOKEN 51 ! #define N_TOKENS 52 /* Special definitions for cooperation with parser */ Index: Lib/__future__.py =================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/__future__.py,v retrieving revision 1.5.4.2 diff -c -r1.5.4.2 __future__.py *** Lib/__future__.py 2001/07/16 21:39:41 1.5.4.2 --- Lib/__future__.py 2001/07/31 19:28:33 *************** *** 68,70 **** --- 68,71 ---- nested_scopes = _Feature((2, 1, 0, "beta", 1), (2, 2, 0, "alpha", 0)) generators = _Feature((2, 2, 0, "alpha", 1), (2, 3, 0, "final", 0)) + division = _Feature((2, 2, 0, "alpha", 2), (3, 0, 0, "alpha", 0)) Index: Objects/abstract.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/abstract.c,v retrieving revision 2.60.2.5 diff -c -r2.60.2.5 abstract.c *** Objects/abstract.c 2001/07/07 22:55:30 2.60.2.5 --- Objects/abstract.c 2001/07/31 19:28:34 *************** *** 565,570 **** --- 565,584 ---- } PyObject * + PyNumber_FloorDivide(PyObject *v, PyObject *w) + { + /* XXX tp_flags test */ + return binary_op(v, w, NB_SLOT(nb_floor_divide), "//"); + } + + PyObject * + PyNumber_TrueDivide(PyObject *v, PyObject *w) + { + /* XXX tp_flags test */ + return binary_op(v, w, NB_SLOT(nb_true_divide), "/"); + } + + PyObject * PyNumber_Remainder(PyObject *v, PyObject *w) { if (PyString_Check(v)) *************** *** 629,634 **** --- 643,664 ---- INPLACE_BINOP(PyNumber_InPlaceRshift, nb_inplace_rshift, nb_rshift, ">>=") INPLACE_BINOP(PyNumber_InPlaceSubtract, nb_inplace_subtract, nb_subtract, "-=") INPLACE_BINOP(PyNumber_InPlaceDivide, nb_inplace_divide, nb_divide, "/=") + + PyObject * + PyNumber_InPlaceFloorDivide(PyObject *v, PyObject *w) + { + /* XXX tp_flags test */ + return binary_iop(v, w, NB_SLOT(nb_inplace_floor_divide), + NB_SLOT(nb_floor_divide), "//="); + } + + PyObject * + PyNumber_InPlaceTrueDivide(PyObject *v, PyObject *w) + { + /* XXX tp_flags test */ + return binary_iop(v, w, NB_SLOT(nb_inplace_true_divide), + NB_SLOT(nb_true_divide), "/="); + } PyObject * PyNumber_InPlaceAdd(PyObject *v, PyObject *w) Index: Objects/classobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/classobject.c,v retrieving revision 2.127.2.9 diff -c -r2.127.2.9 classobject.c *** Objects/classobject.c 2001/07/07 22:55:30 2.127.2.9 --- Objects/classobject.c 2001/07/31 19:28:34 *************** *** 1435,1440 **** --- 1435,1442 ---- BINARY(instance_div, "div", PyNumber_Divide) BINARY(instance_mod, "mod", PyNumber_Remainder) BINARY(instance_divmod, "divmod", PyNumber_Divmod) + BINARY(instance_floordiv, "floordiv", PyNumber_FloorDivide) + BINARY(instance_truediv, "truediv", PyNumber_TrueDivide) BINARY_INPLACE(instance_ior, "or", PyNumber_InPlaceOr) BINARY_INPLACE(instance_ixor, "xor", PyNumber_InPlaceXor) *************** *** 1446,1451 **** --- 1448,1455 ---- BINARY_INPLACE(instance_imul, "mul", PyNumber_InPlaceMultiply) BINARY_INPLACE(instance_idiv, "div", PyNumber_InPlaceDivide) BINARY_INPLACE(instance_imod, "mod", PyNumber_InPlaceRemainder) + BINARY_INPLACE(instance_ifloordiv, "floordiv", PyNumber_InPlaceFloorDivide) + BINARY_INPLACE(instance_itruediv, "truediv", PyNumber_InPlaceTrueDivide) /* Try a 3-way comparison, returning an int; v is an instance. Return: -2 for an exception; *************** *** 1900,1905 **** --- 1904,1913 ---- (binaryfunc)instance_iand, /* nb_inplace_and */ (binaryfunc)instance_ixor, /* nb_inplace_xor */ (binaryfunc)instance_ior, /* nb_inplace_or */ + (binaryfunc)instance_floordiv, /* nb_floor_divide */ + (binaryfunc)instance_truediv, /* nb_true_divide */ + (binaryfunc)instance_ifloordiv, /* nb_inplace_floor_divide */ + (binaryfunc)instance_itruediv, /* nb_inplace_true_divide */ }; PyTypeObject PyInstance_Type = { Index: Objects/complexobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/complexobject.c,v retrieving revision 2.35.4.5 diff -c -r2.35.4.5 complexobject.c *** Objects/complexobject.c 2001/06/18 21:33:17 2.35.4.5 --- Objects/complexobject.c 2001/07/31 19:28:34 *************** *** 442,447 **** --- 442,462 ---- } static PyObject * + complex_int_div(PyComplexObject *v, PyComplexObject *w) + { + PyObject *t, *r; + + t = complex_divmod(v, w); + if (t != NULL) { + r = PyTuple_GET_ITEM(t, 0); + Py_INCREF(r); + Py_DECREF(t); + return r; + } + return NULL; + } + + static PyObject * complex_neg(PyComplexObject *v) { Py_complex neg; *************** *** 859,864 **** --- 874,894 ---- (unaryfunc)complex_float, /* nb_float */ 0, /* nb_oct */ 0, /* nb_hex */ + 0, /* nb_inplace_add */ + 0, /* nb_inplace_subtract */ + 0, /* nb_inplace_multiply*/ + 0, /* nb_inplace_divide */ + 0, /* nb_inplace_remainder */ + 0, /* nb_inplace_power */ + 0, /* nb_inplace_lshift */ + 0, /* nb_inplace_rshift */ + 0, /* nb_inplace_and */ + 0, /* nb_inplace_xor */ + 0, /* nb_inplace_or */ + (binaryfunc)complex_int_div, /* nb_floor_divide */ + (binaryfunc)complex_div, /* nb_true_divide */ + 0, /* nb_inplace_floor_divide */ + 0, /* nb_inplace_true_divide */ }; PyTypeObject PyComplex_Type = { Index: Objects/floatobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/floatobject.c,v retrieving revision 2.81.6.7 diff -c -r2.81.6.7 floatobject.c *** Objects/floatobject.c 2001/07/28 05:02:59 2.81.6.7 --- Objects/floatobject.c 2001/07/31 19:28:35 *************** *** 558,563 **** --- 558,578 ---- } static PyObject * + float_int_div(PyObject *v, PyObject *w) + { + PyObject *t, *r; + + t = float_divmod(v, w); + if (t != NULL) { + r = PyTuple_GET_ITEM(t, 0); + Py_INCREF(r); + Py_DECREF(t); + return r; + } + return NULL; + } + + static PyObject * float_neg(PyFloatObject *v) { return PyFloat_FromDouble(-v->ob_fval); *************** *** 678,696 **** (unaryfunc)float_int, /*nb_int*/ (unaryfunc)float_long, /*nb_long*/ (unaryfunc)float_float, /*nb_float*/ ! 0, /*nb_oct*/ ! 0, /*nb_hex*/ ! 0, /*nb_inplace_add*/ ! 0, /*nb_inplace_subtract*/ ! 0, /*nb_inplace_multiply*/ ! 0, /*nb_inplace_divide*/ ! 0, /*nb_inplace_remainder*/ ! 0, /*nb_inplace_power*/ ! 0, /*nb_inplace_lshift*/ ! 0, /*nb_inplace_rshift*/ ! 0, /*nb_inplace_and*/ ! 0, /*nb_inplace_xor*/ ! 0, /*nb_inplace_or*/ }; PyTypeObject PyFloat_Type = { --- 693,715 ---- (unaryfunc)float_int, /*nb_int*/ (unaryfunc)float_long, /*nb_long*/ (unaryfunc)float_float, /*nb_float*/ ! 0, /* nb_oct */ ! 0, /* nb_hex */ ! 0, /* nb_inplace_add */ ! 0, /* nb_inplace_subtract */ ! 0, /* nb_inplace_multiply */ ! 0, /* nb_inplace_divide */ ! 0, /* nb_inplace_remainder */ ! 0, /* nb_inplace_power */ ! 0, /* nb_inplace_lshift */ ! 0, /* nb_inplace_rshift */ ! 0, /* nb_inplace_and */ ! 0, /* nb_inplace_xor */ ! 0, /* nb_inplace_or */ ! float_int_div, /* nb_floor_divide */ ! float_div, /* nb_true_divide */ ! 0, /* nb_inplace_floor_divide */ ! 0, /* nb_inplace_true_divide */ }; PyTypeObject PyFloat_Type = { Index: Objects/intobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/intobject.c,v retrieving revision 2.56.6.8 diff -c -r2.56.6.8 intobject.c *** Objects/intobject.c 2001/07/21 06:07:13 2.56.6.8 --- Objects/intobject.c 2001/07/31 19:28:35 *************** *** 703,708 **** --- 703,714 ---- } static PyObject * + int_true_divide(PyObject *v, PyObject *w) + { + return PyFloat_Type.tp_as_number->nb_divide(v, w); + } + + static PyObject * int_int(PyIntObject *v) { Py_INCREF(v); *************** *** 812,817 **** --- 818,827 ---- 0, /*nb_inplace_and*/ 0, /*nb_inplace_xor*/ 0, /*nb_inplace_or*/ + (binaryfunc)int_div, /* nb_floor_divide */ + int_true_divide, /* nb_true_divide */ + 0, /* nb_inplace_floor_divide */ + 0, /* nb_inplace_true_divide */ }; PyTypeObject PyInt_Type = { Index: Objects/longobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v retrieving revision 1.71.6.6 diff -c -r1.71.6.6 longobject.c *** Objects/longobject.c 2001/07/15 20:26:55 1.71.6.6 --- Objects/longobject.c 2001/07/31 19:28:35 *************** *** 1981,1986 **** --- 1981,1992 ---- return c; } + static PyObject * + long_true_divide(PyObject *v, PyObject *w) + { + return PyFloat_Type.tp_as_number->nb_divide(v, w); + } + static int long_coerce(PyObject **pv, PyObject **pw) { *************** *** 2092,2108 **** (unaryfunc) long_float, /*nb_float*/ (unaryfunc) long_oct, /*nb_oct*/ (unaryfunc) long_hex, /*nb_hex*/ ! 0, /*nb_inplace_add*/ ! 0, /*nb_inplace_subtract*/ ! 0, /*nb_inplace_multiply*/ ! 0, /*nb_inplace_divide*/ ! 0, /*nb_inplace_remainder*/ ! 0, /*nb_inplace_power*/ ! 0, /*nb_inplace_lshift*/ ! 0, /*nb_inplace_rshift*/ ! 0, /*nb_inplace_and*/ ! 0, /*nb_inplace_xor*/ ! 0, /*nb_inplace_or*/ }; PyTypeObject PyLong_Type = { --- 2098,2118 ---- (unaryfunc) long_float, /*nb_float*/ (unaryfunc) long_oct, /*nb_oct*/ (unaryfunc) long_hex, /*nb_hex*/ ! 0, /* nb_inplace_add */ ! 0, /* nb_inplace_subtract */ ! 0, /* nb_inplace_multiply */ ! 0, /* nb_inplace_divide */ ! 0, /* nb_inplace_remainder */ ! 0, /* nb_inplace_power */ ! 0, /* nb_inplace_lshift */ ! 0, /* nb_inplace_rshift */ ! 0, /* nb_inplace_and */ ! 0, /* nb_inplace_xor */ ! 0, /* nb_inplace_or */ ! (binaryfunc)long_div, /* nb_floor_divide */ ! long_true_divide, /* nb_true_divide */ ! 0, /* nb_inplace_floor_divide */ ! 0, /* nb_inplace_true_divide */ }; PyTypeObject PyLong_Type = { Index: Parser/tokenizer.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Parser/tokenizer.c,v retrieving revision 2.50 diff -c -r2.50 tokenizer.c *** Parser/tokenizer.c 2001/04/21 02:46:11 2.50 --- Parser/tokenizer.c 2001/07/31 19:28:35 *************** *** 80,85 **** --- 80,87 ---- "LEFTSHIFTEQUAL", "RIGHTSHIFTEQUAL", "DOUBLESTAREQUAL", + "DOUBLESLASH", + "DOUBLESLASHEQUAL", /* This table must match the #defines in token.h! */ "OP", "", *************** *** 408,413 **** --- 410,416 ---- break; case '/': switch (c2) { + case '/': return DOUBLESLASH; case '=': return SLASHEQUAL; } break; *************** *** 465,470 **** --- 468,483 ---- switch (c3) { case '=': return DOUBLESTAREQUAL; + } + break; + } + break; + case '/': + switch (c2) { + case '/': + switch (c3) { + case '=': + return DOUBLESLASHEQUAL; } break; } Index: Python/ceval.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v retrieving revision 2.241.2.9 diff -c -r2.241.2.9 ceval.c *** Python/ceval.c 2001/07/16 21:42:46 2.241.2.9 --- Python/ceval.c 2001/07/31 19:28:36 *************** *** 885,890 **** --- 885,910 ---- if (x != NULL) continue; break; + case BINARY_FLOOR_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_FloorDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + + case BINARY_TRUE_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_TrueDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + case BINARY_MODULO: w = POP(); v = POP(); *************** *** 1046,1051 **** --- 1066,1091 ---- w = POP(); v = POP(); x = PyNumber_InPlaceDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + + case INPLACE_FLOOR_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_InPlaceFloorDivide(v, w); + Py_DECREF(v); + Py_DECREF(w); + PUSH(x); + if (x != NULL) continue; + break; + + case INPLACE_TRUE_DIVIDE: + w = POP(); + v = POP(); + x = PyNumber_InPlaceTrueDivide(v, w); Py_DECREF(v); Py_DECREF(w); PUSH(x); Index: Python/compile.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v retrieving revision 2.197.2.2 diff -c -r2.197.2.2 compile.c *** Python/compile.c 2001/07/16 21:42:46 2.197.2.2 --- Python/compile.c 2001/07/31 19:28:37 *************** *** 1874,1887 **** op = BINARY_MULTIPLY; break; case SLASH: ! op = BINARY_DIVIDE; break; case PERCENT: op = BINARY_MODULO; break; default: com_error(c, PyExc_SystemError, ! "com_term: operator not *, / or %"); op = 255; } com_addbyte(c, op); --- 1874,1893 ---- op = BINARY_MULTIPLY; break; case SLASH: ! if (c->c_flags & CO_FUTURE_DIVISION) ! op = BINARY_TRUE_DIVIDE; ! else ! op = BINARY_DIVIDE; break; case PERCENT: op = BINARY_MODULO; break; + case DOUBLESLASH: + op = BINARY_FLOOR_DIVIDE; + break; default: com_error(c, PyExc_SystemError, ! "com_term: operator not *, /, // or %"); op = 255; } com_addbyte(c, op); *************** *** 2475,2481 **** switch (STR(CHILD(CHILD(n, 1), 0))[0]) { case '+': opcode = INPLACE_ADD; break; case '-': opcode = INPLACE_SUBTRACT; break; ! case '/': opcode = INPLACE_DIVIDE; break; case '%': opcode = INPLACE_MODULO; break; case '<': opcode = INPLACE_LSHIFT; break; case '>': opcode = INPLACE_RSHIFT; break; --- 2481,2494 ---- switch (STR(CHILD(CHILD(n, 1), 0))[0]) { case '+': opcode = INPLACE_ADD; break; case '-': opcode = INPLACE_SUBTRACT; break; ! case '/': ! if (STR(CHILD(CHILD(n, 1), 0))[1] == '/') ! opcode = INPLACE_FLOOR_DIVIDE; ! else if (c->c_flags & CO_FUTURE_DIVISION) ! opcode = INPLACE_TRUE_DIVIDE; ! else ! opcode = INPLACE_DIVIDE; ! break; case '%': opcode = INPLACE_MODULO; break; case '<': opcode = INPLACE_LSHIFT; break; case '>': opcode = INPLACE_RSHIFT; break; *************** *** 3945,3951 **** if (base->c_nested || (sc.c_symtable->st_cur->ste_type == TYPE_FUNCTION)) sc.c_nested = 1; ! sc.c_flags |= base->c_flags & CO_GENERATOR_ALLOWED; } else { sc.c_private = NULL; sc.c_future = PyNode_Future(n, filename); --- 3958,3965 ---- if (base->c_nested || (sc.c_symtable->st_cur->ste_type == TYPE_FUNCTION)) sc.c_nested = 1; ! sc.c_flags |= base->c_flags & (CO_GENERATOR_ALLOWED | ! CO_FUTURE_DIVISION); } else { sc.c_private = NULL; sc.c_future = PyNode_Future(n, filename); *************** *** 3963,3968 **** --- 3977,3987 ---- sc.c_future->ff_generators = 1; else if (sc.c_future->ff_generators) flags->cf_flags |= PyCF_GENERATORS; + + if (flags->cf_flags & PyCF_DIVISION) + sc.c_future->ff_division = 1; + else if (sc.c_future->ff_division) + flags->cf_flags |= PyCF_DIVISION; } if (symtable_build(&sc, n) < 0) { com_free(&sc); *************** *** 4437,4442 **** --- 4456,4463 ---- c->c_flags |= CO_NESTED; if (c->c_future->ff_generators) c->c_flags |= CO_GENERATOR_ALLOWED; + if (c->c_future->ff_division) + c->c_flags |= CO_FUTURE_DIVISION; } if (ste->ste_generator) c->c_flags |= CO_GENERATOR; Index: Python/future.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/future.c,v retrieving revision 2.5.6.1 diff -c -r2.5.6.1 future.c *** Python/future.c 2001/07/16 21:42:46 2.5.6.1 --- Python/future.c 2001/07/31 19:28:37 *************** *** 33,38 **** --- 33,40 ---- ff->ff_nested_scopes = 1; } else if (strcmp(feature, FUTURE_GENERATORS) == 0) { ff->ff_generators = 1; + } else if (strcmp(feature, FUTURE_DIVISION) == 0) { + ff->ff_division = 1; } else if (strcmp(feature, "braces") == 0) { PyErr_SetString(PyExc_SyntaxError, "not a chance"); *************** *** 234,239 **** --- 236,242 ---- ff->ff_last_lineno = -1; ff->ff_nested_scopes = 0; ff->ff_generators = 0; + ff->ff_division = 0; if (future_parse(ff, n, filename) < 0) { PyMem_Free((void *)ff); Index: Python/graminit.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/graminit.c,v retrieving revision 2.28.8.1 diff -c -r2.28.8.1 graminit.c *** Python/graminit.c 2001/07/07 22:55:30 2.28.8.1 --- Python/graminit.c 2001/07/31 19:28:37 *************** *** 252,258 **** {1, arcs_11_4}, {2, arcs_11_5}, }; ! static arc arcs_12_0[11] = { {38, 1}, {39, 1}, {40, 1}, --- 252,258 ---- {1, arcs_11_4}, {2, arcs_11_5}, }; ! static arc arcs_12_0[12] = { {38, 1}, {39, 1}, {40, 1}, *************** *** 264,283 **** {46, 1}, {47, 1}, {48, 1}, }; static arc arcs_12_1[1] = { {0, 1}, }; static state states_12[2] = { ! {11, arcs_12_0}, {1, arcs_12_1}, }; static arc arcs_13_0[1] = { ! {49, 1}, }; static arc arcs_13_1[3] = { {21, 2}, ! {50, 3}, {0, 1}, }; static arc arcs_13_2[2] = { --- 264,284 ---- {46, 1}, {47, 1}, {48, 1}, + {49, 1}, }; static arc arcs_12_1[1] = { {0, 1}, }; static state states_12[2] = { ! {12, arcs_12_0}, {1, arcs_12_1}, }; static arc arcs_13_0[1] = { ! {50, 1}, }; static arc arcs_13_1[3] = { {21, 2}, ! {51, 3}, {0, 1}, }; static arc arcs_13_2[2] = { *************** *** 318,327 **** {2, arcs_13_8}, }; static arc arcs_14_0[1] = { ! {51, 1}, }; static arc arcs_14_1[1] = { ! {52, 2}, }; static arc arcs_14_2[1] = { {0, 2}, --- 319,328 ---- {2, arcs_13_8}, }; static arc arcs_14_0[1] = { ! {52, 1}, }; static arc arcs_14_1[1] = { ! {53, 2}, }; static arc arcs_14_2[1] = { {0, 2}, *************** *** 332,338 **** {1, arcs_14_2}, }; static arc arcs_15_0[1] = { ! {53, 1}, }; static arc arcs_15_1[1] = { {0, 1}, --- 333,339 ---- {1, arcs_14_2}, }; static arc arcs_15_0[1] = { ! {54, 1}, }; static arc arcs_15_1[1] = { {0, 1}, *************** *** 342,352 **** {1, arcs_15_1}, }; static arc arcs_16_0[5] = { - {54, 1}, {55, 1}, {56, 1}, {57, 1}, {58, 1}, }; static arc arcs_16_1[1] = { {0, 1}, --- 343,353 ---- {1, arcs_15_1}, }; static arc arcs_16_0[5] = { {55, 1}, {56, 1}, {57, 1}, {58, 1}, + {59, 1}, }; static arc arcs_16_1[1] = { {0, 1}, *************** *** 356,362 **** {1, arcs_16_1}, }; static arc arcs_17_0[1] = { ! {59, 1}, }; static arc arcs_17_1[1] = { {0, 1}, --- 357,363 ---- {1, arcs_16_1}, }; static arc arcs_17_0[1] = { ! {60, 1}, }; static arc arcs_17_1[1] = { {0, 1}, *************** *** 366,372 **** {1, arcs_17_1}, }; static arc arcs_18_0[1] = { ! {60, 1}, }; static arc arcs_18_1[1] = { {0, 1}, --- 367,373 ---- {1, arcs_17_1}, }; static arc arcs_18_0[1] = { ! {61, 1}, }; static arc arcs_18_1[1] = { {0, 1}, *************** *** 376,382 **** {1, arcs_18_1}, }; static arc arcs_19_0[1] = { ! {61, 1}, }; static arc arcs_19_1[2] = { {9, 2}, --- 377,383 ---- {1, arcs_18_1}, }; static arc arcs_19_0[1] = { ! {62, 1}, }; static arc arcs_19_1[2] = { {9, 2}, *************** *** 391,397 **** {1, arcs_19_2}, }; static arc arcs_20_0[1] = { ! {62, 1}, }; static arc arcs_20_1[1] = { {9, 2}, --- 392,398 ---- {1, arcs_19_2}, }; static arc arcs_20_0[1] = { ! {63, 1}, }; static arc arcs_20_1[1] = { {9, 2}, *************** *** 405,411 **** {1, arcs_20_2}, }; static arc arcs_21_0[1] = { ! {63, 1}, }; static arc arcs_21_1[2] = { {21, 2}, --- 406,412 ---- {1, arcs_20_2}, }; static arc arcs_21_0[1] = { ! {64, 1}, }; static arc arcs_21_1[2] = { {21, 2}, *************** *** 438,462 **** {1, arcs_21_6}, }; static arc arcs_22_0[2] = { ! {64, 1}, ! {66, 2}, }; static arc arcs_22_1[1] = { ! {65, 3}, }; static arc arcs_22_2[1] = { ! {67, 4}, }; static arc arcs_22_3[2] = { {22, 1}, {0, 3}, }; static arc arcs_22_4[1] = { ! {64, 5}, }; static arc arcs_22_5[2] = { {23, 6}, ! {68, 7}, }; static arc arcs_22_6[1] = { {0, 6}, --- 439,463 ---- {1, arcs_21_6}, }; static arc arcs_22_0[2] = { ! {65, 1}, ! {67, 2}, }; static arc arcs_22_1[1] = { ! {66, 3}, }; static arc arcs_22_2[1] = { ! {68, 4}, }; static arc arcs_22_3[2] = { {22, 1}, {0, 3}, }; static arc arcs_22_4[1] = { ! {65, 5}, }; static arc arcs_22_5[2] = { {23, 6}, ! {69, 7}, }; static arc arcs_22_6[1] = { {0, 6}, *************** *** 466,472 **** {0, 7}, }; static arc arcs_22_8[1] = { ! {68, 7}, }; static state states_22[9] = { {2, arcs_22_0}, --- 467,473 ---- {0, 7}, }; static arc arcs_22_8[1] = { ! {69, 7}, }; static state states_22[9] = { {2, arcs_22_0}, *************** *** 499,505 **** {1, arcs_23_3}, }; static arc arcs_24_0[1] = { ! {67, 1}, }; static arc arcs_24_1[2] = { {12, 2}, --- 500,506 ---- {1, arcs_23_3}, }; static arc arcs_24_0[1] = { ! {68, 1}, }; static arc arcs_24_1[2] = { {12, 2}, *************** *** 521,527 **** {12, 1}, }; static arc arcs_25_1[2] = { ! {69, 0}, {0, 1}, }; static state states_25[2] = { --- 522,528 ---- {12, 1}, }; static arc arcs_25_1[2] = { ! {70, 0}, {0, 1}, }; static state states_25[2] = { *************** *** 529,535 **** {2, arcs_25_1}, }; static arc arcs_26_0[1] = { ! {70, 1}, }; static arc arcs_26_1[1] = { {12, 2}, --- 530,536 ---- {2, arcs_25_1}, }; static arc arcs_26_0[1] = { ! {71, 1}, }; static arc arcs_26_1[1] = { {12, 2}, *************** *** 544,556 **** {2, arcs_26_2}, }; static arc arcs_27_0[1] = { ! {71, 1}, }; static arc arcs_27_1[1] = { ! {72, 2}, }; static arc arcs_27_2[2] = { ! {73, 3}, {0, 2}, }; static arc arcs_27_3[1] = { --- 545,557 ---- {2, arcs_26_2}, }; static arc arcs_27_0[1] = { ! {72, 1}, }; static arc arcs_27_1[1] = { ! {73, 2}, }; static arc arcs_27_2[2] = { ! {74, 3}, {0, 2}, }; static arc arcs_27_3[1] = { *************** *** 576,582 **** {1, arcs_27_6}, }; static arc arcs_28_0[1] = { ! {74, 1}, }; static arc arcs_28_1[1] = { {21, 2}, --- 577,583 ---- {1, arcs_27_6}, }; static arc arcs_28_0[1] = { ! {75, 1}, }; static arc arcs_28_1[1] = { {21, 2}, *************** *** 599,610 **** {1, arcs_28_4}, }; static arc arcs_29_0[6] = { - {75, 1}, {76, 1}, {77, 1}, {78, 1}, - {10, 1}, {79, 1}, }; static arc arcs_29_1[1] = { {0, 1}, --- 600,611 ---- {1, arcs_28_4}, }; static arc arcs_29_0[6] = { {76, 1}, {77, 1}, {78, 1}, {79, 1}, + {10, 1}, + {80, 1}, }; static arc arcs_29_1[1] = { {0, 1}, *************** *** 614,620 **** {1, arcs_29_1}, }; static arc arcs_30_0[1] = { ! {80, 1}, }; static arc arcs_30_1[1] = { {21, 2}, --- 615,621 ---- {1, arcs_29_1}, }; static arc arcs_30_0[1] = { ! {81, 1}, }; static arc arcs_30_1[1] = { {21, 2}, *************** *** 626,633 **** {15, 4}, }; static arc arcs_30_4[3] = { ! {81, 1}, ! {82, 5}, {0, 4}, }; static arc arcs_30_5[1] = { --- 627,634 ---- {15, 4}, }; static arc arcs_30_4[3] = { ! {82, 1}, ! {83, 5}, {0, 4}, }; static arc arcs_30_5[1] = { *************** *** 650,656 **** {1, arcs_30_7}, }; static arc arcs_31_0[1] = { ! {83, 1}, }; static arc arcs_31_1[1] = { {21, 2}, --- 651,657 ---- {1, arcs_30_7}, }; static arc arcs_31_0[1] = { ! {84, 1}, }; static arc arcs_31_1[1] = { {21, 2}, *************** *** 662,668 **** {15, 4}, }; static arc arcs_31_4[2] = { ! {82, 5}, {0, 4}, }; static arc arcs_31_5[1] = { --- 663,669 ---- {15, 4}, }; static arc arcs_31_4[2] = { ! {83, 5}, {0, 4}, }; static arc arcs_31_5[1] = { *************** *** 685,697 **** {1, arcs_31_7}, }; static arc arcs_32_0[1] = { ! {84, 1}, }; static arc arcs_32_1[1] = { ! {52, 2}, }; static arc arcs_32_2[1] = { ! {73, 3}, }; static arc arcs_32_3[1] = { {9, 4}, --- 686,698 ---- {1, arcs_31_7}, }; static arc arcs_32_0[1] = { ! {85, 1}, }; static arc arcs_32_1[1] = { ! {53, 2}, }; static arc arcs_32_2[1] = { ! {74, 3}, }; static arc arcs_32_3[1] = { {9, 4}, *************** *** 703,709 **** {15, 6}, }; static arc arcs_32_6[2] = { ! {82, 7}, {0, 6}, }; static arc arcs_32_7[1] = { --- 704,710 ---- {15, 6}, }; static arc arcs_32_6[2] = { ! {83, 7}, {0, 6}, }; static arc arcs_32_7[1] = { *************** *** 728,734 **** {1, arcs_32_9}, }; static arc arcs_33_0[1] = { ! {85, 1}, }; static arc arcs_33_1[1] = { {14, 2}, --- 729,735 ---- {1, arcs_32_9}, }; static arc arcs_33_0[1] = { ! {86, 1}, }; static arc arcs_33_1[1] = { {14, 2}, *************** *** 737,744 **** {15, 3}, }; static arc arcs_33_3[2] = { ! {86, 4}, ! {87, 5}, }; static arc arcs_33_4[1] = { {14, 6}, --- 738,745 ---- {15, 3}, }; static arc arcs_33_3[2] = { ! {87, 4}, ! {88, 5}, }; static arc arcs_33_4[1] = { {14, 6}, *************** *** 753,760 **** {15, 9}, }; static arc arcs_33_8[3] = { ! {86, 4}, ! {82, 5}, {0, 8}, }; static arc arcs_33_9[1] = { --- 754,761 ---- {15, 9}, }; static arc arcs_33_8[3] = { ! {87, 4}, ! {83, 5}, {0, 8}, }; static arc arcs_33_9[1] = { *************** *** 773,779 **** {1, arcs_33_9}, }; static arc arcs_34_0[1] = { ! {88, 1}, }; static arc arcs_34_1[2] = { {21, 2}, --- 774,780 ---- {1, arcs_33_9}, }; static arc arcs_34_0[1] = { ! {89, 1}, }; static arc arcs_34_1[2] = { {21, 2}, *************** *** 804,817 **** {0, 1}, }; static arc arcs_35_2[1] = { ! {89, 3}, }; static arc arcs_35_3[1] = { {6, 4}, }; static arc arcs_35_4[2] = { {6, 4}, ! {90, 1}, }; static state states_35[5] = { {2, arcs_35_0}, --- 805,818 ---- {0, 1}, }; static arc arcs_35_2[1] = { ! {90, 3}, }; static arc arcs_35_3[1] = { {6, 4}, }; static arc arcs_35_4[2] = { {6, 4}, ! {91, 1}, }; static state states_35[5] = { {2, arcs_35_0}, *************** *** 821,838 **** {2, arcs_35_4}, }; static arc arcs_36_0[2] = { ! {91, 1}, ! {93, 2}, }; static arc arcs_36_1[2] = { ! {92, 3}, {0, 1}, }; static arc arcs_36_2[1] = { {0, 2}, }; static arc arcs_36_3[1] = { ! {91, 1}, }; static state states_36[4] = { {2, arcs_36_0}, --- 822,839 ---- {2, arcs_35_4}, }; static arc arcs_36_0[2] = { ! {92, 1}, ! {94, 2}, }; static arc arcs_36_1[2] = { ! {93, 3}, {0, 1}, }; static arc arcs_36_2[1] = { {0, 2}, }; static arc arcs_36_3[1] = { ! {92, 1}, }; static state states_36[4] = { {2, arcs_36_0}, *************** *** 841,850 **** {1, arcs_36_3}, }; static arc arcs_37_0[1] = { ! {94, 1}, }; static arc arcs_37_1[2] = { ! {95, 0}, {0, 1}, }; static state states_37[2] = { --- 842,851 ---- {1, arcs_36_3}, }; static arc arcs_37_0[1] = { ! {95, 1}, }; static arc arcs_37_1[2] = { ! {96, 0}, {0, 1}, }; static state states_37[2] = { *************** *** 852,862 **** {2, arcs_37_1}, }; static arc arcs_38_0[2] = { ! {96, 1}, ! {97, 2}, }; static arc arcs_38_1[1] = { ! {94, 2}, }; static arc arcs_38_2[1] = { {0, 2}, --- 853,863 ---- {2, arcs_37_1}, }; static arc arcs_38_0[2] = { ! {97, 1}, ! {98, 2}, }; static arc arcs_38_1[1] = { ! {95, 2}, }; static arc arcs_38_2[1] = { {0, 2}, *************** *** 867,876 **** {1, arcs_38_2}, }; static arc arcs_39_0[1] = { ! {72, 1}, }; static arc arcs_39_1[2] = { ! {98, 0}, {0, 1}, }; static state states_39[2] = { --- 868,877 ---- {1, arcs_38_2}, }; static arc arcs_39_0[1] = { ! {73, 1}, }; static arc arcs_39_1[2] = { ! {99, 0}, {0, 1}, }; static state states_39[2] = { *************** *** 878,902 **** {2, arcs_39_1}, }; static arc arcs_40_0[10] = { - {99, 1}, {100, 1}, {101, 1}, {102, 1}, {103, 1}, {104, 1}, {105, 1}, ! {73, 1}, ! {96, 2}, ! {106, 3}, }; static arc arcs_40_1[1] = { {0, 1}, }; static arc arcs_40_2[1] = { ! {73, 1}, }; static arc arcs_40_3[2] = { ! {96, 1}, {0, 3}, }; static state states_40[4] = { --- 879,903 ---- {2, arcs_39_1}, }; static arc arcs_40_0[10] = { {100, 1}, {101, 1}, {102, 1}, {103, 1}, {104, 1}, {105, 1}, ! {106, 1}, ! {74, 1}, ! {97, 2}, ! {107, 3}, }; static arc arcs_40_1[1] = { {0, 1}, }; static arc arcs_40_2[1] = { ! {74, 1}, }; static arc arcs_40_3[2] = { ! {97, 1}, {0, 3}, }; static state states_40[4] = { *************** *** 906,915 **** {2, arcs_40_3}, }; static arc arcs_41_0[1] = { ! {107, 1}, }; static arc arcs_41_1[2] = { ! {108, 0}, {0, 1}, }; static state states_41[2] = { --- 907,916 ---- {2, arcs_40_3}, }; static arc arcs_41_0[1] = { ! {108, 1}, }; static arc arcs_41_1[2] = { ! {109, 0}, {0, 1}, }; static state states_41[2] = { *************** *** 917,926 **** {2, arcs_41_1}, }; static arc arcs_42_0[1] = { ! {109, 1}, }; static arc arcs_42_1[2] = { ! {110, 0}, {0, 1}, }; static state states_42[2] = { --- 918,927 ---- {2, arcs_41_1}, }; static arc arcs_42_0[1] = { ! {110, 1}, }; static arc arcs_42_1[2] = { ! {111, 0}, {0, 1}, }; static state states_42[2] = { *************** *** 928,937 **** {2, arcs_42_1}, }; static arc arcs_43_0[1] = { ! {111, 1}, }; static arc arcs_43_1[2] = { ! {112, 0}, {0, 1}, }; static state states_43[2] = { --- 929,938 ---- {2, arcs_42_1}, }; static arc arcs_43_0[1] = { ! {112, 1}, }; static arc arcs_43_1[2] = { ! {113, 0}, {0, 1}, }; static state states_43[2] = { *************** *** 939,949 **** {2, arcs_43_1}, }; static arc arcs_44_0[1] = { ! {113, 1}, }; static arc arcs_44_1[3] = { ! {114, 0}, ! {50, 0}, {0, 1}, }; static state states_44[2] = { --- 940,950 ---- {2, arcs_43_1}, }; static arc arcs_44_0[1] = { ! {114, 1}, }; static arc arcs_44_1[3] = { ! {115, 0}, ! {51, 0}, {0, 1}, }; static state states_44[2] = { *************** *** 951,961 **** {3, arcs_44_1}, }; static arc arcs_45_0[1] = { ! {115, 1}, }; static arc arcs_45_1[3] = { - {116, 0}, {117, 0}, {0, 1}, }; static state states_45[2] = { --- 952,962 ---- {3, arcs_44_1}, }; static arc arcs_45_0[1] = { ! {116, 1}, }; static arc arcs_45_1[3] = { {117, 0}, + {118, 0}, {0, 1}, }; static state states_45[2] = { *************** *** 963,988 **** {3, arcs_45_1}, }; static arc arcs_46_0[1] = { ! {118, 1}, }; ! static arc arcs_46_1[4] = { {23, 0}, - {119, 0}, {120, 0}, {0, 1}, }; static state states_46[2] = { {1, arcs_46_0}, ! {4, arcs_46_1}, }; static arc arcs_47_0[4] = { - {116, 1}, {117, 1}, ! {121, 1}, ! {122, 2}, }; static arc arcs_47_1[1] = { ! {118, 2}, }; static arc arcs_47_2[1] = { {0, 2}, --- 964,990 ---- {3, arcs_45_1}, }; static arc arcs_46_0[1] = { ! {119, 1}, }; ! static arc arcs_46_1[5] = { {23, 0}, {120, 0}, + {121, 0}, + {122, 0}, {0, 1}, }; static state states_46[2] = { {1, arcs_46_0}, ! {5, arcs_46_1}, }; static arc arcs_47_0[4] = { {117, 1}, ! {118, 1}, ! {123, 1}, ! {124, 2}, }; static arc arcs_47_1[1] = { ! {119, 2}, }; static arc arcs_47_2[1] = { {0, 2}, *************** *** 993,1007 **** {1, arcs_47_2}, }; static arc arcs_48_0[1] = { ! {123, 1}, }; static arc arcs_48_1[3] = { ! {124, 1}, {24, 2}, {0, 1}, }; static arc arcs_48_2[1] = { ! {118, 3}, }; static arc arcs_48_3[2] = { {24, 2}, --- 995,1009 ---- {1, arcs_47_2}, }; static arc arcs_48_0[1] = { ! {125, 1}, }; static arc arcs_48_1[3] = { ! {126, 1}, {24, 2}, {0, 1}, }; static arc arcs_48_2[1] = { ! {119, 3}, }; static arc arcs_48_3[2] = { {24, 2}, *************** *** 1015,1038 **** }; static arc arcs_49_0[7] = { {16, 1}, ! {125, 2}, ! {128, 3}, ! {131, 4}, {12, 5}, ! {132, 5}, ! {133, 6}, }; static arc arcs_49_1[2] = { {9, 7}, {18, 5}, }; static arc arcs_49_2[2] = { ! {126, 8}, ! {127, 5}, }; static arc arcs_49_3[2] = { ! {129, 9}, ! {130, 5}, }; static arc arcs_49_4[1] = { {9, 10}, --- 1017,1040 ---- }; static arc arcs_49_0[7] = { {16, 1}, ! {127, 2}, ! {130, 3}, ! {133, 4}, {12, 5}, ! {134, 5}, ! {135, 6}, }; static arc arcs_49_1[2] = { {9, 7}, {18, 5}, }; static arc arcs_49_2[2] = { ! {128, 8}, ! {129, 5}, }; static arc arcs_49_3[2] = { ! {131, 9}, ! {132, 5}, }; static arc arcs_49_4[1] = { {9, 10}, *************** *** 1041,1060 **** {0, 5}, }; static arc arcs_49_6[2] = { ! {133, 6}, {0, 6}, }; static arc arcs_49_7[1] = { {18, 5}, }; static arc arcs_49_8[1] = { ! {127, 5}, }; static arc arcs_49_9[1] = { ! {130, 5}, }; static arc arcs_49_10[1] = { ! {131, 5}, }; static state states_49[11] = { {7, arcs_49_0}, --- 1043,1062 ---- {0, 5}, }; static arc arcs_49_6[2] = { ! {135, 6}, {0, 6}, }; static arc arcs_49_7[1] = { {18, 5}, }; static arc arcs_49_8[1] = { ! {129, 5}, }; static arc arcs_49_9[1] = { ! {132, 5}, }; static arc arcs_49_10[1] = { ! {133, 5}, }; static state states_49[11] = { {7, arcs_49_0}, *************** *** 1073,1079 **** {21, 1}, }; static arc arcs_50_1[3] = { ! {134, 2}, {22, 3}, {0, 1}, }; --- 1075,1081 ---- {21, 1}, }; static arc arcs_50_1[3] = { ! {136, 2}, {22, 3}, {0, 1}, }; *************** *** 1096,1102 **** {2, arcs_50_4}, }; static arc arcs_51_0[1] = { ! {135, 1}, }; static arc arcs_51_1[2] = { {17, 2}, --- 1098,1104 ---- {2, arcs_50_4}, }; static arc arcs_51_0[1] = { ! {137, 1}, }; static arc arcs_51_1[2] = { {17, 2}, *************** *** 1120,1134 **** }; static arc arcs_52_0[3] = { {16, 1}, ! {125, 2}, ! {69, 3}, }; static arc arcs_52_1[2] = { ! {136, 4}, {18, 5}, }; static arc arcs_52_2[1] = { ! {137, 6}, }; static arc arcs_52_3[1] = { {12, 5}, --- 1122,1136 ---- }; static arc arcs_52_0[3] = { {16, 1}, ! {127, 2}, ! {70, 3}, }; static arc arcs_52_1[2] = { ! {138, 4}, {18, 5}, }; static arc arcs_52_2[1] = { ! {139, 6}, }; static arc arcs_52_3[1] = { {12, 5}, *************** *** 1140,1146 **** {0, 5}, }; static arc arcs_52_6[1] = { ! {127, 5}, }; static state states_52[7] = { {3, arcs_52_0}, --- 1142,1148 ---- {0, 5}, }; static arc arcs_52_6[1] = { ! {129, 5}, }; static state states_52[7] = { {3, arcs_52_0}, *************** *** 1152,1165 **** {1, arcs_52_6}, }; static arc arcs_53_0[1] = { ! {138, 1}, }; static arc arcs_53_1[2] = { {22, 2}, {0, 1}, }; static arc arcs_53_2[2] = { ! {138, 1}, {0, 2}, }; static state states_53[3] = { --- 1154,1167 ---- {1, arcs_52_6}, }; static arc arcs_53_0[1] = { ! {140, 1}, }; static arc arcs_53_1[2] = { {22, 2}, {0, 1}, }; static arc arcs_53_2[2] = { ! {140, 1}, {0, 2}, }; static state states_53[3] = { *************** *** 1168,1179 **** {2, arcs_53_2}, }; static arc arcs_54_0[3] = { ! {69, 1}, {21, 2}, {14, 3}, }; static arc arcs_54_1[1] = { ! {69, 4}, }; static arc arcs_54_2[2] = { {14, 3}, --- 1170,1181 ---- {2, arcs_53_2}, }; static arc arcs_54_0[3] = { ! {70, 1}, {21, 2}, {14, 3}, }; static arc arcs_54_1[1] = { ! {70, 4}, }; static arc arcs_54_2[2] = { {14, 3}, *************** *** 1181,1194 **** }; static arc arcs_54_3[3] = { {21, 5}, ! {139, 6}, {0, 3}, }; static arc arcs_54_4[1] = { ! {69, 6}, }; static arc arcs_54_5[2] = { ! {139, 6}, {0, 5}, }; static arc arcs_54_6[1] = { --- 1183,1196 ---- }; static arc arcs_54_3[3] = { {21, 5}, ! {141, 6}, {0, 3}, }; static arc arcs_54_4[1] = { ! {70, 6}, }; static arc arcs_54_5[2] = { ! {141, 6}, {0, 5}, }; static arc arcs_54_6[1] = { *************** *** 1219,1232 **** {1, arcs_55_2}, }; static arc arcs_56_0[1] = { ! {72, 1}, }; static arc arcs_56_1[2] = { {22, 2}, {0, 1}, }; static arc arcs_56_2[2] = { ! {72, 1}, {0, 2}, }; static state states_56[3] = { --- 1221,1234 ---- {1, arcs_55_2}, }; static arc arcs_56_0[1] = { ! {73, 1}, }; static arc arcs_56_1[2] = { {22, 2}, {0, 1}, }; static arc arcs_56_2[2] = { ! {73, 1}, {0, 2}, }; static state states_56[3] = { *************** *** 1275,1281 **** {2, arcs_58_4}, }; static arc arcs_59_0[1] = { ! {140, 1}, }; static arc arcs_59_1[1] = { {12, 2}, --- 1277,1283 ---- {2, arcs_58_4}, }; static arc arcs_59_0[1] = { ! {142, 1}, }; static arc arcs_59_1[1] = { {12, 2}, *************** *** 1310,1316 **** {1, arcs_59_7}, }; static arc arcs_60_0[3] = { ! {141, 1}, {23, 2}, {24, 3}, }; --- 1312,1318 ---- {1, arcs_59_7}, }; static arc arcs_60_0[3] = { ! {143, 1}, {23, 2}, {24, 3}, }; *************** *** 1325,1331 **** {21, 6}, }; static arc arcs_60_4[4] = { ! {141, 1}, {23, 2}, {24, 3}, {0, 4}, --- 1327,1333 ---- {21, 6}, }; static arc arcs_60_4[4] = { ! {143, 1}, {23, 2}, {24, 3}, {0, 4}, *************** *** 1370,1377 **** {1, arcs_61_3}, }; static arc arcs_62_0[2] = { ! {134, 1}, ! {143, 1}, }; static arc arcs_62_1[1] = { {0, 1}, --- 1372,1379 ---- {1, arcs_61_3}, }; static arc arcs_62_0[2] = { ! {136, 1}, ! {145, 1}, }; static arc arcs_62_1[1] = { {0, 1}, *************** *** 1381,1399 **** {1, arcs_62_1}, }; static arc arcs_63_0[1] = { ! {84, 1}, }; static arc arcs_63_1[1] = { ! {52, 2}, }; static arc arcs_63_2[1] = { ! {73, 3}, }; static arc arcs_63_3[1] = { {9, 4}, }; static arc arcs_63_4[2] = { ! {142, 5}, {0, 4}, }; static arc arcs_63_5[1] = { --- 1383,1401 ---- {1, arcs_62_1}, }; static arc arcs_63_0[1] = { ! {85, 1}, }; static arc arcs_63_1[1] = { ! {53, 2}, }; static arc arcs_63_2[1] = { ! {74, 3}, }; static arc arcs_63_3[1] = { {9, 4}, }; static arc arcs_63_4[2] = { ! {144, 5}, {0, 4}, }; static arc arcs_63_5[1] = { *************** *** 1408,1420 **** {1, arcs_63_5}, }; static arc arcs_64_0[1] = { ! {80, 1}, }; static arc arcs_64_1[1] = { {21, 2}, }; static arc arcs_64_2[2] = { ! {142, 3}, {0, 2}, }; static arc arcs_64_3[1] = { --- 1410,1422 ---- {1, arcs_63_5}, }; static arc arcs_64_0[1] = { ! {81, 1}, }; static arc arcs_64_1[1] = { {21, 2}, }; static arc arcs_64_2[2] = { ! {144, 3}, {0, 2}, }; static arc arcs_64_3[1] = { *************** *** 1428,1564 **** }; static dfa dfas[65] = { {256, "single_input", 0, 3, states_0, ! "\004\030\001\000\000\000\052\370\305\004\071\000\001\000\060\042\271\020"}, {257, "file_input", 0, 2, states_1, ! "\204\030\001\000\000\000\052\370\305\004\071\000\001\000\060\042\271\020"}, {258, "eval_input", 0, 3, states_2, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {259, "funcdef", 0, 6, states_3, ! "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "parameters", 0, 4, states_4, ! "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {261, "varargslist", 0, 10, states_5, ! "\000\020\201\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {262, "fpdef", 0, 4, states_6, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {263, "fplist", 0, 3, states_7, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {264, "stmt", 0, 2, states_8, ! "\000\030\001\000\000\000\052\370\305\004\071\000\001\000\060\042\271\020"}, {265, "simple_stmt", 0, 4, states_9, ! "\000\020\001\000\000\000\052\370\305\004\000\000\001\000\060\042\271\000"}, {266, "small_stmt", 0, 2, states_10, ! "\000\020\001\000\000\000\052\370\305\004\000\000\001\000\060\042\271\000"}, {267, "expr_stmt", 0, 6, states_11, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {268, "augassign", 0, 2, states_12, ! "\000\000\000\000\300\377\001\000\000\000\000\000\000\000\000\000\000\000"}, {269, "print_stmt", 0, 9, states_13, ! "\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000"}, {270, "del_stmt", 0, 3, states_14, ! "\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000"}, {271, "pass_stmt", 0, 2, states_15, ! "\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000"}, {272, "flow_stmt", 0, 2, states_16, ! "\000\000\000\000\000\000\000\370\000\000\000\000\000\000\000\000\000\000"}, {273, "break_stmt", 0, 2, states_17, ! "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000"}, {274, "continue_stmt", 0, 2, states_18, ! "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, {275, "return_stmt", 0, 3, states_19, ! "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000"}, {276, "yield_stmt", 0, 3, states_20, ! "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000"}, {277, "raise_stmt", 0, 7, states_21, ! "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, {278, "import_stmt", 0, 9, states_22, ! "\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000"}, {279, "import_as_name", 0, 4, states_23, ! "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {280, "dotted_as_name", 0, 4, states_24, ! "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {281, "dotted_name", 0, 2, states_25, ! "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {282, "global_stmt", 0, 3, states_26, ! "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, {283, "exec_stmt", 0, 7, states_27, ! "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"}, {284, "assert_stmt", 0, 5, states_28, ! "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000"}, {285, "compound_stmt", 0, 2, states_29, ! "\000\010\000\000\000\000\000\000\000\000\071\000\000\000\000\000\000\020"}, {286, "if_stmt", 0, 8, states_30, ! "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"}, {287, "while_stmt", 0, 8, states_31, ! "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000"}, {288, "for_stmt", 0, 10, states_32, ! "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, {289, "try_stmt", 0, 10, states_33, ! "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"}, {290, "except_clause", 0, 5, states_34, ! "\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000"}, {291, "suite", 0, 5, states_35, ! "\004\020\001\000\000\000\052\370\305\004\000\000\001\000\060\042\271\000"}, {292, "test", 0, 4, states_36, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {293, "and_test", 0, 2, states_37, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\071\000"}, {294, "not_test", 0, 3, states_38, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\071\000"}, {295, "comparison", 0, 2, states_39, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {296, "comp_op", 0, 4, states_40, ! "\000\000\000\000\000\000\000\000\000\002\000\000\371\007\000\000\000\000"}, {297, "expr", 0, 2, states_41, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {298, "xor_expr", 0, 2, states_42, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {299, "and_expr", 0, 2, states_43, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {300, "shift_expr", 0, 2, states_44, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {301, "arith_expr", 0, 2, states_45, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {302, "term", 0, 2, states_46, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {303, "factor", 0, 3, states_47, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {304, "power", 0, 4, states_48, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\040\071\000"}, {305, "atom", 0, 11, states_49, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\040\071\000"}, {306, "listmaker", 0, 5, states_50, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {307, "lambdef", 0, 5, states_51, ! "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000"}, {308, "trailer", 0, 7, states_52, ! "\000\000\001\000\000\000\000\000\040\000\000\000\000\000\000\040\000\000"}, {309, "subscriptlist", 0, 3, states_53, ! "\000\120\001\000\000\000\000\000\040\000\000\000\001\000\060\042\271\000"}, {310, "subscript", 0, 7, states_54, ! "\000\120\001\000\000\000\000\000\040\000\000\000\001\000\060\042\271\000"}, {311, "sliceop", 0, 3, states_55, ! "\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {312, "exprlist", 0, 3, states_56, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\060\042\071\000"}, {313, "testlist", 0, 3, states_57, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {314, "dictmaker", 0, 5, states_58, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {315, "classdef", 0, 8, states_59, ! "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020"}, {316, "arglist", 0, 8, states_60, ! "\000\020\201\001\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {317, "argument", 0, 4, states_61, ! "\000\020\001\000\000\000\000\000\000\000\000\000\001\000\060\042\271\000"}, {318, "list_iter", 0, 2, states_62, ! "\000\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\000"}, {319, "list_for", 0, 6, states_63, ! "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"}, {320, "list_if", 0, 4, states_64, ! "\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"}, }; ! static label labels[144] = { {0, "EMPTY"}, {256, 0}, {4, 0}, --- 1430,1566 ---- }; static dfa dfas[65] = { {256, "single_input", 0, 3, states_0, ! "\004\030\001\000\000\000\124\360\213\011\162\000\002\000\140\210\344\102\000"}, {257, "file_input", 0, 2, states_1, ! "\204\030\001\000\000\000\124\360\213\011\162\000\002\000\140\210\344\102\000"}, {258, "eval_input", 0, 3, states_2, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\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\000\000"}, {260, "parameters", 0, 4, states_4, ! "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {261, "varargslist", 0, 10, states_5, ! "\000\020\201\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {262, "fpdef", 0, 4, states_6, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {263, "fplist", 0, 3, states_7, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {264, "stmt", 0, 2, states_8, ! "\000\030\001\000\000\000\124\360\213\011\162\000\002\000\140\210\344\102\000"}, {265, "simple_stmt", 0, 4, states_9, ! "\000\020\001\000\000\000\124\360\213\011\000\000\002\000\140\210\344\002\000"}, {266, "small_stmt", 0, 2, states_10, ! "\000\020\001\000\000\000\124\360\213\011\000\000\002\000\140\210\344\002\000"}, {267, "expr_stmt", 0, 6, states_11, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\002\000"}, {268, "augassign", 0, 2, states_12, ! "\000\000\000\000\300\377\003\000\000\000\000\000\000\000\000\000\000\000\000"}, {269, "print_stmt", 0, 9, states_13, ! "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, {270, "del_stmt", 0, 3, states_14, ! "\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, {271, "pass_stmt", 0, 2, states_15, ! "\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000"}, {272, "flow_stmt", 0, 2, states_16, ! "\000\000\000\000\000\000\000\360\001\000\000\000\000\000\000\000\000\000\000"}, {273, "break_stmt", 0, 2, states_17, ! "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000"}, {274, "continue_stmt", 0, 2, states_18, ! "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000"}, {275, "return_stmt", 0, 3, states_19, ! "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, {276, "yield_stmt", 0, 3, states_20, ! "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000"}, {277, "raise_stmt", 0, 7, states_21, ! "\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"}, {278, "import_stmt", 0, 9, states_22, ! "\000\000\000\000\000\000\000\000\012\000\000\000\000\000\000\000\000\000\000"}, {279, "import_as_name", 0, 4, states_23, ! "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {280, "dotted_as_name", 0, 4, states_24, ! "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {281, "dotted_name", 0, 2, states_25, ! "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {282, "global_stmt", 0, 3, states_26, ! "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, {283, "exec_stmt", 0, 7, states_27, ! "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, {284, "assert_stmt", 0, 5, states_28, ! "\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, {285, "compound_stmt", 0, 2, states_29, ! "\000\010\000\000\000\000\000\000\000\000\162\000\000\000\000\000\000\100\000"}, {286, "if_stmt", 0, 8, states_30, ! "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, {287, "while_stmt", 0, 8, states_31, ! "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"}, {288, "for_stmt", 0, 10, states_32, ! "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, {289, "try_stmt", 0, 10, states_33, ! "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000"}, {290, "except_clause", 0, 5, states_34, ! "\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"}, {291, "suite", 0, 5, states_35, ! "\004\020\001\000\000\000\124\360\213\011\000\000\002\000\140\210\344\002\000"}, {292, "test", 0, 4, states_36, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\002\000"}, {293, "and_test", 0, 2, states_37, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\000\000"}, {294, "not_test", 0, 3, states_38, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\000\000"}, {295, "comparison", 0, 2, states_39, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {296, "comp_op", 0, 4, states_40, ! "\000\000\000\000\000\000\000\000\000\004\000\000\362\017\000\000\000\000\000"}, {297, "expr", 0, 2, states_41, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {298, "xor_expr", 0, 2, states_42, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {299, "and_expr", 0, 2, states_43, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {300, "shift_expr", 0, 2, states_44, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {301, "arith_expr", 0, 2, states_45, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {302, "term", 0, 2, states_46, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {303, "factor", 0, 3, states_47, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {304, "power", 0, 4, states_48, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\200\344\000\000"}, {305, "atom", 0, 11, states_49, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\000\200\344\000\000"}, {306, "listmaker", 0, 5, states_50, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\002\000"}, {307, "lambdef", 0, 5, states_51, ! "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000"}, {308, "trailer", 0, 7, states_52, ! "\000\000\001\000\000\000\000\000\100\000\000\000\000\000\000\200\000\000\000"}, {309, "subscriptlist", 0, 3, states_53, ! "\000\120\001\000\000\000\000\000\100\000\000\000\002\000\140\210\344\002\000"}, {310, "subscript", 0, 7, states_54, ! "\000\120\001\000\000\000\000\000\100\000\000\000\002\000\140\210\344\002\000"}, {311, "sliceop", 0, 3, states_55, ! "\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {312, "exprlist", 0, 3, states_56, ! "\000\020\001\000\000\000\000\000\000\000\000\000\000\000\140\210\344\000\000"}, {313, "testlist", 0, 3, states_57, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\002\000"}, {314, "dictmaker", 0, 5, states_58, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\002\000"}, {315, "classdef", 0, 8, states_59, ! "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\100\000"}, {316, "arglist", 0, 8, states_60, ! "\000\020\201\001\000\000\000\000\000\000\000\000\002\000\140\210\344\002\000"}, {317, "argument", 0, 4, states_61, ! "\000\020\001\000\000\000\000\000\000\000\000\000\002\000\140\210\344\002\000"}, {318, "list_iter", 0, 2, states_62, ! "\000\000\000\000\000\000\000\000\000\000\042\000\000\000\000\000\000\000\000"}, {319, "list_for", 0, 6, states_63, ! "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, {320, "list_if", 0, 4, states_64, ! "\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, }; ! static label labels[146] = { {0, "EMPTY"}, {256, 0}, {4, 0}, *************** *** 1608,1613 **** --- 1610,1616 ---- {45, 0}, {46, 0}, {47, 0}, + {49, 0}, {1, "print"}, {35, 0}, {1, "del"}, *************** *** 1680,1685 **** --- 1683,1689 ---- {303, 0}, {17, 0}, {24, 0}, + {48, 0}, {32, 0}, {304, 0}, {305, 0}, *************** *** 1707,1712 **** grammar _PyParser_Grammar = { 65, dfas, ! {144, labels}, 256 }; --- 1711,1716 ---- grammar _PyParser_Grammar = { 65, dfas, ! {146, labels}, 256 };