bpo-40334: Support CO_FUTURE_BARRY_AS_BDFL in the new parser (GH-19721)

This commit also allows to pass flags to the new parser in all interfaces and fixes a bug in the parser generator that was causing to inline rules with actions, making them disappear.
diff --git a/Parser/pegen/parse.c b/Parser/pegen/parse.c
index 25607ea..b26f732 100644
--- a/Parser/pegen/parse.c
+++ b/Parser/pegen/parse.c
@@ -297,37 +297,37 @@
 #define _loop1_83_type 1226
 #define _loop1_84_type 1227
 #define _loop1_85_type 1228
-#define _loop0_87_type 1229
-#define _gather_86_type 1230
-#define _tmp_88_type 1231
+#define _tmp_86_type 1229
+#define _loop0_88_type 1230
+#define _gather_87_type 1231
 #define _tmp_89_type 1232
 #define _tmp_90_type 1233
 #define _tmp_91_type 1234
-#define _loop1_92_type 1235
-#define _tmp_93_type 1236
+#define _tmp_92_type 1235
+#define _loop1_93_type 1236
 #define _tmp_94_type 1237
-#define _loop0_96_type 1238
-#define _gather_95_type 1239
-#define _loop1_97_type 1240
-#define _tmp_98_type 1241
+#define _tmp_95_type 1238
+#define _loop0_97_type 1239
+#define _gather_96_type 1240
+#define _loop1_98_type 1241
 #define _tmp_99_type 1242
-#define _loop0_101_type 1243
-#define _gather_100_type 1244
-#define _loop0_103_type 1245
-#define _gather_102_type 1246
-#define _loop0_105_type 1247
-#define _gather_104_type 1248
-#define _loop0_107_type 1249
-#define _gather_106_type 1250
-#define _loop0_108_type 1251
-#define _loop0_110_type 1252
-#define _gather_109_type 1253
-#define _tmp_111_type 1254
-#define _loop0_113_type 1255
-#define _gather_112_type 1256
-#define _loop0_115_type 1257
-#define _gather_114_type 1258
-#define _tmp_116_type 1259
+#define _tmp_100_type 1243
+#define _loop0_102_type 1244
+#define _gather_101_type 1245
+#define _loop0_104_type 1246
+#define _gather_103_type 1247
+#define _loop0_106_type 1248
+#define _gather_105_type 1249
+#define _loop0_108_type 1250
+#define _gather_107_type 1251
+#define _loop0_109_type 1252
+#define _loop0_111_type 1253
+#define _gather_110_type 1254
+#define _tmp_112_type 1255
+#define _loop0_114_type 1256
+#define _gather_113_type 1257
+#define _loop0_116_type 1258
+#define _gather_115_type 1259
 #define _tmp_117_type 1260
 #define _tmp_118_type 1261
 #define _tmp_119_type 1262
@@ -346,8 +346,9 @@
 #define _tmp_132_type 1275
 #define _tmp_133_type 1276
 #define _tmp_134_type 1277
-#define _loop0_135_type 1278
-#define _tmp_136_type 1279
+#define _tmp_135_type 1278
+#define _loop0_136_type 1279
+#define _tmp_137_type 1280
 
 static mod_ty file_rule(Parser *p);
 static mod_ty interactive_rule(Parser *p);
@@ -578,37 +579,37 @@
 static asdl_seq *_loop1_83_rule(Parser *p);
 static asdl_seq *_loop1_84_rule(Parser *p);
 static asdl_seq *_loop1_85_rule(Parser *p);
-static asdl_seq *_loop0_87_rule(Parser *p);
-static asdl_seq *_gather_86_rule(Parser *p);
-static void *_tmp_88_rule(Parser *p);
+static void *_tmp_86_rule(Parser *p);
+static asdl_seq *_loop0_88_rule(Parser *p);
+static asdl_seq *_gather_87_rule(Parser *p);
 static void *_tmp_89_rule(Parser *p);
 static void *_tmp_90_rule(Parser *p);
 static void *_tmp_91_rule(Parser *p);
-static asdl_seq *_loop1_92_rule(Parser *p);
-static void *_tmp_93_rule(Parser *p);
+static void *_tmp_92_rule(Parser *p);
+static asdl_seq *_loop1_93_rule(Parser *p);
 static void *_tmp_94_rule(Parser *p);
-static asdl_seq *_loop0_96_rule(Parser *p);
-static asdl_seq *_gather_95_rule(Parser *p);
-static asdl_seq *_loop1_97_rule(Parser *p);
-static void *_tmp_98_rule(Parser *p);
+static void *_tmp_95_rule(Parser *p);
+static asdl_seq *_loop0_97_rule(Parser *p);
+static asdl_seq *_gather_96_rule(Parser *p);
+static asdl_seq *_loop1_98_rule(Parser *p);
 static void *_tmp_99_rule(Parser *p);
-static asdl_seq *_loop0_101_rule(Parser *p);
-static asdl_seq *_gather_100_rule(Parser *p);
-static asdl_seq *_loop0_103_rule(Parser *p);
-static asdl_seq *_gather_102_rule(Parser *p);
-static asdl_seq *_loop0_105_rule(Parser *p);
-static asdl_seq *_gather_104_rule(Parser *p);
-static asdl_seq *_loop0_107_rule(Parser *p);
-static asdl_seq *_gather_106_rule(Parser *p);
+static void *_tmp_100_rule(Parser *p);
+static asdl_seq *_loop0_102_rule(Parser *p);
+static asdl_seq *_gather_101_rule(Parser *p);
+static asdl_seq *_loop0_104_rule(Parser *p);
+static asdl_seq *_gather_103_rule(Parser *p);
+static asdl_seq *_loop0_106_rule(Parser *p);
+static asdl_seq *_gather_105_rule(Parser *p);
 static asdl_seq *_loop0_108_rule(Parser *p);
