From be501ca2419a91546dea85ef4f36945545458589 Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Tue, 3 Mar 2020 14:25:44 -0800 Subject: [PATCH] bpo-39702: Relax grammar restrictions on decorators (PEP 614) (GH-18570) --- Grammar/Grammar | 2 +- Include/node.h | 1 - Lib/test/test_decorators.py | 30 +- Lib/test/test_grammar.py | 32 +- Lib/test/test_parser.py | 42 + .../2020-02-20-08-12-52.bpo-39702.4_AmyF.rst | 2 + Python/ast.c | 72 +- Python/graminit.c | 890 +++++++++--------- 8 files changed, 534 insertions(+), 537 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2020-02-20-08-12-52.bpo-39702.4_AmyF.rst diff --git a/Grammar/Grammar b/Grammar/Grammar index 21f7e1a8911..170518af74e 100644 --- a/Grammar/Grammar +++ b/Grammar/Grammar @@ -14,7 +14,7 @@ single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE file_input: (NEWLINE | stmt)* ENDMARKER eval_input: testlist NEWLINE* ENDMARKER -decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorator: '@' namedexpr_test NEWLINE decorators: decorator+ decorated: decorators (classdef | funcdef | async_funcdef) diff --git a/Include/node.h b/Include/node.h index 2b390740973..ca24f289085 100644 --- a/Include/node.h +++ b/Include/node.h @@ -31,7 +31,6 @@ PyAPI_FUNC(Py_ssize_t) _PyNode_SizeOf(node *n); #define NCH(n) ((n)->n_nchildren) #define CHILD(n, i) (&(n)->n_child[i]) -#define RCHILD(n, i) (CHILD(n, NCH(n) + i)) #define TYPE(n) ((n)->n_type) #define STR(n) ((n)->n_str) #define LINENO(n) ((n)->n_lineno) diff --git a/Lib/test/test_decorators.py b/Lib/test/test_decorators.py index 8953f648061..298979e509f 100644 --- a/Lib/test/test_decorators.py +++ b/Lib/test/test_decorators.py @@ -151,21 +151,18 @@ class TestDecorators(unittest.TestCase): self.assertEqual(counts['double'], 4) def test_errors(self): - # Test syntax restrictions - these are all compile-time errors: - # - for expr in [ "1+2", "x[3]", "(1, 2)" ]: - # Sanity check: is expr is a valid expression by itself? - compile(expr, "testexpr", "exec") - codestr = "@%s\ndef f(): pass" % expr - self.assertRaises(SyntaxError, compile, codestr, "test", "exec") + # Test SyntaxErrors: + for stmt in ("x,", "x, y", "x = y", "pass", "import sys"): + compile(stmt, "test", "exec") # Sanity check. + with self.assertRaises(SyntaxError): + compile(f"@{stmt}\ndef f(): pass", "test", "exec") - # You can't put multiple decorators on a single line: - # - self.assertRaises(SyntaxError, compile, - "@f1 @f2\ndef f(): pass", "test", "exec") - - # Test runtime errors + # Test TypeErrors that used to be SyntaxErrors: + for expr in ("1.+2j", "[1, 2][-1]", "(1, 2)", "True", "...", "None"): + compile(expr, "test", "eval") # Sanity check. + with self.assertRaises(TypeError): + exec(f"@{expr}\ndef f(): pass") def unimp(func): raise NotImplementedError @@ -179,6 +176,13 @@ class TestDecorators(unittest.TestCase): code = compile(codestr, "test", "exec") self.assertRaises(exc, eval, code, context) + def test_expressions(self): + for expr in ( + "(x,)", "(x, y)", "x := y", "(x := y)", "x @y", "(x @ y)", "x[0]", + "w[x].y.z", "w + x - (y + z)", "x(y)()(z)", "[w, x, y][z]", "x.y", + ): + compile(f"@{expr}\ndef f(): pass", "test", "exec") + def test_double(self): class C(object): @funcattrs(abc=1, xyz="haha") diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py index 2ed73e3ae81..922a5166ec1 100644 --- a/Lib/test/test_grammar.py +++ b/Lib/test/test_grammar.py @@ -460,7 +460,7 @@ class GrammarTests(unittest.TestCase): def test_funcdef(self): ### [decorators] 'def' NAME parameters ['->' test] ':' suite - ### decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE + ### decorator: '@' namedexpr_test NEWLINE ### decorators: decorator+ ### parameters: '(' [typedargslist] ')' ### typedargslist: ((tfpdef ['=' test] ',')* @@ -666,6 +666,20 @@ class GrammarTests(unittest.TestCase): def f(x) -> list: pass self.assertEqual(f.__annotations__, {'return': list}) + # Test expressions as decorators (PEP 614): + @False or null + def f(x): pass + @d := null + def f(x): pass + @lambda f: null(f) + def f(x): pass + @[..., null, ...][1] + def f(x): pass + @null(null)(null) + def f(x): pass + @[null][0].__call__.__call__ + def f(x): pass + # test closures with a variety of opargs closure = 1 def f(): return closure @@ -1515,13 +1529,27 @@ class GrammarTests(unittest.TestCase): def meth2(self, arg): pass def meth3(self, a1, a2): pass - # decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE + # decorator: '@' namedexpr_test NEWLINE # decorators: decorator+ # decorated: decorators (classdef | funcdef) def class_decorator(x): return x @class_decorator class G: pass + # Test expressions as decorators (PEP 614): + @False or class_decorator + class H: pass + @d := class_decorator + class I: pass + @lambda c: class_decorator(c) + class J: pass + @[..., class_decorator, ...][1] + class K: pass + @class_decorator(class_decorator)(class_decorator) + class L: pass + @[class_decorator][0].__call__.__call__ + class M: pass + def test_dictcomps(self): # dictorsetmaker: ( (test ':' test (comp_for | # (',' test ':' test)* [','])) | diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py index 7295f66d393..73178f3e775 100644 --- a/Lib/test/test_parser.py +++ b/Lib/test/test_parser.py @@ -226,6 +226,27 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase): self.check_suite("@funcattrs()\n" "def f(): pass") + self.check_suite("@False or x\n" + "def f(): pass") + self.check_suite("@d := x\n" + "def f(): pass") + self.check_suite("@lambda f: x(f)\n" + "def f(): pass") + self.check_suite("@[..., x, ...][1]\n" + "def f(): pass") + self.check_suite("@x(x)(x)\n" + "def f(): pass") + self.check_suite("@(x, x)\n" + "def f(): pass") + self.check_suite("@...\n" + "def f(): pass") + self.check_suite("@None\n" + "def f(): pass") + self.check_suite("@w @(x @y) @(z)\n" + "def f(): pass") + self.check_suite("@w[x].y.z\n" + "def f(): pass") + # keyword-only arguments self.check_suite("def f(*, a): pass") self.check_suite("def f(*, a = 5): pass") @@ -270,6 +291,27 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase): "@decorator2\n" "class foo():pass") + self.check_suite("@False or x\n" + "class C: pass") + self.check_suite("@d := x\n" + "class C: pass") + self.check_suite("@lambda f: x(f)\n" + "class C: pass") + self.check_suite("@[..., x, ...][1]\n" + "class C: pass") + self.check_suite("@x(x)(x)\n" + "class C: pass") + self.check_suite("@(x, x)\n" + "class C: pass") + self.check_suite("@...\n" + "class C: pass") + self.check_suite("@None\n" + "class C: pass") + self.check_suite("@w @(x @y) @(z)\n" + "class C: pass") + self.check_suite("@w[x].y.z\n" + "class C: pass") + def test_import_from_statement(self): self.check_suite("from sys.path import *") self.check_suite("from sys.path import dirname") diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-02-20-08-12-52.bpo-39702.4_AmyF.rst b/Misc/NEWS.d/next/Core and Builtins/2020-02-20-08-12-52.bpo-39702.4_AmyF.rst new file mode 100644 index 00000000000..58bafa15714 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-02-20-08-12-52.bpo-39702.4_AmyF.rst @@ -0,0 +1,2 @@ +Relax :term:`decorator` grammar restrictions to allow any valid expression +(:pep:`614`). diff --git a/Python/ast.c b/Python/ast.c index ad25565b7c7..0aed54c8fe2 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -1691,80 +1691,16 @@ ast_for_arguments(struct compiling *c, const node *n) return arguments(posonlyargs, posargs, vararg, kwonlyargs, kwdefaults, kwarg, posdefaults, c->c_arena); } -static expr_ty -ast_for_dotted_name(struct compiling *c, const node *n) -{ - expr_ty e; - identifier id; - int lineno, col_offset; - int i; - node *ch; - - REQ(n, dotted_name); - - lineno = LINENO(n); - col_offset = n->n_col_offset; - - ch = CHILD(n, 0); - id = NEW_IDENTIFIER(ch); - if (!id) - return NULL; - e = Name(id, Load, lineno, col_offset, - ch->n_end_lineno, ch->n_end_col_offset, c->c_arena); - if (!e) - return NULL; - - for (i = 2; i < NCH(n); i+=2) { - const node *child = CHILD(n, i); - id = NEW_IDENTIFIER(child); - if (!id) - return NULL; - e = Attribute(e, id, Load, lineno, col_offset, - child->n_end_lineno, child->n_end_col_offset, c->c_arena); - if (!e) - return NULL; - } - - return e; -} - static expr_ty ast_for_decorator(struct compiling *c, const node *n) { - /* decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE */ - expr_ty d = NULL; - expr_ty name_expr; + /* decorator: '@' namedexpr_test NEWLINE */ REQ(n, decorator); REQ(CHILD(n, 0), AT); - REQ(RCHILD(n, -1), NEWLINE); - - name_expr = ast_for_dotted_name(c, CHILD(n, 1)); - if (!name_expr) - return NULL; - - if (NCH(n) == 3) { /* No arguments */ - d = name_expr; - name_expr = NULL; - } - else if (NCH(n) == 5) { /* Call with no arguments */ - d = Call(name_expr, NULL, NULL, - name_expr->lineno, name_expr->col_offset, - CHILD(n, 3)->n_end_lineno, CHILD(n, 3)->n_end_col_offset, - c->c_arena); - if (!d) - return NULL; - name_expr = NULL; - } - else { - d = ast_for_call(c, CHILD(n, 3), name_expr, - CHILD(n, 1), CHILD(n, 2), CHILD(n, 4)); - if (!d) - return NULL; - name_expr = NULL; - } - - return d; + REQ(CHILD(n, 2), NEWLINE); + + return ast_for_expr(c, CHILD(n, 1)); } static asdl_seq* diff --git a/Python/graminit.c b/Python/graminit.c index 62d9ae207f7..b7aa52895f8 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -52,31 +52,17 @@ static const arc arcs_3_0[1] = { static const arc arcs_3_1[1] = { {49, 2}, }; -static const arc arcs_3_2[2] = { - {5, 3}, - {2, 4}, +static const arc arcs_3_2[1] = { + {2, 3}, }; -static const arc arcs_3_3[2] = { - {50, 5}, - {51, 6}, +static const arc arcs_3_3[1] = { + {0, 3}, }; -static const arc arcs_3_4[1] = { - {0, 4}, -}; -static const arc arcs_3_5[1] = { - {2, 4}, -}; -static const arc arcs_3_6[1] = { - {50, 5}, -}; -static state states_3[7] = { +static state states_3[4] = { {1, arcs_3_0}, {1, arcs_3_1}, - {2, arcs_3_2}, - {2, arcs_3_3}, - {1, arcs_3_4}, - {1, arcs_3_5}, - {1, arcs_3_6}, + {1, arcs_3_2}, + {1, arcs_3_3}, }; static const arc arcs_4_0[1] = { {48, 1}, @@ -90,12 +76,12 @@ static state states_4[2] = { {2, arcs_4_1}, }; static const arc arcs_5_0[1] = { - {52, 1}, + {50, 1}, }; static const arc arcs_5_1[3] = { + {52, 2}, + {53, 2}, {54, 2}, - {55, 2}, - {56, 2}, }; static const arc arcs_5_2[1] = { {0, 2}, @@ -109,7 +95,7 @@ static const arc arcs_6_0[1] = { {38, 1}, }; static const arc arcs_6_1[1] = { - {56, 2}, + {54, 2}, }; static const arc arcs_6_2[1] = { {0, 2}, @@ -126,24 +112,24 @@ static const arc arcs_7_1[1] = { {40, 2}, }; static const arc arcs_7_2[1] = { - {57, 3}, + {55, 3}, }; static const arc arcs_7_3[2] = { - {58, 4}, - {59, 5}, + {56, 4}, + {57, 5}, }; static const arc arcs_7_4[1] = { - {60, 6}, + {58, 6}, }; static const arc arcs_7_5[2] = { - {61, 7}, - {62, 8}, + {59, 7}, + {60, 8}, }; static const arc arcs_7_6[1] = { - {59, 5}, + {57, 5}, }; static const arc arcs_7_7[1] = { - {62, 8}, + {60, 8}, }; static const arc arcs_7_8[1] = { {0, 8}, @@ -163,14 +149,14 @@ static const arc arcs_8_0[1] = { {5, 1}, }; static const arc arcs_8_1[2] = { - {50, 2}, - {63, 3}, + {61, 2}, + {62, 3}, }; static const arc arcs_8_2[1] = { {0, 2}, }; static const arc arcs_8_3[1] = { - {50, 2}, + {61, 2}, }; static state states_8[4] = { {1, arcs_8_0}, @@ -180,217 +166,217 @@ static state states_8[4] = { }; static const arc arcs_9_0[3] = { {6, 1}, - {64, 2}, - {65, 3}, + {63, 2}, + {64, 3}, }; static const arc arcs_9_1[4] = { - {66, 4}, - {61, 5}, - {65, 6}, + {65, 4}, + {59, 5}, + {64, 6}, {0, 1}, }; static const arc arcs_9_2[1] = { - {65, 7}, + {64, 7}, }; static const arc arcs_9_3[4] = { - {66, 8}, - {67, 9}, - {61, 5}, + {65, 8}, + {66, 9}, + {59, 5}, {0, 3}, }; static const arc arcs_9_4[4] = { - {64, 2}, - {61, 10}, - {65, 11}, + {63, 2}, + {59, 10}, + {64, 11}, {0, 4}, }; static const arc arcs_9_5[1] = { {0, 5}, }; static const arc arcs_9_6[3] = { - {66, 4}, - {61, 5}, + {65, 4}, + {59, 5}, {0, 6}, }; static const arc arcs_9_7[3] = { - {66, 12}, - {61, 5}, + {65, 12}, + {59, 5}, {0, 7}, }; static const arc arcs_9_8[6] = { {6, 13}, - {64, 2}, - {68, 14}, - {61, 15}, - {65, 3}, + {63, 2}, + {67, 14}, + {59, 15}, + {64, 3}, {0, 8}, }; static const arc arcs_9_9[1] = { - {60, 16}, + {58, 16}, }; static const arc arcs_9_10[3] = { - {64, 2}, - {65, 11}, + {63, 2}, + {64, 11}, {0, 10}, }; static const arc arcs_9_11[4] = { - {66, 4}, - {67, 17}, - {61, 5}, + {65, 4}, + {66, 17}, + {59, 5}, {0, 11}, }; static const arc arcs_9_12[2] = { - {61, 5}, + {59, 5}, {0, 12}, }; static const arc arcs_9_13[4] = { - {66, 18}, - {61, 5}, - {65, 19}, + {65, 18}, + {59, 5}, + {64, 19}, {0, 13}, }; static const arc arcs_9_14[2] = { - {66, 20}, + {65, 20}, {0, 14}, }; static const arc arcs_9_15[5] = { {6, 13}, - {64, 2}, - {68, 14}, - {65, 3}, + {63, 2}, + {67, 14}, + {64, 3}, {0, 15}, }; static const arc arcs_9_16[3] = { - {66, 8}, - {61, 5}, + {65, 8}, + {59, 5}, {0, 16}, }; static const arc arcs_9_17[1] = { - {60, 6}, + {58, 6}, }; static const arc arcs_9_18[4] = { - {64, 2}, - {61, 21}, - {65, 22}, + {63, 2}, + {59, 21}, + {64, 22}, {0, 18}, }; static const arc arcs_9_19[3] = { - {66, 18}, - {61, 5}, + {65, 18}, + {59, 5}, {0, 19}, }; static const arc arcs_9_20[5] = { {6, 23}, - {64, 2}, - {61, 24}, - {65, 25}, + {63, 2}, + {59, 24}, + {64, 25}, {0, 20}, }; static const arc arcs_9_21[3] = { - {64, 2}, - {65, 22}, + {63, 2}, + {64, 22}, {0, 21}, }; static const arc arcs_9_22[4] = { - {66, 18}, - {67, 26}, - {61, 5}, + {65, 18}, + {66, 26}, + {59, 5}, {0, 22}, }; static const arc arcs_9_23[4] = { - {66, 27}, - {61, 5}, - {65, 28}, + {65, 27}, + {59, 5}, + {64, 28}, {0, 23}, }; static const arc arcs_9_24[1] = { - {65, 25}, + {64, 25}, }; static const arc arcs_9_25[4] = { - {66, 29}, - {67, 30}, - {61, 5}, + {65, 29}, + {66, 30}, + {59, 5}, {0, 25}, }; static const arc arcs_9_26[1] = { - {60, 19}, + {58, 19}, }; static const arc arcs_9_27[4] = { - {64, 2}, - {61, 31}, - {65, 32}, + {63, 2}, + {59, 31}, + {64, 32}, {0, 27}, }; static const arc arcs_9_28[3] = { - {66, 27}, - {61, 5}, + {65, 27}, + {59, 5}, {0, 28}, }; static const arc arcs_9_29[5] = { {6, 33}, - {64, 2}, - {61, 34}, - {65, 25}, + {63, 2}, + {59, 34}, + {64, 25}, {0, 29}, }; static const arc arcs_9_30[1] = { - {60, 35}, + {58, 35}, }; static const arc arcs_9_31[3] = { - {64, 2}, - {65, 32}, + {63, 2}, + {64, 32}, {0, 31}, }; static const arc arcs_9_32[4] = { - {66, 27}, - {67, 36}, - {61, 5}, + {65, 27}, + {66, 36}, + {59, 5}, {0, 32}, }; static const arc arcs_9_33[4] = { - {66, 37}, - {61, 5}, - {65, 38}, + {65, 37}, + {59, 5}, + {64, 38}, {0, 33}, }; static const arc arcs_9_34[4] = { {6, 33}, - {64, 2}, - {65, 25}, + {63, 2}, + {64, 25}, {0, 34}, }; static const arc arcs_9_35[3] = { - {66, 29}, - {61, 5}, + {65, 29}, + {59, 5}, {0, 35}, }; static const arc arcs_9_36[1] = { - {60, 28}, + {58, 28}, }; static const arc arcs_9_37[4] = { - {64, 2}, - {61, 39}, - {65, 40}, + {63, 2}, + {59, 39}, + {64, 40}, {0, 37}, }; static const arc arcs_9_38[3] = { - {66, 37}, - {61, 5}, + {65, 37}, + {59, 5}, {0, 38}, }; static const arc arcs_9_39[3] = { - {64, 2}, - {65, 40}, + {63, 2}, + {64, 40}, {0, 39}, }; static const arc arcs_9_40[4] = { - {66, 37}, - {67, 41}, - {61, 5}, + {65, 37}, + {66, 41}, + {59, 5}, {0, 40}, }; static const arc arcs_9_41[1] = { - {60, 38}, + {58, 38}, }; static state states_9[42] = { {3, arcs_9_0}, @@ -440,11 +426,11 @@ static const arc arcs_10_0[1] = { {40, 1}, }; static const arc arcs_10_1[2] = { - {59, 2}, + {57, 2}, {0, 1}, }; static const arc arcs_10_2[1] = { - {60, 3}, + {58, 3}, }; static const arc arcs_10_3[1] = { {0, 3}, @@ -457,153 +443,153 @@ static state states_10[4] = { }; static const arc arcs_11_0[3] = { {6, 1}, - {64, 2}, - {70, 3}, + {63, 2}, + {69, 3}, }; static const arc arcs_11_1[3] = { - {66, 4}, - {70, 5}, + {65, 4}, + {69, 5}, {0, 1}, }; static const arc arcs_11_2[1] = { - {70, 6}, + {69, 6}, }; static const arc arcs_11_3[3] = { - {66, 7}, - {67, 8}, + {65, 7}, + {66, 8}, {0, 3}, }; static const arc arcs_11_4[3] = { - {64, 2}, - {70, 9}, + {63, 2}, + {69, 9}, {0, 4}, }; static const arc arcs_11_5[2] = { - {66, 4}, + {65, 4}, {0, 5}, }; static const arc arcs_11_6[2] = { - {66, 10}, + {65, 10}, {0, 6}, }; static const arc arcs_11_7[5] = { {6, 11}, - {64, 2}, - {68, 12}, - {70, 3}, + {63, 2}, + {67, 12}, + {69, 3}, {0, 7}, }; static const arc arcs_11_8[1] = { - {60, 13}, + {58, 13}, }; static const arc arcs_11_9[3] = { - {66, 4}, - {67, 14}, + {65, 4}, + {66, 14}, {0, 9}, }; static const arc arcs_11_10[1] = { {0, 10}, }; static const arc arcs_11_11[3] = { - {66, 15}, - {70, 16}, + {65, 15}, + {69, 16}, {0, 11}, }; static const arc arcs_11_12[2] = { - {66, 17}, + {65, 17}, {0, 12}, }; static const arc arcs_11_13[2] = { - {66, 7}, + {65, 7}, {0, 13}, }; static const arc arcs_11_14[1] = { - {60, 5}, + {58, 5}, }; static const arc arcs_11_15[3] = { - {64, 2}, - {70, 18}, + {63, 2}, + {69, 18}, {0, 15}, }; static const arc arcs_11_16[2] = { - {66, 15}, + {65, 15}, {0, 16}, }; static const arc arcs_11_17[4] = { {6, 19}, - {64, 2}, - {70, 20}, + {63, 2}, + {69, 20}, {0, 17}, }; static const arc arcs_11_18[3] = { - {66, 15}, - {67, 21}, + {65, 15}, + {66, 21}, {0, 18}, }; static const arc arcs_11_19[3] = { - {66, 22}, - {70, 23}, + {65, 22}, + {69, 23}, {0, 19}, }; static const arc arcs_11_20[3] = { - {66, 24}, - {67, 25}, + {65, 24}, + {66, 25}, {0, 20}, }; static const arc arcs_11_21[1] = { - {60, 16}, + {58, 16}, }; static const arc arcs_11_22[3] = { - {64, 2}, - {70, 26}, + {63, 2}, + {69, 26}, {0, 22}, }; static const arc arcs_11_23[2] = { - {66, 22}, + {65, 22}, {0, 23}, }; static const arc arcs_11_24[4] = { {6, 27}, - {64, 2}, - {70, 20}, + {63, 2}, + {69, 20}, {0, 24}, }; static const arc arcs_11_25[1] = { - {60, 28}, + {58, 28}, }; static const arc arcs_11_26[3] = { - {66, 22}, - {67, 29}, + {65, 22}, + {66, 29}, {0, 26}, }; static const arc arcs_11_27[3] = { - {66, 30}, - {70, 31}, + {65, 30}, + {69, 31}, {0, 27}, }; static const arc arcs_11_28[2] = { - {66, 24}, + {65, 24}, {0, 28}, }; static const arc arcs_11_29[1] = { - {60, 23}, + {58, 23}, }; static const arc arcs_11_30[3] = { - {64, 2}, - {70, 32}, + {63, 2}, + {69, 32}, {0, 30}, }; static const arc arcs_11_31[2] = { - {66, 30}, + {65, 30}, {0, 31}, }; static const arc arcs_11_32[3] = { - {66, 30}, - {67, 33}, + {65, 30}, + {66, 33}, {0, 32}, }; static const arc arcs_11_33[1] = { - {60, 31}, + {58, 31}, }; static state states_11[34] = { {3, arcs_11_0}, @@ -663,15 +649,15 @@ static state states_13[2] = { {1, arcs_13_1}, }; static const arc arcs_14_0[1] = { - {71, 1}, + {70, 1}, }; static const arc arcs_14_1[2] = { - {72, 2}, + {71, 2}, {2, 3}, }; static const arc arcs_14_2[2] = { {2, 3}, - {71, 1}, + {70, 1}, }; static const arc arcs_14_3[1] = { {0, 3}, @@ -683,6 +669,7 @@ static state states_14[4] = { {1, arcs_14_3}, }; static const arc arcs_15_0[8] = { + {72, 1}, {73, 1}, {74, 1}, {75, 1}, @@ -690,7 +677,6 @@ static const arc arcs_15_0[8] = { {77, 1}, {78, 1}, {79, 1}, - {80, 1}, }; static const arc arcs_15_1[1] = { {0, 1}, @@ -700,28 +686,28 @@ static state states_15[2] = { {1, arcs_15_1}, }; static const arc arcs_16_0[1] = { - {81, 1}, + {80, 1}, }; static const arc arcs_16_1[4] = { - {67, 2}, - {82, 3}, - {83, 4}, + {66, 2}, + {81, 3}, + {82, 4}, {0, 1}, }; static const arc arcs_16_2[2] = { - {81, 5}, - {84, 5}, + {80, 5}, + {83, 5}, }; static const arc arcs_16_3[1] = { {0, 3}, }; static const arc arcs_16_4[2] = { {47, 3}, - {84, 3}, + {83, 3}, }; static const arc arcs_16_5[3] = { - {67, 2}, - {61, 3}, + {66, 2}, + {59, 3}, {0, 5}, }; static state states_16[6] = { @@ -733,18 +719,18 @@ static state states_16[6] = { {3, arcs_16_5}, }; static const arc arcs_17_0[1] = { - {59, 1}, + {57, 1}, }; static const arc arcs_17_1[1] = { - {60, 2}, + {58, 2}, }; static const arc arcs_17_2[2] = { - {67, 3}, + {66, 3}, {0, 2}, }; static const arc arcs_17_3[2] = { - {81, 4}, - {84, 4}, + {80, 4}, + {83, 4}, }; static const arc arcs_17_4[1] = { {0, 4}, @@ -757,16 +743,16 @@ static state states_17[5] = { {1, arcs_17_4}, }; static const arc arcs_18_0[2] = { - {85, 1}, - {60, 1}, + {84, 1}, + {58, 1}, }; static const arc arcs_18_1[2] = { - {66, 2}, + {65, 2}, {0, 1}, }; static const arc arcs_18_2[3] = { - {85, 1}, - {60, 1}, + {84, 1}, + {58, 1}, {0, 2}, }; static state states_18[3] = { @@ -775,6 +761,7 @@ static state states_18[3] = { {3, arcs_18_2}, }; static const arc arcs_19_0[13] = { + {85, 1}, {86, 1}, {87, 1}, {88, 1}, @@ -787,7 +774,6 @@ static const arc arcs_19_0[13] = { {95, 1}, {96, 1}, {97, 1}, - {98, 1}, }; static const arc arcs_19_1[1] = { {0, 1}, @@ -800,7 +786,7 @@ static const arc arcs_20_0[1] = { {20, 1}, }; static const arc arcs_20_1[1] = { - {99, 2}, + {98, 2}, }; static const arc arcs_20_2[1] = { {0, 2}, @@ -821,11 +807,11 @@ static state states_21[2] = { {1, arcs_21_1}, }; static const arc arcs_22_0[5] = { + {99, 1}, {100, 1}, {101, 1}, {102, 1}, {103, 1}, - {104, 1}, }; static const arc arcs_22_1[1] = { {0, 1}, @@ -858,7 +844,7 @@ static const arc arcs_25_0[1] = { {31, 1}, }; static const arc arcs_25_1[2] = { - {81, 2}, + {80, 2}, {0, 1}, }; static const arc arcs_25_2[1] = { @@ -870,7 +856,7 @@ static state states_25[3] = { {1, arcs_25_2}, }; static const arc arcs_26_0[1] = { - {84, 1}, + {83, 1}, }; static const arc arcs_26_1[1] = { {0, 1}, @@ -883,7 +869,7 @@ static const arc arcs_27_0[1] = { {30, 1}, }; static const arc arcs_27_1[2] = { - {60, 2}, + {58, 2}, {0, 1}, }; static const arc arcs_27_2[2] = { @@ -891,7 +877,7 @@ static const arc arcs_27_2[2] = { {0, 2}, }; static const arc arcs_27_3[1] = { - {60, 4}, + {58, 4}, }; static const arc arcs_27_4[1] = { {0, 4}, @@ -904,8 +890,8 @@ static state states_27[5] = { {1, arcs_27_4}, }; static const arc arcs_28_0[2] = { + {104, 1}, {105, 1}, - {106, 1}, }; static const arc arcs_28_1[1] = { {0, 1}, @@ -918,7 +904,7 @@ static const arc arcs_29_0[1] = { {25, 1}, }; static const arc arcs_29_1[1] = { - {107, 2}, + {106, 2}, }; static const arc arcs_29_2[1] = { {0, 2}, @@ -932,15 +918,15 @@ static const arc arcs_30_0[1] = { {22, 1}, }; static const arc arcs_30_1[3] = { - {108, 2}, + {107, 2}, {9, 2}, - {49, 3}, + {108, 3}, }; static const arc arcs_30_2[4] = { - {108, 2}, + {107, 2}, {9, 2}, {25, 4}, - {49, 3}, + {108, 3}, }; static const arc arcs_30_3[1] = { {25, 4}, @@ -957,7 +943,7 @@ static const arc arcs_30_6[1] = { {0, 6}, }; static const arc arcs_30_7[1] = { - {50, 6}, + {61, 6}, }; static state states_30[8] = { {1, arcs_30_0}, @@ -989,7 +975,7 @@ static state states_31[4] = { {1, arcs_31_3}, }; static const arc arcs_32_0[1] = { - {49, 1}, + {108, 1}, }; static const arc arcs_32_1[2] = { {111, 2}, @@ -1011,7 +997,7 @@ static const arc arcs_33_0[1] = { {110, 1}, }; static const arc arcs_33_1[2] = { - {66, 2}, + {65, 2}, {0, 1}, }; static const arc arcs_33_2[2] = { @@ -1027,7 +1013,7 @@ static const arc arcs_34_0[1] = { {112, 1}, }; static const arc arcs_34_1[2] = { - {66, 0}, + {65, 0}, {0, 1}, }; static state states_34[2] = { @@ -1038,7 +1024,7 @@ static const arc arcs_35_0[1] = { {40, 1}, }; static const arc arcs_35_1[2] = { - {108, 0}, + {107, 0}, {0, 1}, }; static state states_35[2] = { @@ -1052,7 +1038,7 @@ static const arc arcs_36_1[1] = { {40, 2}, }; static const arc arcs_36_2[2] = { - {66, 1}, + {65, 1}, {0, 2}, }; static state states_36[3] = { @@ -1067,7 +1053,7 @@ static const arc arcs_37_1[1] = { {40, 2}, }; static const arc arcs_37_2[2] = { - {66, 1}, + {65, 1}, {0, 2}, }; static state states_37[3] = { @@ -1079,14 +1065,14 @@ static const arc arcs_38_0[1] = { {15, 1}, }; static const arc arcs_38_1[1] = { - {60, 2}, + {58, 2}, }; static const arc arcs_38_2[2] = { - {66, 3}, + {65, 3}, {0, 2}, }; static const arc arcs_38_3[1] = { - {60, 4}, + {58, 4}, }; static const arc arcs_38_4[1] = { {0, 4}, @@ -1100,10 +1086,10 @@ static state states_38[5] = { }; static const arc arcs_39_0[9] = { {113, 1}, - {55, 1}, {53, 1}, + {51, 1}, {114, 1}, - {56, 1}, + {54, 1}, {115, 1}, {116, 1}, {117, 1}, @@ -1121,7 +1107,7 @@ static const arc arcs_40_0[1] = { }; static const arc arcs_40_1[3] = { {114, 2}, - {56, 2}, + {54, 2}, {118, 2}, }; static const arc arcs_40_2[1] = { @@ -1136,24 +1122,24 @@ static const arc arcs_41_0[1] = { {24, 1}, }; static const arc arcs_41_1[1] = { - {119, 2}, + {49, 2}, }; static const arc arcs_41_2[1] = { - {59, 3}, + {57, 3}, }; static const arc arcs_41_3[1] = { - {120, 4}, + {119, 4}, }; static const arc arcs_41_4[3] = { - {121, 1}, - {122, 5}, + {120, 1}, + {121, 5}, {0, 4}, }; static const arc arcs_41_5[1] = { - {59, 6}, + {57, 6}, }; static const arc arcs_41_6[1] = { - {120, 7}, + {119, 7}, }; static const arc arcs_41_7[1] = { {0, 7}, @@ -1172,23 +1158,23 @@ static const arc arcs_42_0[1] = { {33, 1}, }; static const arc arcs_42_1[1] = { - {119, 2}, + {49, 2}, }; static const arc arcs_42_2[1] = { - {59, 3}, + {57, 3}, }; static const arc arcs_42_3[1] = { - {120, 4}, + {119, 4}, }; static const arc arcs_42_4[2] = { - {122, 5}, + {121, 5}, {0, 4}, }; static const arc arcs_42_5[1] = { - {59, 6}, + {57, 6}, }; static const arc arcs_42_6[1] = { - {120, 7}, + {119, 7}, }; static const arc arcs_42_7[1] = { {0, 7}, @@ -1207,33 +1193,33 @@ static const arc arcs_43_0[1] = { {21, 1}, }; static const arc arcs_43_1[1] = { - {99, 2}, + {98, 2}, }; static const arc arcs_43_2[1] = { - {123, 3}, + {122, 3}, }; static const arc arcs_43_3[1] = { {47, 4}, }; static const arc arcs_43_4[1] = { - {59, 5}, + {57, 5}, }; static const arc arcs_43_5[2] = { - {61, 6}, - {120, 7}, + {59, 6}, + {119, 7}, }; static const arc arcs_43_6[1] = { - {120, 7}, + {119, 7}, }; static const arc arcs_43_7[2] = { - {122, 8}, + {121, 8}, {0, 7}, }; static const arc arcs_43_8[1] = { - {59, 9}, + {57, 9}, }; static const arc arcs_43_9[1] = { - {120, 10}, + {119, 10}, }; static const arc arcs_43_10[1] = { {0, 10}, @@ -1255,44 +1241,44 @@ static const arc arcs_44_0[1] = { {32, 1}, }; static const arc arcs_44_1[1] = { - {59, 2}, + {57, 2}, }; static const arc arcs_44_2[1] = { - {120, 3}, + {119, 3}, }; static const arc arcs_44_3[2] = { - {124, 4}, - {125, 5}, + {123, 4}, + {124, 5}, }; static const arc arcs_44_4[1] = { - {59, 6}, + {57, 6}, }; static const arc arcs_44_5[1] = { - {59, 7}, + {57, 7}, }; static const arc arcs_44_6[1] = { - {120, 8}, + {119, 8}, }; static const arc arcs_44_7[1] = { - {120, 9}, + {119, 9}, }; static const arc arcs_44_8[1] = { {0, 8}, }; static const arc arcs_44_9[4] = { - {122, 10}, - {124, 4}, - {125, 5}, + {121, 10}, + {123, 4}, + {124, 5}, {0, 9}, }; static const arc arcs_44_10[1] = { - {59, 11}, + {57, 11}, }; static const arc arcs_44_11[1] = { - {120, 12}, + {119, 12}, }; static const arc arcs_44_12[2] = { - {124, 4}, + {123, 4}, {0, 12}, }; static state states_44[13] = { @@ -1314,18 +1300,18 @@ static const arc arcs_45_0[1] = { {34, 1}, }; static const arc arcs_45_1[1] = { - {126, 2}, + {125, 2}, }; static const arc arcs_45_2[2] = { - {66, 1}, - {59, 3}, + {65, 1}, + {57, 3}, }; static const arc arcs_45_3[2] = { - {61, 4}, - {120, 5}, + {59, 4}, + {119, 5}, }; static const arc arcs_45_4[1] = { - {120, 5}, + {119, 5}, }; static const arc arcs_45_5[1] = { {0, 5}, @@ -1339,14 +1325,14 @@ static state states_45[6] = { {1, arcs_45_5}, }; static const arc arcs_46_0[1] = { - {60, 1}, + {58, 1}, }; static const arc arcs_46_1[2] = { {111, 2}, {0, 1}, }; static const arc arcs_46_2[1] = { - {127, 3}, + {126, 3}, }; static const arc arcs_46_3[1] = { {0, 3}, @@ -1358,10 +1344,10 @@ static state states_46[4] = { {1, arcs_46_3}, }; static const arc arcs_47_0[1] = { - {128, 1}, + {127, 1}, }; static const arc arcs_47_1[2] = { - {60, 2}, + {58, 2}, {0, 1}, }; static const arc arcs_47_2[2] = { @@ -1386,7 +1372,7 @@ static const arc arcs_48_0[2] = { {4, 2}, }; static const arc arcs_48_1[1] = { - {129, 3}, + {128, 3}, }; static const arc arcs_48_2[1] = { {0, 2}, @@ -1395,7 +1381,7 @@ static const arc arcs_48_3[1] = { {45, 4}, }; static const arc arcs_48_4[2] = { - {130, 2}, + {129, 2}, {45, 4}, }; static state states_48[5] = { @@ -1406,14 +1392,14 @@ static state states_48[5] = { {2, arcs_48_4}, }; static const arc arcs_49_0[1] = { - {60, 1}, + {58, 1}, }; static const arc arcs_49_1[2] = { - {131, 2}, + {130, 2}, {0, 1}, }; static const arc arcs_49_2[1] = { - {60, 3}, + {58, 3}, }; static const arc arcs_49_3[1] = { {0, 3}, @@ -1425,8 +1411,8 @@ static state states_49[4] = { {1, arcs_49_3}, }; static const arc arcs_50_0[2] = { - {132, 1}, - {133, 2}, + {131, 1}, + {132, 2}, }; static const arc arcs_50_1[1] = { {0, 1}, @@ -1436,13 +1422,13 @@ static const arc arcs_50_2[2] = { {0, 2}, }; static const arc arcs_50_3[1] = { - {133, 4}, + {132, 4}, }; static const arc arcs_50_4[1] = { - {122, 5}, + {121, 5}, }; static const arc arcs_50_5[1] = { - {60, 1}, + {58, 1}, }; static state states_50[6] = { {2, arcs_50_0}, @@ -1453,8 +1439,8 @@ static state states_50[6] = { {1, arcs_50_5}, }; static const arc arcs_51_0[2] = { - {135, 1}, - {133, 1}, + {134, 1}, + {132, 1}, }; static const arc arcs_51_1[1] = { {0, 1}, @@ -1467,14 +1453,14 @@ static const arc arcs_52_0[1] = { {26, 1}, }; static const arc arcs_52_1[2] = { - {59, 2}, - {69, 3}, + {57, 2}, + {68, 3}, }; static const arc arcs_52_2[1] = { - {60, 4}, + {58, 4}, }; static const arc arcs_52_3[1] = { - {59, 2}, + {57, 2}, }; static const arc arcs_52_4[1] = { {0, 4}, @@ -1490,14 +1476,14 @@ static const arc arcs_53_0[1] = { {26, 1}, }; static const arc arcs_53_1[2] = { - {59, 2}, - {69, 3}, + {57, 2}, + {68, 3}, }; static const arc arcs_53_2[1] = { - {134, 4}, + {133, 4}, }; static const arc arcs_53_3[1] = { - {59, 2}, + {57, 2}, }; static const arc arcs_53_4[1] = { {0, 4}, @@ -1510,10 +1496,10 @@ static state states_53[5] = { {1, arcs_53_4}, }; static const arc arcs_54_0[1] = { - {136, 1}, + {135, 1}, }; static const arc arcs_54_1[2] = { - {137, 0}, + {136, 0}, {0, 1}, }; static state states_54[2] = { @@ -1521,10 +1507,10 @@ static state states_54[2] = { {2, arcs_54_1}, }; static const arc arcs_55_0[1] = { - {138, 1}, + {137, 1}, }; static const arc arcs_55_1[2] = { - {139, 0}, + {138, 0}, {0, 1}, }; static state states_55[2] = { @@ -1533,10 +1519,10 @@ static state states_55[2] = { }; static const arc arcs_56_0[2] = { {28, 1}, - {140, 2}, + {139, 2}, }; static const arc arcs_56_1[1] = { - {138, 2}, + {137, 2}, }; static const arc arcs_56_2[1] = { {0, 2}, @@ -1547,10 +1533,10 @@ static state states_56[3] = { {1, arcs_56_2}, }; static const arc arcs_57_0[1] = { - {127, 1}, + {126, 1}, }; static const arc arcs_57_1[2] = { - {141, 0}, + {140, 0}, {0, 1}, }; static state states_57[2] = { @@ -1558,15 +1544,15 @@ static state states_57[2] = { {2, arcs_57_1}, }; static const arc arcs_58_0[10] = { + {141, 1}, {142, 1}, {143, 1}, + {141, 1}, {144, 1}, - {142, 1}, {145, 1}, {146, 1}, - {147, 1}, - {123, 1}, - {148, 2}, + {122, 1}, + {147, 2}, {28, 3}, }; static const arc arcs_58_1[1] = { @@ -1577,7 +1563,7 @@ static const arc arcs_58_2[2] = { {0, 2}, }; static const arc arcs_58_3[1] = { - {123, 1}, + {122, 1}, }; static state states_58[4] = { {10, arcs_58_0}, @@ -1589,7 +1575,7 @@ static const arc arcs_59_0[1] = { {6, 1}, }; static const arc arcs_59_1[1] = { - {127, 2}, + {126, 2}, }; static const arc arcs_59_2[1] = { {0, 2}, @@ -1600,10 +1586,10 @@ static state states_59[3] = { {1, arcs_59_2}, }; static const arc arcs_60_0[1] = { - {149, 1}, + {148, 1}, }; static const arc arcs_60_1[2] = { - {150, 0}, + {149, 0}, {0, 1}, }; static state states_60[2] = { @@ -1611,10 +1597,10 @@ static state states_60[2] = { {2, arcs_60_1}, }; static const arc arcs_61_0[1] = { - {151, 1}, + {150, 1}, }; static const arc arcs_61_1[2] = { - {152, 0}, + {151, 0}, {0, 1}, }; static state states_61[2] = { @@ -1622,10 +1608,10 @@ static state states_61[2] = { {2, arcs_61_1}, }; static const arc arcs_62_0[1] = { - {153, 1}, + {152, 1}, }; static const arc arcs_62_1[2] = { - {154, 0}, + {153, 0}, {0, 1}, }; static state states_62[2] = { @@ -1633,11 +1619,11 @@ static state states_62[2] = { {2, arcs_62_1}, }; static const arc arcs_63_0[1] = { - {155, 1}, + {154, 1}, }; static const arc arcs_63_1[3] = { + {155, 0}, {156, 0}, - {157, 0}, {0, 1}, }; static state states_63[2] = { @@ -1645,7 +1631,7 @@ static state states_63[2] = { {3, arcs_63_1}, }; static const arc arcs_64_0[1] = { - {158, 1}, + {157, 1}, }; static const arc arcs_64_1[3] = { {7, 0}, @@ -1657,13 +1643,13 @@ static state states_64[2] = { {3, arcs_64_1}, }; static const arc arcs_65_0[1] = { - {159, 1}, + {158, 1}, }; static const arc arcs_65_1[6] = { - {160, 0}, + {159, 0}, {6, 0}, - {68, 0}, - {161, 0}, + {67, 0}, + {160, 0}, {10, 0}, {0, 1}, }; @@ -1675,10 +1661,10 @@ static const arc arcs_66_0[4] = { {7, 1}, {8, 1}, {37, 1}, - {162, 2}, + {161, 2}, }; static const arc arcs_66_1[1] = { - {159, 2}, + {158, 2}, }; static const arc arcs_66_2[1] = { {0, 2}, @@ -1689,14 +1675,14 @@ static state states_66[3] = { {1, arcs_66_2}, }; static const arc arcs_67_0[1] = { - {163, 1}, + {162, 1}, }; static const arc arcs_67_1[2] = { - {64, 2}, + {63, 2}, {0, 1}, }; static const arc arcs_67_2[1] = { - {159, 3}, + {158, 3}, }; static const arc arcs_67_3[1] = { {0, 3}, @@ -1709,13 +1695,13 @@ static state states_67[4] = { }; static const arc arcs_68_0[2] = { {39, 1}, - {164, 2}, + {163, 2}, }; static const arc arcs_68_1[1] = { - {164, 2}, + {163, 2}, }; static const arc arcs_68_2[2] = { - {165, 2}, + {164, 2}, {0, 2}, }; static state states_68[3] = { @@ -1736,33 +1722,33 @@ static const arc arcs_69_0[10] = { {42, 5}, }; static const arc arcs_69_1[3] = { - {50, 2}, - {166, 6}, - {84, 6}, + {61, 2}, + {165, 6}, + {83, 6}, }; static const arc arcs_69_2[1] = { {0, 2}, }; static const arc arcs_69_3[2] = { - {167, 2}, - {166, 7}, + {166, 2}, + {165, 7}, }; static const arc arcs_69_4[2] = { - {168, 2}, - {169, 8}, + {167, 2}, + {168, 8}, }; static const arc arcs_69_5[2] = { {42, 5}, {0, 5}, }; static const arc arcs_69_6[1] = { - {50, 2}, + {61, 2}, }; static const arc arcs_69_7[1] = { - {167, 2}, + {166, 2}, }; static const arc arcs_69_8[1] = { - {168, 2}, + {167, 2}, }; static state states_69[9] = { {10, arcs_69_0}, @@ -1776,24 +1762,24 @@ static state states_69[9] = { {1, arcs_69_8}, }; static const arc arcs_70_0[2] = { - {119, 1}, - {85, 1}, + {49, 1}, + {84, 1}, }; static const arc arcs_70_1[3] = { - {66, 2}, - {170, 3}, + {65, 2}, + {169, 3}, {0, 1}, }; static const arc arcs_70_2[3] = { - {119, 4}, - {85, 4}, + {49, 4}, + {84, 4}, {0, 2}, }; static const arc arcs_70_3[1] = { {0, 3}, }; static const arc arcs_70_4[2] = { - {66, 2}, + {65, 2}, {0, 4}, }; static state states_70[5] = { @@ -1805,12 +1791,12 @@ static state states_70[5] = { }; static const arc arcs_71_0[3] = { {5, 1}, - {108, 2}, + {107, 2}, {14, 3}, }; static const arc arcs_71_1[2] = { - {50, 4}, - {51, 5}, + {61, 4}, + {170, 5}, }; static const arc arcs_71_2[1] = { {40, 4}, @@ -1822,10 +1808,10 @@ static const arc arcs_71_4[1] = { {0, 4}, }; static const arc arcs_71_5[1] = { - {50, 4}, + {61, 4}, }; static const arc arcs_71_6[1] = { - {167, 4}, + {166, 4}, }; static state states_71[7] = { {3, arcs_71_0}, @@ -1840,7 +1826,7 @@ static const arc arcs_72_0[1] = { {172, 1}, }; static const arc arcs_72_1[2] = { - {66, 2}, + {65, 2}, {0, 1}, }; static const arc arcs_72_2[2] = { @@ -1853,16 +1839,16 @@ static state states_72[3] = { {2, arcs_72_2}, }; static const arc arcs_73_0[2] = { - {59, 1}, - {60, 2}, + {57, 1}, + {58, 2}, }; static const arc arcs_73_1[3] = { {173, 3}, - {60, 4}, + {58, 4}, {0, 1}, }; static const arc arcs_73_2[2] = { - {59, 1}, + {57, 1}, {0, 2}, }; static const arc arcs_73_3[1] = { @@ -1880,10 +1866,10 @@ static state states_73[5] = { {2, arcs_73_4}, }; static const arc arcs_74_0[1] = { - {59, 1}, + {57, 1}, }; static const arc arcs_74_1[2] = { - {60, 2}, + {58, 2}, {0, 1}, }; static const arc arcs_74_2[1] = { @@ -1895,16 +1881,16 @@ static state states_74[3] = { {1, arcs_74_2}, }; static const arc arcs_75_0[2] = { - {127, 1}, - {85, 1}, + {126, 1}, + {84, 1}, }; static const arc arcs_75_1[2] = { - {66, 2}, + {65, 2}, {0, 1}, }; static const arc arcs_75_2[3] = { - {127, 1}, - {85, 1}, + {126, 1}, + {84, 1}, {0, 2}, }; static state states_75[3] = { @@ -1913,14 +1899,14 @@ static state states_75[3] = { {3, arcs_75_2}, }; static const arc arcs_76_0[1] = { - {60, 1}, + {58, 1}, }; static const arc arcs_76_1[2] = { - {66, 2}, + {65, 2}, {0, 1}, }; static const arc arcs_76_2[2] = { - {60, 1}, + {58, 1}, {0, 2}, }; static state states_76[3] = { @@ -1929,61 +1915,61 @@ static state states_76[3] = { {2, arcs_76_2}, }; static const arc arcs_77_0[3] = { - {64, 1}, - {85, 2}, - {60, 3}, + {63, 1}, + {84, 2}, + {58, 3}, }; static const arc arcs_77_1[1] = { - {127, 4}, + {126, 4}, }; static const arc arcs_77_2[3] = { - {66, 5}, - {170, 6}, + {65, 5}, + {169, 6}, {0, 2}, }; static const arc arcs_77_3[4] = { - {66, 5}, - {59, 7}, - {170, 6}, + {65, 5}, + {57, 7}, + {169, 6}, {0, 3}, }; static const arc arcs_77_4[3] = { - {66, 8}, - {170, 6}, + {65, 8}, + {169, 6}, {0, 4}, }; static const arc arcs_77_5[3] = { - {85, 9}, - {60, 9}, + {84, 9}, + {58, 9}, {0, 5}, }; static const arc arcs_77_6[1] = { {0, 6}, }; static const arc arcs_77_7[1] = { - {60, 4}, + {58, 4}, }; static const arc arcs_77_8[3] = { - {64, 10}, - {60, 11}, + {63, 10}, + {58, 11}, {0, 8}, }; static const arc arcs_77_9[2] = { - {66, 5}, + {65, 5}, {0, 9}, }; static const arc arcs_77_10[1] = { - {127, 12}, + {126, 12}, }; static const arc arcs_77_11[1] = { - {59, 13}, + {57, 13}, }; static const arc arcs_77_12[2] = { - {66, 8}, + {65, 8}, {0, 12}, }; static const arc arcs_77_13[1] = { - {60, 12}, + {58, 12}, }; static state states_77[14] = { {3, arcs_77_0}, @@ -2009,20 +1995,20 @@ static const arc arcs_78_1[1] = { }; static const arc arcs_78_2[2] = { {5, 3}, - {59, 4}, + {57, 4}, }; static const arc arcs_78_3[2] = { - {50, 5}, - {51, 6}, + {61, 5}, + {170, 6}, }; static const arc arcs_78_4[1] = { - {120, 7}, + {119, 7}, }; static const arc arcs_78_5[1] = { - {59, 4}, + {57, 4}, }; static const arc arcs_78_6[1] = { - {50, 5}, + {61, 5}, }; static const arc arcs_78_7[1] = { {0, 7}, @@ -2041,7 +2027,7 @@ static const arc arcs_79_0[1] = { {174, 1}, }; static const arc arcs_79_1[2] = { - {66, 2}, + {65, 2}, {0, 1}, }; static const arc arcs_79_2[2] = { @@ -2055,16 +2041,16 @@ static state states_79[3] = { }; static const arc arcs_80_0[3] = { {6, 1}, - {64, 1}, - {60, 2}, + {63, 1}, + {58, 2}, }; static const arc arcs_80_1[1] = { - {60, 3}, + {58, 3}, }; static const arc arcs_80_2[4] = { - {131, 1}, - {67, 1}, - {170, 3}, + {130, 1}, + {66, 1}, + {169, 3}, {0, 2}, }; static const arc arcs_80_3[1] = { @@ -2077,7 +2063,7 @@ static state states_80[4] = { {1, arcs_80_3}, }; static const arc arcs_81_0[2] = { - {170, 1}, + {169, 1}, {176, 1}, }; static const arc arcs_81_1[1] = { @@ -2091,13 +2077,13 @@ static const arc arcs_82_0[1] = { {21, 1}, }; static const arc arcs_82_1[1] = { - {99, 2}, + {98, 2}, }; static const arc arcs_82_2[1] = { - {123, 3}, + {122, 3}, }; static const arc arcs_82_3[1] = { - {133, 4}, + {132, 4}, }; static const arc arcs_82_4[2] = { {175, 5}, @@ -2133,7 +2119,7 @@ static const arc arcs_84_0[1] = { {24, 1}, }; static const arc arcs_84_1[1] = { - {134, 2}, + {133, 2}, }; static const arc arcs_84_2[2] = { {175, 3}, @@ -2175,10 +2161,10 @@ static state states_86[3] = { }; static const arc arcs_87_0[2] = { {22, 1}, - {81, 2}, + {80, 2}, }; static const arc arcs_87_1[1] = { - {60, 2}, + {58, 2}, }; static const arc arcs_87_2[1] = { {0, 2}, @@ -2193,8 +2179,8 @@ static const arc arcs_88_0[2] = { {4, 2}, }; static const arc arcs_88_1[2] = { - {129, 3}, - {61, 4}, + {128, 3}, + {59, 4}, }; static const arc arcs_88_2[1] = { {0, 2}, @@ -2206,11 +2192,11 @@ static const arc arcs_88_4[1] = { {2, 6}, }; static const arc arcs_88_5[2] = { - {130, 2}, + {129, 2}, {45, 5}, }; static const arc arcs_88_6[1] = { - {129, 3}, + {128, 3}, }; static state states_88[7] = { {2, arcs_88_0}, @@ -2240,17 +2226,17 @@ static const arc arcs_90_0[1] = { {5, 1}, }; static const arc arcs_90_1[2] = { - {50, 2}, + {61, 2}, {182, 3}, }; static const arc arcs_90_2[1] = { - {58, 4}, + {56, 4}, }; static const arc arcs_90_3[1] = { - {50, 2}, + {61, 2}, }; static const arc arcs_90_4[1] = { - {60, 5}, + {58, 5}, }; static const arc arcs_90_5[1] = { {0, 5}, @@ -2265,27 +2251,27 @@ static state states_90[6] = { }; static const arc arcs_91_0[3] = { {6, 1}, - {64, 2}, - {60, 3}, + {63, 2}, + {58, 3}, }; static const arc arcs_91_1[3] = { - {66, 4}, - {60, 5}, + {65, 4}, + {58, 5}, {0, 1}, }; static const arc arcs_91_2[1] = { - {60, 6}, + {58, 6}, }; static const arc arcs_91_3[2] = { - {66, 7}, + {65, 7}, {0, 3}, }; static const arc arcs_91_4[2] = { - {64, 2}, - {60, 5}, + {63, 2}, + {58, 5}, }; static const arc arcs_91_5[2] = { - {66, 4}, + {65, 4}, {0, 5}, }; static const arc arcs_91_6[1] = { @@ -2293,21 +2279,21 @@ static const arc arcs_91_6[1] = { }; static const arc arcs_91_7[4] = { {6, 8}, - {64, 2}, - {60, 3}, + {63, 2}, + {58, 3}, {0, 7}, }; static const arc arcs_91_8[3] = { - {66, 9}, - {60, 10}, + {65, 9}, + {58, 10}, {0, 8}, }; static const arc arcs_91_9[2] = { - {64, 2}, - {60, 10}, + {63, 2}, + {58, 10}, }; static const arc arcs_91_10[2] = { - {66, 9}, + {65, 9}, {0, 10}, }; static state states_91[11] = { @@ -2330,7 +2316,7 @@ static const dfa dfas[92] = { "\344\377\377\377\377\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {258, "eval_input", 3, states_2, "\240\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {259, "decorator", 7, states_3, + {259, "decorator", 4, states_3, "\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "decorators", 2, states_4, "\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, @@ -2343,11 +2329,11 @@ static const dfa dfas[92] = { {264, "parameters", 4, states_8, "\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {265, "typedargslist", 42, states_9, - "\100\000\000\000\000\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\100\000\000\000\000\001\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {266, "tfpdef", 4, states_10, "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {267, "varargslist", 34, states_11, - "\100\000\000\000\000\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\100\000\000\000\000\001\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {268, "vfpdef", 2, states_12, "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {269, "stmt", 2, states_13, @@ -2359,11 +2345,11 @@ static const dfa dfas[92] = { {272, "expr_stmt", 6, states_16, "\340\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {273, "annassign", 5, states_17, - "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {274, "testlist_star_expr", 3, states_18, "\340\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {275, "augassign", 2, states_19, - "\000\000\000\000\000\000\000\000\000\000\300\377\007\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\340\377\003\000\000\000\000\000\000\000\000\000\000"}, {276, "del_stmt", 3, states_20, "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {277, "pass_stmt", 2, states_21, @@ -2419,7 +2405,7 @@ static const dfa dfas[92] = { {302, "with_item", 4, states_46, "\240\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {303, "except_clause", 5, states_47, - "\000\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\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000"}, {304, "suite", 5, states_48, "\344\373\325\376\270\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {305, "namedexpr_test", 4, states_49, @@ -2441,7 +2427,7 @@ static const dfa dfas[92] = { {313, "comparison", 2, states_57, "\240\173\000\000\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {314, "comp_op", 4, states_58, - "\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\010\000\300\037\000\000\000\000"}, + "\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\004\000\340\017\000\000\000\000"}, {315, "star_expr", 3, states_59, "\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {316, "expr", 2, states_60, @@ -2467,25 +2453,25 @@ static const dfa dfas[92] = { {326, "testlist_comp", 5, states_70, "\340\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {327, "trailer", 7, states_71, - "\040\100\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, + "\040\100\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, {328, "subscriptlist", 3, states_72, - "\240\173\000\024\260\007\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\240\173\000\024\260\007\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {329, "subscript", 5, states_73, - "\240\173\000\024\260\007\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\240\173\000\024\260\007\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {330, "sliceop", 3, states_74, - "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {331, "exprlist", 3, states_75, "\340\173\000\000\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {332, "testlist", 3, states_76, "\240\173\000\024\260\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {333, "dictorsetmaker", 14, states_77, - "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {334, "classdef", 8, states_78, "\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {335, "arglist", 3, states_79, - "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {336, "argument", 4, states_80, - "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {337, "comp_iter", 2, states_81, "\000\000\040\001\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {338, "sync_comp_for", 6, states_82, @@ -2507,7 +2493,7 @@ static const dfa dfas[92] = { {346, "func_type", 6, states_90, "\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {347, "typelist", 11, states_91, - "\340\173\000\024\260\007\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\340\173\000\024\260\007\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, }; static const label labels[183] = { {0, "EMPTY"}, @@ -2559,9 +2545,7 @@ static const label labels[183] = { {258, 0}, {332, 0}, {259, 0}, - {291, 0}, - {8, 0}, - {335, 0}, + {305, 0}, {260, 0}, {261, 0}, {262, 0}, @@ -2573,6 +2557,7 @@ static const label labels[183] = { {306, 0}, {58, 0}, {344, 0}, + {8, 0}, {265, 0}, {35, 0}, {266, 0}, @@ -2619,6 +2604,7 @@ static const label labels[183] = { {285, 0}, {290, 0}, {23, 0}, + {291, 0}, {289, 0}, {287, 0}, {1, "as"}, @@ -2629,7 +2615,6 @@ static const label labels[183] = { {300, 0}, {298, 0}, {301, 0}, - {305, 0}, {304, 0}, {1, "elif"}, {1, "else"}, @@ -2681,6 +2666,7 @@ static const label labels[183] = { {26, 0}, {333, 0}, {339, 0}, + {335, 0}, {328, 0}, {329, 0}, {330, 0},