-static asdl_seq *_loop0_110_rule(Parser *p);
-static asdl_seq *_gather_109_rule(Parser *p);
-static void *_tmp_111_rule(Parser *p);
-static asdl_seq *_loop0_113_rule(Parser *p);
-static asdl_seq *_gather_112_rule(Parser *p);
-static asdl_seq *_loop0_115_rule(Parser *p);
-static asdl_seq *_gather_114_rule(Parser *p);
-static void *_tmp_116_rule(Parser *p);
+static asdl_seq *_gather_107_rule(Parser *p);
+static asdl_seq *_loop0_109_rule(Parser *p);
+static asdl_seq *_loop0_111_rule(Parser *p);
+static asdl_seq *_gather_110_rule(Parser *p);
+static void *_tmp_112_rule(Parser *p);
+static asdl_seq *_loop0_114_rule(Parser *p);
+static asdl_seq *_gather_113_rule(Parser *p);
+static asdl_seq *_loop0_116_rule(Parser *p);
+static asdl_seq *_gather_115_rule(Parser *p);
 static void *_tmp_117_rule(Parser *p);
 static void *_tmp_118_rule(Parser *p);
 static void *_tmp_119_rule(Parser *p);
@@ -627,8 +628,9 @@
 static void *_tmp_132_rule(Parser *p);
 static void *_tmp_133_rule(Parser *p);
 static void *_tmp_134_rule(Parser *p);
-static asdl_seq *_loop0_135_rule(Parser *p);
-static void *_tmp_136_rule(Parser *p);
+static void *_tmp_135_rule(Parser *p);
+static asdl_seq *_loop0_136_rule(Parser *p);
+static void *_tmp_137_rule(Parser *p);
 
 
 // file: statements? $
@@ -5557,7 +5559,7 @@
     return res;
 }
 
-// noteq_bitwise_or: '!=' bitwise_or
+// noteq_bitwise_or: ('!=') bitwise_or
 static CmpopExprPair*
 noteq_bitwise_or_rule(Parser *p)
 {
@@ -5566,11 +5568,11 @@
     }
     CmpopExprPair* res = NULL;
     int mark = p->mark;
-    { // '!=' bitwise_or
+    { // ('!=') bitwise_or
+        void *_tmp_86_var;
         expr_ty a;
-        void *literal;
         if (
-            (literal = _PyPegen_expect_token(p, 28))
+            (_tmp_86_var = _tmp_86_rule(p))
             &&
             (a = bitwise_or_rule(p))
         )
@@ -7012,7 +7014,7 @@
         void *opt_var;
         UNUSED(opt_var); // Silence compiler warnings
         if (
-            (a = _gather_86_rule(p))
+            (a = _gather_87_rule(p))
             &&
             (opt_var = _PyPegen_expect_token(p, 12), 1)
         )
@@ -7068,7 +7070,7 @@
             &&
             (b = expression_rule(p), 1)
             &&
-            (c = _tmp_88_rule(p), 1)
+            (c = _tmp_89_rule(p), 1)
         )
         {
             Token *token = _PyPegen_get_last_nonnwhitespace_token(p);
@@ -7256,22 +7258,9 @@
         p->mark = mark;
     }
     { // &'(' (tuple | group | genexp)
-        void *_tmp_89_var;
-        if (
-            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)
-            &&
-            (_tmp_89_var = _tmp_89_rule(p))
-        )
-        {
-            res = _tmp_89_var;
-            goto done;
-        }
-        p->mark = mark;
-    }
-    { // &'[' (list | listcomp)
         void *_tmp_90_var;
         if (
-            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)
+            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)
             &&
             (_tmp_90_var = _tmp_90_rule(p))
         )
@@ -7281,10 +7270,10 @@
         }
         p->mark = mark;
     }
-    { // &'{' (dict | set | dictcomp | setcomp)
+    { // &'[' (list | listcomp)
         void *_tmp_91_var;
         if (
-            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)
+            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)
             &&
             (_tmp_91_var = _tmp_91_rule(p))
         )
@@ -7294,6 +7283,19 @@
         }
         p->mark = mark;
     }
+    { // &'{' (dict | set | dictcomp | setcomp)
+        void *_tmp_92_var;
+        if (
+            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)
+            &&
+            (_tmp_92_var = _tmp_92_rule(p))
+        )
+        {
+            res = _tmp_92_var;
+            goto done;
+        }
+        p->mark = mark;
+    }
     { // '...'
         void *literal;
         if (
@@ -7336,7 +7338,7 @@
     { // STRING+
         asdl_seq * a;
         if (
-            (a = _loop1_92_rule(p))
+            (a = _loop1_93_rule(p))
         )
         {
             res = _PyPegen_concatenate_strings ( p , a );
@@ -7494,7 +7496,7 @@
         if (
             (literal = _PyPegen_expect_token(p, 7))
             &&
-            (a = _tmp_93_rule(p), 1)
+            (a = _tmp_94_rule(p), 1)
             &&
             (literal_1 = _PyPegen_expect_token(p, 8))
         )
@@ -7537,7 +7539,7 @@
         if (
             (literal = _PyPegen_expect_token(p, 7))
             &&
-            (a = _tmp_94_rule(p))
+            (a = _tmp_95_rule(p))
             &&
             (literal_1 = _PyPegen_expect_token(p, 8))
         )
@@ -7856,7 +7858,7 @@
         void *opt_var;
         UNUSED(opt_var); // Silence compiler warnings
         if (
-            (a = _gather_95_rule(p))
+            (a = _gather_96_rule(p))
             &&
             (opt_var = _PyPegen_expect_token(p, 12), 1)
         )
@@ -7940,7 +7942,7 @@
     { // ((ASYNC? 'for' star_targets 'in' disjunction (('if' disjunction))*))+
         asdl_seq * a;
         if (
-            (a = _loop1_97_rule(p))
+            (a = _loop1_98_rule(p))
         )
         {
             res = a;
@@ -8106,7 +8108,7 @@
         if (
             (a = starred_expression_rule(p))
             &&
-            (b = _tmp_98_rule(p), 1)
+            (b = _tmp_99_rule(p), 1)
         )
         {
             Token *token = _PyPegen_get_last_nonnwhitespace_token(p);
@@ -8155,7 +8157,7 @@
         if (
             (a = named_expression_rule(p))
             &&
-            (b = _tmp_99_rule(p), 1)
+            (b = _tmp_100_rule(p), 1)
         )
         {
             Token *token = _PyPegen_get_last_nonnwhitespace_token(p);
@@ -8197,11 +8199,11 @@
         asdl_seq * b;
         void *literal;
         if (
-            (a = _gather_100_rule(p))
+            (a = _gather_101_rule(p))
             &&
             (literal = _PyPegen_expect_token(p, 12))
             &&
-            (b = _gather_102_rule(p))
+            (b = _gather_103_rule(p))
         )
         {
             res = _PyPegen_join_sequences ( p , a , b );
@@ -8214,23 +8216,23 @@
         p->mark = mark;
     }
     { // ','.kwarg_or_starred+
-        asdl_seq * _gather_104_var;
+        asdl_seq * _gather_105_var;
         if (
-            (_gather_104_var = _gather_104_rule(p))
+            (_gather_105_var = _gather_105_rule(p))
         )
         {
-            res = _gather_104_var;
+            res = _gather_105_var;
             goto done;
         }
         p->mark = mark;
     }
     { // ','.kwarg_or_double_starred+
-        asdl_seq * _gather_106_var;
+        asdl_seq * _gather_107_var;
         if (
-            (_gather_106_var = _gather_106_rule(p))
+            (_gather_107_var = _gather_107_rule(p))
         )
         {
-            res = _gather_106_var;
+            res = _gather_107_var;
             goto done;
         }
         p->mark = mark;
@@ -8473,7 +8475,7 @@
         if (
             (a = star_target_rule(p))
             &&
-            (b = _loop0_108_rule(p))
+            (b = _loop0_109_rule(p))
             &&
             (opt_var = _PyPegen_expect_token(p, 12), 1)
         )
@@ -8514,7 +8516,7 @@
         void *opt_var;
         UNUSED(opt_var); // Silence compiler warnings
         if (
-            (a = _gather_109_rule(p))
+            (a = _gather_110_rule(p))
             &&
             (opt_var = _PyPegen_expect_token(p, 12), 1)
         )
@@ -8562,7 +8564,7 @@
         if (
             (literal = _PyPegen_expect_token(p, 16))
             &&
-            (a = _tmp_111_rule(p))
+            (a = _tmp_112_rule(p))
         )
         {
             Token *token = _PyPegen_get_last_nonnwhitespace_token(p);
@@ -8951,7 +8953,7 @@
         void *opt_var;
         UNUSED(opt_var); // Silence compiler warnings
         if (
-            (a = _gather_112_rule(p))
+            (a = _gather_113_rule(p))
             &&
             (opt_var = _PyPegen_expect_token(p, 12), 1)
         )
@@ -9204,7 +9206,7 @@
         void *opt_var;
         UNUSED(opt_var); // Silence compiler warnings
         if (
-            (a = _gather_114_rule(p))
+            (a = _gather_115_rule(p))
             &&
             (opt_var = _PyPegen_expect_token(p, 12), 1)
         )
@@ -9732,7 +9734,7 @@
             &&
             (literal = _PyPegen_expect_token(p, 12))
             &&
-            (opt_var = _tmp_116_rule(p), 1)
+            (opt_var = _tmp_117_rule(p), 1)
         )
         {
             res = RAISE_SYNTAX_ERROR ( "Generator expression must be parenthesized" );
@@ -9867,7 +9869,7 @@
             &&
             (expression_var_1 = expression_rule(p))
             &&
-            (opt_var = _tmp_117_rule(p), 1)
+            (opt_var = _tmp_118_rule(p), 1)
         )
         {
             res = RAISE_SYNTAX_ERROR ( "illegal target for annotation" );
@@ -9880,15 +9882,15 @@
         p->mark = mark;
     }
     { // expression ('=' | augassign) (yield_expr | star_expressions)
-        void *_tmp_118_var;
         void *_tmp_119_var;
+        void *_tmp_120_var;
         expr_ty a;
         if (
             (a = expression_rule(p))
             &&
-            (_tmp_118_var = _tmp_118_rule(p))
-            &&
             (_tmp_119_var = _tmp_119_rule(p))
+            &&
+            (_tmp_120_var = _tmp_120_rule(p))
         )
         {
             res = RAISE_SYNTAX_ERROR ( "cannot assign to %s" , _PyPegen_get_expr_name ( a ) );
@@ -9946,12 +9948,12 @@
     void * res = NULL;
     int mark = p->mark;
     { // ('[' | '(' | '{') '*' expression for_if_clauses
-        void *_tmp_120_var;
+        void *_tmp_121_var;
         expr_ty expression_var;
         asdl_seq* for_if_clauses_var;
         void *literal;
         if (
-            (_tmp_120_var = _tmp_120_rule(p))
+            (_tmp_121_var = _tmp_121_rule(p))
             &&
             (literal = _PyPegen_expect_token(p, 16))
             &&
@@ -9985,15 +9987,15 @@
     void * res = NULL;
     int mark = p->mark;
     { // [plain_names ','] (slash_with_default | names_with_default) ',' plain_names
-        void *_tmp_122_var;
+        void *_tmp_123_var;
         void *literal;
         void *opt_var;
         UNUSED(opt_var); // Silence compiler warnings
         asdl_seq* plain_names_var;
         if (
-            (opt_var = _tmp_121_rule(p), 1)
+            (opt_var = _tmp_122_rule(p), 1)
             &&
-            (_tmp_122_var = _tmp_122_rule(p))
+            (_tmp_123_var = _tmp_123_rule(p))
             &&
             (literal = _PyPegen_expect_token(p, 12))
             &&
@@ -10520,12 +10522,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // (star_targets '=')
-        void *_tmp_123_var;
+        void *_tmp_124_var;
         while (
-            (_tmp_123_var = _tmp_123_rule(p))
+            (_tmp_124_var = _tmp_124_rule(p))
         )
         {
-            res = _tmp_123_var;
+            res = _tmp_124_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -10847,12 +10849,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // ('.' | '...')
-        void *_tmp_124_var;
+        void *_tmp_125_var;
         while (
-            (_tmp_124_var = _tmp_124_rule(p))
+            (_tmp_125_var = _tmp_125_rule(p))
         )
         {
-            res = _tmp_124_var;
+            res = _tmp_125_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -10896,12 +10898,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // ('.' | '...')
-        void *_tmp_125_var;
+        void *_tmp_126_var;
         while (
-            (_tmp_125_var = _tmp_125_rule(p))
+            (_tmp_126_var = _tmp_126_rule(p))
         )
         {
-            res = _tmp_125_var;
+            res = _tmp_126_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -12110,7 +12112,7 @@
         while (
             (literal = _PyPegen_expect_token(p, 12))
             &&
-            (elem = _tmp_126_rule(p))
+            (elem = _tmp_127_rule(p))
         )
         {
             res = elem;
@@ -12157,7 +12159,7 @@
         void *elem;
         asdl_seq * seq;
         if (
-            (elem = _tmp_126_rule(p))
+            (elem = _tmp_127_rule(p))
             &&
             (seq = _loop0_55_rule(p))
         )
@@ -12222,12 +12224,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // ('@' named_expression NEWLINE)
-        void *_tmp_127_var;
+        void *_tmp_128_var;
         while (
-            (_tmp_127_var = _tmp_127_rule(p))
+            (_tmp_128_var = _tmp_128_rule(p))
         )
         {
-            res = _tmp_127_var;
+            res = _tmp_128_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -12395,12 +12397,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // (',' star_expression)
-        void *_tmp_128_var;
+        void *_tmp_129_var;
         while (
-            (_tmp_128_var = _tmp_128_rule(p))
+            (_tmp_129_var = _tmp_129_rule(p))
         )
         {
-            res = _tmp_128_var;
+            res = _tmp_129_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -12533,12 +12535,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // (',' expression)
-        void *_tmp_129_var;
+        void *_tmp_130_var;
         while (
-            (_tmp_129_var = _tmp_129_rule(p))
+            (_tmp_130_var = _tmp_130_rule(p))
         )
         {
-            res = _tmp_129_var;
+            res = _tmp_130_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -13162,7 +13164,7 @@
         while (
             (literal = _PyPegen_expect_token(p, 12))
             &&
-            (elem = _tmp_130_rule(p))
+            (elem = _tmp_131_rule(p))
         )
         {
             res = elem;
@@ -13209,7 +13211,7 @@
         void *elem;
         asdl_seq * seq;
         if (
-            (elem = _tmp_130_rule(p))
+            (elem = _tmp_131_rule(p))
             &&
             (seq = _loop0_82_rule(p))
         )
@@ -13242,12 +13244,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // ('or' conjunction)
-        void *_tmp_131_var;
+        void *_tmp_132_var;
         while (
-            (_tmp_131_var = _tmp_131_rule(p))
+            (_tmp_132_var = _tmp_132_rule(p))
         )
         {
-            res = _tmp_131_var;
+            res = _tmp_132_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -13295,12 +13297,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // ('and' inversion)
-        void *_tmp_132_var;
+        void *_tmp_133_var;
         while (
-            (_tmp_132_var = _tmp_132_rule(p))
+            (_tmp_133_var = _tmp_133_rule(p))
         )
         {
-            res = _tmp_132_var;
+            res = _tmp_133_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -13383,9 +13385,38 @@
     return seq;
 }
 
-// _loop0_87: ',' slice
+// _tmp_86: '!='
+static void *
+_tmp_86_rule(Parser *p)
+{
+    if (p->error_indicator) {
+        return NULL;
+    }
+    void * res = NULL;
+    int mark = p->mark;
+    { // '!='
+        void *tok;
+        if (
+            (tok = _PyPegen_expect_token(p, 28))
+        )
+        {
+            res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
+            if (res == NULL && PyErr_Occurred()) {
+                p->error_indicator = 1;
+                return NULL;
+            }
+            goto done;
+        }
+        p->mark = mark;
+    }
+    res = NULL;
+  done:
+    return res;
+}
+
+// _loop0_88: ',' slice
 static asdl_seq *
-_loop0_87_rule(Parser *p)
+_loop0_88_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13430,32 +13461,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_87");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_88");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_87_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_88_type, seq);
     return seq;
 }
 
-// _gather_86: slice _loop0_87
+// _gather_87: slice _loop0_88
 static asdl_seq *
-_gather_86_rule(Parser *p)
+_gather_87_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // slice _loop0_87
+    { // slice _loop0_88
         expr_ty elem;
         asdl_seq * seq;
         if (
             (elem = slice_rule(p))
             &&
-            (seq = _loop0_87_rule(p))
+            (seq = _loop0_88_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -13468,9 +13499,9 @@
     return res;
 }
 
-// _tmp_88: ':' expression?
+// _tmp_89: ':' expression?
 static void *
-_tmp_88_rule(Parser *p)
+_tmp_89_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13500,9 +13531,9 @@
     return res;
 }
 
-// _tmp_89: tuple | group | genexp
+// _tmp_90: tuple | group | genexp
 static void *
-_tmp_89_rule(Parser *p)
+_tmp_90_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13547,9 +13578,9 @@
     return res;
 }
 
-// _tmp_90: list | listcomp
+// _tmp_91: list | listcomp
 static void *
-_tmp_90_rule(Parser *p)
+_tmp_91_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13583,9 +13614,9 @@
     return res;
 }
 
-// _tmp_91: dict | set | dictcomp | setcomp
+// _tmp_92: dict | set | dictcomp | setcomp
 static void *
-_tmp_91_rule(Parser *p)
+_tmp_92_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13641,9 +13672,9 @@
     return res;
 }
 
-// _loop1_92: STRING
+// _loop1_93: STRING
 static asdl_seq *
-_loop1_92_rule(Parser *p)
+_loop1_93_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13684,19 +13715,19 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_92");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_93");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop1_92_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop1_93_type, seq);
     return seq;
 }
 
-// _tmp_93: star_named_expression ',' star_named_expressions?
+// _tmp_94: star_named_expression ',' star_named_expressions?
 static void *
-_tmp_93_rule(Parser *p)
+_tmp_94_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13729,9 +13760,9 @@
     return res;
 }
 
-// _tmp_94: yield_expr | named_expression
+// _tmp_95: yield_expr | named_expression
 static void *
-_tmp_94_rule(Parser *p)
+_tmp_95_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13765,9 +13796,9 @@
     return res;
 }
 
-// _loop0_96: ',' kvpair
+// _loop0_97: ',' kvpair
 static asdl_seq *
-_loop0_96_rule(Parser *p)
+_loop0_97_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13812,32 +13843,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_96");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_97");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_96_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_97_type, seq);
     return seq;
 }
 
-// _gather_95: kvpair _loop0_96
+// _gather_96: kvpair _loop0_97
 static asdl_seq *
-_gather_95_rule(Parser *p)
+_gather_96_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // kvpair _loop0_96
+    { // kvpair _loop0_97
         KeyValuePair* elem;
         asdl_seq * seq;
         if (
             (elem = kvpair_rule(p))
             &&
-            (seq = _loop0_96_rule(p))
+            (seq = _loop0_97_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -13850,9 +13881,9 @@
     return res;
 }
 
-// _loop1_97: (ASYNC? 'for' star_targets 'in' disjunction (('if' disjunction))*)
+// _loop1_98: (ASYNC? 'for' star_targets 'in' disjunction (('if' disjunction))*)
 static asdl_seq *
-_loop1_97_rule(Parser *p)
+_loop1_98_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -13868,12 +13899,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // (ASYNC? 'for' star_targets 'in' disjunction (('if' disjunction))*)
-        void *_tmp_133_var;
+        void *_tmp_134_var;
         while (
-            (_tmp_133_var = _tmp_133_rule(p))
+            (_tmp_134_var = _tmp_134_rule(p))
         )
         {
-            res = _tmp_133_var;
+            res = _tmp_134_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -13893,48 +13924,16 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_97");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_98");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop1_97_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop1_98_type, seq);
     return seq;
 }
 
-// _tmp_98: ',' args
-static void *
-_tmp_98_rule(Parser *p)
-{
-    if (p->error_indicator) {
-        return NULL;
-    }
-    void * res = NULL;
-    int mark = p->mark;
-    { // ',' args
-        expr_ty c;
-        void *literal;
-        if (
-            (literal = _PyPegen_expect_token(p, 12))
-            &&
-            (c = args_rule(p))
-        )
-        {
-            res = c;
-            if (res == NULL && PyErr_Occurred()) {
-                p->error_indicator = 1;
-                return NULL;
-            }
-            goto done;
-        }
-        p->mark = mark;
-    }
-    res = NULL;
-  done:
-    return res;
-}
-
 // _tmp_99: ',' args
 static void *
 _tmp_99_rule(Parser *p)
@@ -13967,9 +13966,41 @@
     return res;
 }
 
-// _loop0_101: ',' kwarg_or_starred
+// _tmp_100: ',' args
+static void *
+_tmp_100_rule(Parser *p)
+{
+    if (p->error_indicator) {
+        return NULL;
+    }
+    void * res = NULL;
+    int mark = p->mark;
+    { // ',' args
+        expr_ty c;
+        void *literal;
+        if (
+            (literal = _PyPegen_expect_token(p, 12))
+            &&
+            (c = args_rule(p))
+        )
+        {
+            res = c;
+            if (res == NULL && PyErr_Occurred()) {
+                p->error_indicator = 1;
+                return NULL;
+            }
+            goto done;
+        }
+        p->mark = mark;
+    }
+    res = NULL;
+  done:
+    return res;
+}
+
+// _loop0_102: ',' kwarg_or_starred
 static asdl_seq *
-_loop0_101_rule(Parser *p)
+_loop0_102_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14014,32 +14045,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_101");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_102");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_101_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_102_type, seq);
     return seq;
 }
 
-// _gather_100: kwarg_or_starred _loop0_101
+// _gather_101: kwarg_or_starred _loop0_102
 static asdl_seq *
-_gather_100_rule(Parser *p)
+_gather_101_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // kwarg_or_starred _loop0_101
+    { // kwarg_or_starred _loop0_102
         KeywordOrStarred* elem;
         asdl_seq * seq;
         if (
             (elem = kwarg_or_starred_rule(p))
             &&
-            (seq = _loop0_101_rule(p))
+            (seq = _loop0_102_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -14052,9 +14083,9 @@
     return res;
 }
 
-// _loop0_103: ',' kwarg_or_double_starred
+// _loop0_104: ',' kwarg_or_double_starred
 static asdl_seq *
-_loop0_103_rule(Parser *p)
+_loop0_104_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14099,32 +14130,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_103");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_104");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_103_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_104_type, seq);
     return seq;
 }
 
-// _gather_102: kwarg_or_double_starred _loop0_103
+// _gather_103: kwarg_or_double_starred _loop0_104
 static asdl_seq *
-_gather_102_rule(Parser *p)
+_gather_103_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // kwarg_or_double_starred _loop0_103
+    { // kwarg_or_double_starred _loop0_104
         KeywordOrStarred* elem;
         asdl_seq * seq;
         if (
             (elem = kwarg_or_double_starred_rule(p))
             &&
-            (seq = _loop0_103_rule(p))
+            (seq = _loop0_104_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -14137,9 +14168,9 @@
     return res;
 }
 
-// _loop0_105: ',' kwarg_or_starred
+// _loop0_106: ',' kwarg_or_starred
 static asdl_seq *
-_loop0_105_rule(Parser *p)
+_loop0_106_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14184,32 +14215,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_105");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_106");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_105_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_106_type, seq);
     return seq;
 }
 
-// _gather_104: kwarg_or_starred _loop0_105
+// _gather_105: kwarg_or_starred _loop0_106
 static asdl_seq *
-_gather_104_rule(Parser *p)
+_gather_105_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // kwarg_or_starred _loop0_105
+    { // kwarg_or_starred _loop0_106
         KeywordOrStarred* elem;
         asdl_seq * seq;
         if (
             (elem = kwarg_or_starred_rule(p))
             &&
-            (seq = _loop0_105_rule(p))
+            (seq = _loop0_106_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -14222,92 +14253,7 @@
     return res;
 }
 
-// _loop0_107: ',' kwarg_or_double_starred
-static asdl_seq *
-_loop0_107_rule(Parser *p)
-{
-    if (p->error_indicator) {
-        return NULL;
-    }
-    void *res = NULL;
-    int mark = p->mark;
-    int start_mark = p->mark;
-    void **children = PyMem_Malloc(sizeof(void *));
-    if (!children) {
-        PyErr_Format(PyExc_MemoryError, "Parser out of memory");
-        return NULL;
-    }
-    ssize_t children_capacity = 1;
-    ssize_t n = 0;
-    { // ',' kwarg_or_double_starred
-        KeywordOrStarred* elem;
-        void *literal;
-        while (
-            (literal = _PyPegen_expect_token(p, 12))
-            &&
-            (elem = kwarg_or_double_starred_rule(p))
-        )
-        {
-            res = elem;
-            if (res == NULL && PyErr_Occurred()) {
-                p->error_indicator = 1;
-                PyMem_Free(children);
-                return NULL;
-            }
-            if (n == children_capacity) {
-                children_capacity *= 2;
-                children = PyMem_Realloc(children, children_capacity*sizeof(void *));
-                if (!children) {
-                    PyErr_Format(PyExc_MemoryError, "realloc None");
-                    return NULL;
-                }
-            }
-            children[n++] = res;
-            mark = p->mark;
-        }
-        p->mark = mark;
-    }
-    asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
-    if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_107");
-        PyMem_Free(children);
-        return NULL;
-    }
-    for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
-    PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_107_type, seq);
-    return seq;
-}
-
-// _gather_106: kwarg_or_double_starred _loop0_107
-static asdl_seq *
-_gather_106_rule(Parser *p)
-{
-    if (p->error_indicator) {
-        return NULL;
-    }
-    asdl_seq * res = NULL;
-    int mark = p->mark;
-    { // kwarg_or_double_starred _loop0_107
-        KeywordOrStarred* elem;
-        asdl_seq * seq;
-        if (
-            (elem = kwarg_or_double_starred_rule(p))
-            &&
-            (seq = _loop0_107_rule(p))
-        )
-        {
-            res = _PyPegen_seq_insert_in_front(p, elem, seq);
-            goto done;
-        }
-        p->mark = mark;
-    }
-    res = NULL;
-  done:
-    return res;
-}
-
-// _loop0_108: (',' star_target)
+// _loop0_108: ',' kwarg_or_double_starred
 static asdl_seq *
 _loop0_108_rule(Parser *p)
 {
@@ -14324,13 +14270,21 @@
     }
     ssize_t children_capacity = 1;
     ssize_t n = 0;
-    { // (',' star_target)
-        void *_tmp_134_var;
+    { // ',' kwarg_or_double_starred
+        KeywordOrStarred* elem;
+        void *literal;
         while (
-            (_tmp_134_var = _tmp_134_rule(p))
+            (literal = _PyPegen_expect_token(p, 12))
+            &&
+            (elem = kwarg_or_double_starred_rule(p))
         )
         {
-            res = _tmp_134_var;
+            res = elem;
+            if (res == NULL && PyErr_Occurred()) {
+                p->error_indicator = 1;
+                PyMem_Free(children);
+                return NULL;
+            }
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -14356,9 +14310,86 @@
     return seq;
 }
 
-// _loop0_110: ',' star_target
+// _gather_107: kwarg_or_double_starred _loop0_108
 static asdl_seq *
-_loop0_110_rule(Parser *p)
+_gather_107_rule(Parser *p)
+{
+    if (p->error_indicator) {
+        return NULL;
+    }
+    asdl_seq * res = NULL;
+    int mark = p->mark;
+    { // kwarg_or_double_starred _loop0_108
+        KeywordOrStarred* elem;
+        asdl_seq * seq;
+        if (
+            (elem = kwarg_or_double_starred_rule(p))
+            &&
+            (seq = _loop0_108_rule(p))
+        )
+        {
+            res = _PyPegen_seq_insert_in_front(p, elem, seq);
+            goto done;
+        }
+        p->mark = mark;
+    }
+    res = NULL;
+  done:
+    return res;
+}
+
+// _loop0_109: (',' star_target)
+static asdl_seq *
+_loop0_109_rule(Parser *p)
+{
+    if (p->error_indicator) {
+        return NULL;
+    }
+    void *res = NULL;
+    int mark = p->mark;
+    int start_mark = p->mark;
+    void **children = PyMem_Malloc(sizeof(void *));
+    if (!children) {
+        PyErr_Format(PyExc_MemoryError, "Parser out of memory");
+        return NULL;
+    }
+    ssize_t children_capacity = 1;
+    ssize_t n = 0;
+    { // (',' star_target)
+        void *_tmp_135_var;
+        while (
+            (_tmp_135_var = _tmp_135_rule(p))
+        )
+        {
+            res = _tmp_135_var;
+            if (n == children_capacity) {
+                children_capacity *= 2;
+                children = PyMem_Realloc(children, children_capacity*sizeof(void *));
+                if (!children) {
+                    PyErr_Format(PyExc_MemoryError, "realloc None");
+                    return NULL;
+                }
+            }
+            children[n++] = res;
+            mark = p->mark;
+        }
+        p->mark = mark;
+    }
+    asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
+    if (!seq) {
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_109");
+        PyMem_Free(children);
+        return NULL;
+    }
+    for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
+    PyMem_Free(children);
+    _PyPegen_insert_memo(p, start_mark, _loop0_109_type, seq);
+    return seq;
+}
+
+// _loop0_111: ',' star_target
+static asdl_seq *
+_loop0_111_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14403,32 +14434,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_110");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_111");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_110_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_111_type, seq);
     return seq;
 }
 
-// _gather_109: star_target _loop0_110
+// _gather_110: star_target _loop0_111
 static asdl_seq *
-_gather_109_rule(Parser *p)
+_gather_110_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // star_target _loop0_110
+    { // star_target _loop0_111
         expr_ty elem;
         asdl_seq * seq;
         if (
             (elem = star_target_rule(p))
             &&
-            (seq = _loop0_110_rule(p))
+            (seq = _loop0_111_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -14441,9 +14472,9 @@
     return res;
 }
 
-// _tmp_111: !'*' star_target
+// _tmp_112: !'*' star_target
 static void *
-_tmp_111_rule(Parser *p)
+_tmp_112_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14468,9 +14499,9 @@
     return res;
 }
 
-// _loop0_113: ',' del_target
+// _loop0_114: ',' del_target
 static asdl_seq *
-_loop0_113_rule(Parser *p)
+_loop0_114_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14515,32 +14546,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_113");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_114");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_113_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_114_type, seq);
     return seq;
 }
 
-// _gather_112: del_target _loop0_113
+// _gather_113: del_target _loop0_114
 static asdl_seq *
-_gather_112_rule(Parser *p)
+_gather_113_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // del_target _loop0_113
+    { // del_target _loop0_114
         expr_ty elem;
         asdl_seq * seq;
         if (
             (elem = del_target_rule(p))
             &&
-            (seq = _loop0_113_rule(p))
+            (seq = _loop0_114_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -14553,9 +14584,9 @@
     return res;
 }
 
-// _loop0_115: ',' target
+// _loop0_116: ',' target
 static asdl_seq *
-_loop0_115_rule(Parser *p)
+_loop0_116_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14600,32 +14631,32 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_115");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_116");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_115_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_116_type, seq);
     return seq;
 }
 
-// _gather_114: target _loop0_115
+// _gather_115: target _loop0_116
 static asdl_seq *
-_gather_114_rule(Parser *p)
+_gather_115_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
     asdl_seq * res = NULL;
     int mark = p->mark;
-    { // target _loop0_115
+    { // target _loop0_116
         expr_ty elem;
         asdl_seq * seq;
         if (
             (elem = target_rule(p))
             &&
-            (seq = _loop0_115_rule(p))
+            (seq = _loop0_116_rule(p))
         )
         {
             res = _PyPegen_seq_insert_in_front(p, elem, seq);
@@ -14638,9 +14669,9 @@
     return res;
 }
 
-// _tmp_116: args | expression for_if_clauses
+// _tmp_117: args | expression for_if_clauses
 static void *
-_tmp_116_rule(Parser *p)
+_tmp_117_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14677,9 +14708,9 @@
     return res;
 }
 
-// _tmp_117: '=' annotated_rhs
+// _tmp_118: '=' annotated_rhs
 static void *
-_tmp_117_rule(Parser *p)
+_tmp_118_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14705,9 +14736,9 @@
     return res;
 }
 
-// _tmp_118: '=' | augassign
+// _tmp_119: '=' | augassign
 static void *
-_tmp_118_rule(Parser *p)
+_tmp_119_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14741,9 +14772,9 @@
     return res;
 }
 
-// _tmp_119: yield_expr | star_expressions
+// _tmp_120: yield_expr | star_expressions
 static void *
-_tmp_119_rule(Parser *p)
+_tmp_120_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14777,9 +14808,9 @@
     return res;
 }
 
-// _tmp_120: '[' | '(' | '{'
+// _tmp_121: '[' | '(' | '{'
 static void *
-_tmp_120_rule(Parser *p)
+_tmp_121_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14824,9 +14855,9 @@
     return res;
 }
 
-// _tmp_121: plain_names ','
+// _tmp_122: plain_names ','
 static void *
-_tmp_121_rule(Parser *p)
+_tmp_122_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14852,9 +14883,9 @@
     return res;
 }
 
-// _tmp_122: slash_with_default | names_with_default
+// _tmp_123: slash_with_default | names_with_default
 static void *
-_tmp_122_rule(Parser *p)
+_tmp_123_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14888,9 +14919,9 @@
     return res;
 }
 
-// _tmp_123: star_targets '='
+// _tmp_124: star_targets '='
 static void *
-_tmp_123_rule(Parser *p)
+_tmp_124_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -14920,42 +14951,6 @@
     return res;
 }
 
-// _tmp_124: '.' | '...'
-static void *
-_tmp_124_rule(Parser *p)
-{
-    if (p->error_indicator) {
-        return NULL;
-    }
-    void * res = NULL;
-    int mark = p->mark;
-    { // '.'
-        void *literal;
-        if (
-            (literal = _PyPegen_expect_token(p, 23))
-        )
-        {
-            res = literal;
-            goto done;
-        }
-        p->mark = mark;
-    }
-    { // '...'
-        void *literal;
-        if (
-            (literal = _PyPegen_expect_token(p, 52))
-        )
-        {
-            res = literal;
-            goto done;
-        }
-        p->mark = mark;
-    }
-    res = NULL;
-  done:
-    return res;
-}
-
 // _tmp_125: '.' | '...'
 static void *
 _tmp_125_rule(Parser *p)
@@ -14992,7 +14987,7 @@
     return res;
 }
 
-// _tmp_126: plain_name !'='
+// _tmp_126: '.' | '...'
 static void *
 _tmp_126_rule(Parser *p)
 {
@@ -15001,6 +14996,42 @@
     }
     void * res = NULL;
     int mark = p->mark;
+    { // '.'
+        void *literal;
+        if (
+            (literal = _PyPegen_expect_token(p, 23))
+        )
+        {
+            res = literal;
+            goto done;
+        }
+        p->mark = mark;
+    }
+    { // '...'
+        void *literal;
+        if (
+            (literal = _PyPegen_expect_token(p, 52))
+        )
+        {
+            res = literal;
+            goto done;
+        }
+        p->mark = mark;
+    }
+    res = NULL;
+  done:
+    return res;
+}
+
+// _tmp_127: plain_name !'='
+static void *
+_tmp_127_rule(Parser *p)
+{
+    if (p->error_indicator) {
+        return NULL;
+    }
+    void * res = NULL;
+    int mark = p->mark;
     { // plain_name !'='
         arg_ty plain_name_var;
         if (
@@ -15019,9 +15050,9 @@
     return res;
 }
 
-// _tmp_127: '@' named_expression NEWLINE
+// _tmp_128: '@' named_expression NEWLINE
 static void *
-_tmp_127_rule(Parser *p)
+_tmp_128_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15054,9 +15085,9 @@
     return res;
 }
 
-// _tmp_128: ',' star_expression
+// _tmp_129: ',' star_expression
 static void *
-_tmp_128_rule(Parser *p)
+_tmp_129_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15086,9 +15117,9 @@
     return res;
 }
 
-// _tmp_129: ',' expression
+// _tmp_130: ',' expression
 static void *
-_tmp_129_rule(Parser *p)
+_tmp_130_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15118,9 +15149,9 @@
     return res;
 }
 
-// _tmp_130: lambda_plain_name !'='
+// _tmp_131: lambda_plain_name !'='
 static void *
-_tmp_130_rule(Parser *p)
+_tmp_131_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15145,9 +15176,9 @@
     return res;
 }
 
-// _tmp_131: 'or' conjunction
+// _tmp_132: 'or' conjunction
 static void *
-_tmp_131_rule(Parser *p)
+_tmp_132_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15177,9 +15208,9 @@
     return res;
 }
 
-// _tmp_132: 'and' inversion
+// _tmp_133: 'and' inversion
 static void *
-_tmp_132_rule(Parser *p)
+_tmp_133_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15209,9 +15240,9 @@
     return res;
 }
 
-// _tmp_133: ASYNC? 'for' star_targets 'in' disjunction (('if' disjunction))*
+// _tmp_134: ASYNC? 'for' star_targets 'in' disjunction (('if' disjunction))*
 static void *
-_tmp_133_rule(Parser *p)
+_tmp_134_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15236,7 +15267,7 @@
             &&
             (b = disjunction_rule(p))
             &&
-            (c = _loop0_135_rule(p))
+            (c = _loop0_136_rule(p))
         )
         {
             res = _Py_comprehension ( a , b , c , y != NULL , p -> arena );
@@ -15253,9 +15284,9 @@
     return res;
 }
 
-// _tmp_134: ',' star_target
+// _tmp_135: ',' star_target
 static void *
-_tmp_134_rule(Parser *p)
+_tmp_135_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15285,9 +15316,9 @@
     return res;
 }
 
-// _loop0_135: ('if' disjunction)
+// _loop0_136: ('if' disjunction)
 static asdl_seq *
-_loop0_135_rule(Parser *p)
+_loop0_136_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
@@ -15303,12 +15334,12 @@
     ssize_t children_capacity = 1;
     ssize_t n = 0;
     { // ('if' disjunction)
-        void *_tmp_136_var;
+        void *_tmp_137_var;
         while (
-            (_tmp_136_var = _tmp_136_rule(p))
+            (_tmp_137_var = _tmp_137_rule(p))
         )
         {
-            res = _tmp_136_var;
+            res = _tmp_137_var;
             if (n == children_capacity) {
                 children_capacity *= 2;
                 children = PyMem_Realloc(children, children_capacity*sizeof(void *));
@@ -15324,19 +15355,19 @@
     }
     asdl_seq *seq = _Py_asdl_seq_new(n, p->arena);
     if (!seq) {
-        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_135");
+        PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_136");
         PyMem_Free(children);
         return NULL;
     }
     for (int i = 0; i < n; i++) asdl_seq_SET(seq, i, children[i]);
     PyMem_Free(children);
-    _PyPegen_insert_memo(p, start_mark, _loop0_135_type, seq);
+    _PyPegen_insert_memo(p, start_mark, _loop0_136_type, seq);
     return seq;
 }
 
-// _tmp_136: 'if' disjunction
+// _tmp_137: 'if' disjunction
 static void *
-_tmp_136_rule(Parser *p)
+_tmp_137_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;