Remove %<flag> stuff in favour of explicit Section1.Debug|Locations|PureParser
authorNick Downing <downing.nick@gmail.com>
Sun, 29 Jul 2018 09:46:47 +0000 (19:46 +1000)
committerNick Downing <downing.nick@gmail.com>
Sun, 29 Jul 2018 09:46:47 +0000 (19:46 +1000)
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y

index 14661b0..770c1c2 100644 (file)
@@ -129,7 +129,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 873 "src/parse-gram.y" /* yacc.c:355  */
+#line 885 "src/parse-gram.y" /* yacc.c:355  */
 #include "muscle-tab.h"
 
 #line 136 "src/parse-gram.c" /* yacc.c:355  */
@@ -221,9 +221,9 @@ symbol_list *list;
 named_ref *named_ref;
 #line 266 "src/parse-gram.y" /* yacc.c:355  */
 param_type param;
-#line 549 "src/parse-gram.y" /* yacc.c:355  */
+#line 561 "src/parse-gram.y" /* yacc.c:355  */
 code_props_type code_type;
-#line 875 "src/parse-gram.y" /* yacc.c:355  */
+#line 887 "src/parse-gram.y" /* yacc.c:355  */
 
   struct
   {
@@ -644,18 +644,18 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   289,   289,   304,   315,   319,   320,   332,   338,   345,
-     349,   356,   364,   369,   374,   378,   385,   397,   401,   405,
-     409,   413,   417,   417,   421,   425,   451,   455,   459,   463,
-     467,   468,   477,   478,   479,   487,   507,   513,   519,   534,
-     552,   553,   563,   564,   570,   589,   589,   596,   596,   603,
-     616,   634,   635,   636,   637,   641,   642,   647,   649,   654,
-     661,   674,   679,   687,   688,   692,   696,   700,   701,   702,
-     707,   712,   719,   728,   736,   750,   751,   760,   761,   767,
-     768,   769,   776,   776,   789,   793,   797,   802,   814,   820,
-     829,   831,   836,   843,   849,   857,   858,   868,   869,   894,
-     895,   896,   897,   909,   911,   920,   925,   926,   931,   939,
-     940
+       0,   289,   289,   304,   315,   319,   320,   332,   350,   357,
+     361,   368,   376,   381,   386,   390,   397,   409,   413,   417,
+     421,   425,   429,   429,   433,   437,   463,   467,   471,   475,
+     479,   480,   489,   490,   491,   499,   519,   525,   531,   546,
+     564,   565,   575,   576,   582,   601,   601,   608,   608,   615,
+     628,   646,   647,   648,   649,   653,   654,   659,   661,   666,
+     673,   686,   691,   699,   700,   704,   708,   712,   713,   714,
+     719,   724,   731,   740,   748,   762,   763,   772,   773,   779,
+     780,   781,   788,   788,   801,   805,   809,   814,   826,   832,
+     841,   843,   848,   855,   861,   869,   870,   880,   881,   906,
+     907,   908,   909,   921,   923,   932,   937,   938,   943,   951,
+     952
 };
 #endif
 
@@ -1116,7 +1116,7 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
         break;
 
     case 65: /* code_props_type  */
-#line 550 "src/parse-gram.y" /* yacc.c:684  */
+#line 562 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s", code_props_type_string (((*yyvaluep).code_type))); }
 #line 1122 "src/parse-gram.c" /* yacc.c:684  */
         break;
@@ -1140,7 +1140,7 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
         break;
 
     case 89: /* value  */
-#line 884 "src/parse-gram.y" /* yacc.c:684  */
+#line 896 "src/parse-gram.y" /* yacc.c:684  */
       {
   switch (((*yyvaluep).value).kind)
     {
@@ -2127,45 +2127,57 @@ yyreduce:
 #line 333 "src/parse-gram.y" /* yacc.c:1648  */
     {
       muscle_percent_define_ensure ((yyvsp[0].uniqstr), (yylsp[0]), true);
- insert_after(0, "</PYACC_Section1_Flag>");
- insert_before(0, "<PYACC_Section1_Flag>");
+ if (strcmp((yyvsp[0].uniqstr), "api.pure") == 0) {
+  insert_after(0, "</PYACC_Section1_PureParser>");
+  insert_before(0, "<PYACC_Section1_PureParser>");
+ }
+ else if (strcmp((yyvsp[0].uniqstr), "locations") == 0) {
+  insert_after(0, "</PYACC_Section1_Locations>");
+  insert_before(0, "<PYACC_Section1_Locations>");
+ }
+ else if (strcmp((yyvsp[0].uniqstr), "parse.trace") == 0) {
+  insert_after(0, "</PYACC_Section1_Debug>");
+  insert_before(0, "<PYACC_Section1_Debug>");
+ }
+ else
+  abort();
     }
-#line 2123 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2135 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 8:
-#line 339 "src/parse-gram.y" /* yacc.c:1648  */
+#line 351 "src/parse-gram.y" /* yacc.c:1648  */
     {
       muscle_percent_define_insert ((yyvsp[-1].uniqstr), (yylsp[-1]), (yyvsp[0].value).kind, (yyvsp[0].value).chars,
                                     MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
  insert_after(2, "</PYACC_Section1_Define>");
  insert_before(0, "<PYACC_Section1_Define>");
     }
-#line 2134 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2146 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 9:
-#line 345 "src/parse-gram.y" /* yacc.c:1648  */
+#line 357 "src/parse-gram.y" /* yacc.c:1648  */
     { defines_flag = true; /*}*/
  insert_after(0, "</PYACC_Section1_Defines>");
  insert_before(0, "<PYACC_Section1_Defines>");
  }
-#line 2143 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2155 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 10:
-#line 350 "src/parse-gram.y" /* yacc.c:1648  */
+#line 362 "src/parse-gram.y" /* yacc.c:1648  */
     {
       defines_flag = true;
       spec_defines_file = xstrdup ((yyvsp[0].code));
  insert_after(1, "</PYACC_Section1_Defines>");
  insert_before(0, "<PYACC_Section1_Defines>");
     }
-#line 2154 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2166 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 11:
-#line 357 "src/parse-gram.y" /* yacc.c:1648  */
+#line 369 "src/parse-gram.y" /* yacc.c:1648  */
     {
       muscle_percent_define_insert ("parse.error", (yylsp[0]), muscle_keyword,
                                     "verbose",
@@ -2173,51 +2185,51 @@ yyreduce:
  insert_after(0, "</PYACC_Section1_ErrorVerbose>");
  insert_before(0, "<PYACC_Section1_ErrorVerbose>");
     }
-#line 2166 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2178 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 12:
-#line 364 "src/parse-gram.y" /* yacc.c:1648  */
+#line 376 "src/parse-gram.y" /* yacc.c:1648  */
     { expected_sr_conflicts = (yyvsp[0].integer); /*}*/
  insert_after(1, "</PYACC_Section1_Expect>");
  sprintf(gram_piece_temp, "<PYACC_Section1_Expect value=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
  }
-#line 2176 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2188 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 13:
-#line 369 "src/parse-gram.y" /* yacc.c:1648  */
+#line 381 "src/parse-gram.y" /* yacc.c:1648  */
     { expected_rr_conflicts = (yyvsp[0].integer); /*}*/
  insert_after(1, "</PYACC_Section1_ExpectRR>");
  sprintf(gram_piece_temp, "<PYACC_Section1_ExpectRR value=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
  }
-#line 2186 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2198 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 14:
-#line 374 "src/parse-gram.y" /* yacc.c:1648  */
+#line 386 "src/parse-gram.y" /* yacc.c:1648  */
     { spec_file_prefix = (yyvsp[0].code); /*}*/
  insert_after(1, "</PYACC_Section1_FilePrefix>");
  insert_before(0, "<PYACC_Section1_FilePrefix>");
  }
-#line 2195 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2207 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 15:
-#line 379 "src/parse-gram.y" /* yacc.c:1648  */
+#line 391 "src/parse-gram.y" /* yacc.c:1648  */
     {
       nondeterministic_parser = true;
       glr_parser = true;
  insert_after(0, "</PYACC_Section1_GLRParser>");
  insert_before(0, "<PYACC_Section1_GLRParser>");
     }
-#line 2206 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2218 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 16:
-#line 386 "src/parse-gram.y" /* yacc.c:1648  */
+#line 398 "src/parse-gram.y" /* yacc.c:1648  */
     {
  code_piece_append("<PYACC_BracedCode>");
       muscle_code_grow ("initial_action", translate_code ((yyvsp[0].code), (yylsp[0]), false), (yylsp[0]));
@@ -2229,80 +2241,80 @@ yyreduce:
  insert_after(1, "</PYACC_Section1_InitialAction>");
  insert_before(0, "<PYACC_Section1_InitialAction>");
     }
-#line 2222 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2234 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 17:
-#line 397 "src/parse-gram.y" /* yacc.c:1648  */
+#line 409 "src/parse-gram.y" /* yacc.c:1648  */
     { language_argmatch ((yyvsp[0].code), grammar_prio, (yylsp[-1])); /*}*/
  insert_after(1, "</PYACC_Section1_Language>");
  insert_before(0, "<PYACC_Section1_Language>");
  }
-#line 2231 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2243 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 18:
-#line 401 "src/parse-gram.y" /* yacc.c:1648  */
+#line 413 "src/parse-gram.y" /* yacc.c:1648  */
     { spec_name_prefix = (yyvsp[0].code); /*}*/
  insert_after(1, "</PYACC_Section1_NamePrefix>");
  insert_before(0, "<PYACC_Section1_NamePrefix>");
  }
-#line 2240 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2252 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 19:
-#line 405 "src/parse-gram.y" /* yacc.c:1648  */
+#line 417 "src/parse-gram.y" /* yacc.c:1648  */
     { no_lines_flag = true; /*}*/
  insert_after(0, "</PYACC_Section1_Lines>");
  insert_before(0, "<PYACC_Section1_Lines value=\"false\">");
  }
-#line 2249 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2261 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 20:
-#line 409 "src/parse-gram.y" /* yacc.c:1648  */
+#line 421 "src/parse-gram.y" /* yacc.c:1648  */
     { nondeterministic_parser = true; /*}*/
  insert_after(0, "</PYACC_Section1_NonDeterministicParser>");
  insert_before(0, "<PYACC_Section1_NonDeterministicParser>");
  }
-#line 2258 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2270 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 21:
-#line 413 "src/parse-gram.y" /* yacc.c:1648  */
+#line 425 "src/parse-gram.y" /* yacc.c:1648  */
     { spec_outfile = (yyvsp[0].code); /*}*/
  insert_after(1, "</PYACC_Section1_Output>");
  insert_before(0, "<PYACC_Section1_Output>");
  }
-#line 2267 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2279 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 22:
-#line 417 "src/parse-gram.y" /* yacc.c:1648  */
+#line 429 "src/parse-gram.y" /* yacc.c:1648  */
     { current_param = (yyvsp[0].param); }
-#line 2273 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2285 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 23:
-#line 417 "src/parse-gram.y" /* yacc.c:1648  */
+#line 429 "src/parse-gram.y" /* yacc.c:1648  */
     { current_param = param_none; /*}*/
  insert_after(2, "</PYACC_Section1_Param>");
  insert_before(0, "<PYACC_Section1_Param>");
  }
-#line 2282 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2294 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 24:
-#line 421 "src/parse-gram.y" /* yacc.c:1648  */
+#line 433 "src/parse-gram.y" /* yacc.c:1648  */
     { version_check (&(yylsp[0]), (yyvsp[0].code)); /*}*/
  insert_after(1, "</PYACC_Section1_Require>");
  insert_before(0, "<PYACC_Section1_Require>");
  }
-#line 2291 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2303 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 25:
-#line 426 "src/parse-gram.y" /* yacc.c:1648  */
+#line 438 "src/parse-gram.y" /* yacc.c:1648  */
     {
       char const *skeleton_user = (yyvsp[0].code);
       if (strchr (skeleton_user, '/'))
@@ -2328,50 +2340,50 @@ yyreduce:
  insert_after(1, "</PYACC_Section1_Skeleton>");
  insert_before(0, "<PYACC_Section1_Skeleton>");
     }
-#line 2321 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2333 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 26:
-#line 451 "src/parse-gram.y" /* yacc.c:1648  */
+#line 463 "src/parse-gram.y" /* yacc.c:1648  */
     { token_table_flag = true; /*}*/
  insert_after(0, "</PYACC_Section1_TokenTable>");
  insert_before(0, "<PYACC_Section1_TokenTable>");
  }
-#line 2330 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2342 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 27:
-#line 455 "src/parse-gram.y" /* yacc.c:1648  */
+#line 467 "src/parse-gram.y" /* yacc.c:1648  */
     { report_flag |= report_states; /*}*/
  insert_after(0, "</PYACC_Section1_Verbose>");
  insert_before(0, "<PYACC_Section1_Verbose>");
  }
-#line 2339 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2351 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 28:
-#line 459 "src/parse-gram.y" /* yacc.c:1648  */
+#line 471 "src/parse-gram.y" /* yacc.c:1648  */
     { yacc_flag = true; /*}*/
  insert_after(0, "</PYACC_Section1_YACC>");
  insert_before(0, "<PYACC_Section1_YACC>");
  }
-#line 2348 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2360 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 30:
-#line 467 "src/parse-gram.y" /* yacc.c:1648  */
+#line 479 "src/parse-gram.y" /* yacc.c:1648  */
     { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2354 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2366 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 31:
-#line 468 "src/parse-gram.y" /* yacc.c:1648  */
+#line 480 "src/parse-gram.y" /* yacc.c:1648  */
     { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2360 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2372 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 34:
-#line 480 "src/parse-gram.y" /* yacc.c:1648  */
+#line 492 "src/parse-gram.y" /* yacc.c:1648  */
     {
       grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
  insert_after(1, "</PYACC_Section1Or2_Start>");
@@ -2379,11 +2391,11 @@ yyreduce:
  insert_before(1, "<PYACC_SymbolRef>");
  insert_before(0, "<PYACC_Section1Or2_Start>");
     }
-#line 2372 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2384 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 35:
-#line 488 "src/parse-gram.y" /* yacc.c:1648  */
+#line 500 "src/parse-gram.y" /* yacc.c:1648  */
     {
       code_props code;
       code_props_symbol_action_init (&code, (yyvsp[-1].code), (yylsp[-1]));
@@ -2403,31 +2415,31 @@ yyreduce:
  sprintf(gram_piece_temp, "<PYACC_Section1Or2_CodeProps _type=\"%d\">", (yyvsp[-2].code_type));
  insert_before(0, gram_piece_temp);
     }
-#line 2396 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2408 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 36:
-#line 508 "src/parse-gram.y" /* yacc.c:1648  */
+#line 520 "src/parse-gram.y" /* yacc.c:1648  */
     {
       default_prec = true;
  insert_after(0, "</PYACC_Section1Or2_DefaultPrec>");
  insert_before(0, "<PYACC_Section1Or2_DefaultPrec value=\"true\">");
    }
-#line 2406 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2418 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 37:
-#line 514 "src/parse-gram.y" /* yacc.c:1648  */
+#line 526 "src/parse-gram.y" /* yacc.c:1648  */
     {
       default_prec = false;
  insert_after(0, "</PYACC_Section1Or2_DefaultPrec>");
  insert_before(0, "<PYACC_Section1Or2_DefaultPrec>");
     }
-#line 2416 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2428 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 38:
-#line 520 "src/parse-gram.y" /* yacc.c:1648  */
+#line 532 "src/parse-gram.y" /* yacc.c:1648  */
     {
       /* Do not invoke muscle_percent_code_grow here since it invokes
          muscle_user_name_list_grow.  */
@@ -2442,11 +2454,11 @@ yyreduce:
  insert_after(1, "</PYACC_Section1Or2_Code>");
  insert_before(0, "<PYACC_Section1Or2_Code><PYACC_ID />");
     }
-#line 2435 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2447 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 39:
-#line 535 "src/parse-gram.y" /* yacc.c:1648  */
+#line 547 "src/parse-gram.y" /* yacc.c:1648  */
     {
  code_piece_append("<PYACC_BracedCode>{");
       muscle_percent_code_grow ((yyvsp[-1].uniqstr), (yylsp[-1]), translate_code_braceless ((yyvsp[0].code), (yylsp[0])), (yylsp[0]));
@@ -2458,37 +2470,37 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Code>");
  insert_before(0, "<PYACC_Section1Or2_Code>");
     }
-#line 2451 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2463 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 40:
-#line 552 "src/parse-gram.y" /* yacc.c:1648  */
+#line 564 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = destructor; }
-#line 2457 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2469 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 41:
-#line 553 "src/parse-gram.y" /* yacc.c:1648  */
+#line 565 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = printer; }
-#line 2463 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2475 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 42:
-#line 563 "src/parse-gram.y" /* yacc.c:1648  */
+#line 575 "src/parse-gram.y" /* yacc.c:1648  */
     { insert_before(0, "<PYACC_ID />"); }
-#line 2469 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2481 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 43:
-#line 564 "src/parse-gram.y" /* yacc.c:1648  */
+#line 576 "src/parse-gram.y" /* yacc.c:1648  */
     { muscle_percent_define_insert ("api.value.union.name",
                                          (yylsp[0]), muscle_keyword, (yyvsp[0].uniqstr),
                                          MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE); }
-#line 2477 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2489 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 44:
-#line 571 "src/parse-gram.y" /* yacc.c:1648  */
+#line 583 "src/parse-gram.y" /* yacc.c:1648  */
     {
       union_seen = true;
  code_piece_append("<PYACC_BracedCode>{");
@@ -2501,45 +2513,45 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Union>");
  insert_before(0, "<PYACC_Section1Or2_Union>");
     }
-#line 2494 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2506 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 45:
-#line 589 "src/parse-gram.y" /* yacc.c:1648  */
+#line 601 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = nterm_sym; }
-#line 2500 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2512 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 46:
-#line 590 "src/parse-gram.y" /* yacc.c:1648  */
+#line 602 "src/parse-gram.y" /* yacc.c:1648  */
     {
       current_class = unknown_sym;
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_NTerm>");
  insert_before(0, "<PYACC_Section1Or2_NTerm>");
     }
-#line 2511 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2523 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 47:
-#line 596 "src/parse-gram.y" /* yacc.c:1648  */
+#line 608 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = token_sym; }
-#line 2517 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2529 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 48:
-#line 597 "src/parse-gram.y" /* yacc.c:1648  */
+#line 609 "src/parse-gram.y" /* yacc.c:1648  */
     {
       current_class = unknown_sym;
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_Token>");
  insert_before(0, "<PYACC_Section1Or2_Token>");
     }
-#line 2528 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2540 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 49:
-#line 604 "src/parse-gram.y" /* yacc.c:1648  */
+#line 616 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_list *list;
       tag_seen = true;
@@ -2549,11 +2561,11 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Type>");
  insert_before(0, "<PYACC_Section1Or2_Type>");
     }
-#line 2542 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2554 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 50:
-#line 617 "src/parse-gram.y" /* yacc.c:1648  */
+#line 629 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_list *list;
       ++current_prec;
@@ -2568,70 +2580,70 @@ yyreduce:
  sprintf(gram_piece_temp, "<PYACC_Section1Or2_Precedence _type=\"%d\">", ((yyvsp[-2].assoc) & 3) - 1); /* -1 precedence, 0 right, 1 left, 2 nonassoc */
  insert_before(0, gram_piece_temp);
     }
-#line 2561 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2573 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 51:
-#line 634 "src/parse-gram.y" /* yacc.c:1648  */
+#line 646 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = left_assoc; }
-#line 2567 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2579 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 52:
-#line 635 "src/parse-gram.y" /* yacc.c:1648  */
+#line 647 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = right_assoc;  }
-#line 2573 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2585 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 53:
-#line 636 "src/parse-gram.y" /* yacc.c:1648  */
+#line 648 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = non_assoc; }
-#line 2579 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2591 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 54:
-#line 637 "src/parse-gram.y" /* yacc.c:1648  */
+#line 649 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = precedence_assoc; }
-#line 2585 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2597 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 55:
-#line 641 "src/parse-gram.y" /* yacc.c:1648  */
+#line 653 "src/parse-gram.y" /* yacc.c:1648  */
     { current_type = NULL; }
-#line 2591 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2603 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 56:
-#line 642 "src/parse-gram.y" /* yacc.c:1648  */
+#line 654 "src/parse-gram.y" /* yacc.c:1648  */
     { current_type = (yyvsp[0].uniqstr); tag_seen = true; }
-#line 2597 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2609 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 57:
-#line 648 "src/parse-gram.y" /* yacc.c:1648  */
+#line 660 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
-#line 2603 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2615 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 58:
-#line 650 "src/parse-gram.y" /* yacc.c:1648  */
+#line 662 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_append ((yyvsp[-1].list), symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0]))); }
-#line 2609 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2621 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 59:
-#line 655 "src/parse-gram.y" /* yacc.c:1648  */
+#line 667 "src/parse-gram.y" /* yacc.c:1648  */
     {
       (yyval.symbol) = (yyvsp[0].symbol);
       symbol_class_set ((yyvsp[0].symbol), token_sym, (yylsp[0]), false);
  insert_after(0, "</PYACC_SymbolRef>");
  insert_before(0, "<PYACC_SymbolRef>");
     }
-#line 2620 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2632 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 60:
-#line 662 "src/parse-gram.y" /* yacc.c:1648  */
+#line 674 "src/parse-gram.y" /* yacc.c:1648  */
     {
       (yyval.symbol) = (yyvsp[-1].symbol);
       symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
@@ -2640,88 +2652,88 @@ yyreduce:
  sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
     }
-#line 2633 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2645 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 61:
-#line 675 "src/parse-gram.y" /* yacc.c:1648  */
+#line 687 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); /*}*/
  insert_after(0, "</PYACC_SymbolRef>");
  insert_before(0, "<PYACC_SymbolRef>");
  }
-#line 2642 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2654 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 62:
-#line 680 "src/parse-gram.y" /* yacc.c:1648  */
+#line 692 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_append ((yyvsp[-1].list), symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0]))); /*}*/
  insert_after(1, "</PYACC_SymbolRef>");
  insert_before(1, "<PYACC_SymbolRef>");
  }
-#line 2651 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2663 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 63:
-#line 687 "src/parse-gram.y" /* yacc.c:1648  */
+#line 699 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = (yyvsp[0].list); }
-#line 2657 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2669 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 64:
-#line 688 "src/parse-gram.y" /* yacc.c:1648  */
+#line 700 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_append ((yyvsp[-1].list), (yyvsp[0].list)); }
-#line 2663 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2675 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 65:
-#line 692 "src/parse-gram.y" /* yacc.c:1648  */
+#line 704 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); /*}*/
  insert_after(0, "</PYACC_SymbolRef>");
  insert_before(0, "<PYACC_SymbolRef>");
  }
-#line 2672 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2684 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 66:
-#line 696 "src/parse-gram.y" /* yacc.c:1648  */
+#line 708 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_type_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2678 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2690 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 68:
-#line 701 "src/parse-gram.y" /* yacc.c:1648  */
+#line 713 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ("*"); }
-#line 2684 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2696 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 69:
-#line 702 "src/parse-gram.y" /* yacc.c:1648  */
+#line 714 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new (""); }
-#line 2690 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2702 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 70:
-#line 708 "src/parse-gram.y" /* yacc.c:1648  */
+#line 720 "src/parse-gram.y" /* yacc.c:1648  */
     {
       current_type = (yyvsp[0].uniqstr);
       tag_seen = true;
     }
-#line 2699 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2711 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 71:
-#line 713 "src/parse-gram.y" /* yacc.c:1648  */
+#line 725 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]), true);
       symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
  insert_after(0, "</PYACC_SymbolRef>");
  insert_before(0, "<PYACC_SymbolRef>");
     }
-#line 2710 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2722 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 72:
-#line 720 "src/parse-gram.y" /* yacc.c:1648  */
+#line 732 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]), true);
       symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
@@ -2730,11 +2742,11 @@ yyreduce:
  sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
     }
-#line 2723 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2735 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 73:
-#line 729 "src/parse-gram.y" /* yacc.c:1648  */
+#line 741 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]), true);
       symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
@@ -2742,11 +2754,11 @@ yyreduce:
  insert_after(1, "</PYACC_SymbolRef>");
  insert_before(0, "<PYACC_SymbolRef>");
     }
-#line 2735 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2747 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 74:
-#line 737 "src/parse-gram.y" /* yacc.c:1648  */
+#line 749 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2]), true);
       symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2]));
@@ -2756,25 +2768,25 @@ yyreduce:
  sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", (yyvsp[-1].integer));
  insert_before(0, gram_piece_temp);
     }
-#line 2749 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2761 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 81:
-#line 770 "src/parse-gram.y" /* yacc.c:1648  */
+#line 782 "src/parse-gram.y" /* yacc.c:1648  */
     {
       yyerrok;
     }
-#line 2757 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2769 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 82:
-#line 776 "src/parse-gram.y" /* yacc.c:1648  */
+#line 788 "src/parse-gram.y" /* yacc.c:1648  */
     { current_lhs ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); }
-#line 2763 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2775 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 83:
-#line 777 "src/parse-gram.y" /* yacc.c:1648  */
+#line 789 "src/parse-gram.y" /* yacc.c:1648  */
     {
     /* Free the current lhs. */
     current_lhs (0, (yylsp[-3]), 0);
@@ -2784,29 +2796,29 @@ yyreduce:
  insert_before(0, "<PYACC_SymbolRef>");
  insert_before(0, "<PYACC_Section2_Rules>");
   }
-#line 2777 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2789 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 84:
-#line 789 "src/parse-gram.y" /* yacc.c:1648  */
+#line 801 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
  insert_after(0, "</PYACC_Production>");
  insert_before(0, "<PYACC_Production>");
  }
-#line 2786 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2798 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 85:
-#line 793 "src/parse-gram.y" /* yacc.c:1648  */
+#line 805 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Production>");
  insert_before(2, "<PYACC_Production>");
  }
-#line 2795 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2807 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 87:
-#line 803 "src/parse-gram.y" /* yacc.c:1648  */
+#line 815 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_begin (current_lhs_symbol, current_lhs_location,
                                   current_lhs_named_ref); /*}*/
  /* in this case, want empty rule associated with stuff on the right of us */
@@ -2818,21 +2830,21 @@ yyreduce:
  gram_piece[gram_piece2] = gram_piece[gram_piece2 - 1]; /* empty */
  gram_piece[gram_piece2 - 1] = temp;
  }
-#line 2811 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2823 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 88:
-#line 815 "src/parse-gram.y" /* yacc.c:1648  */
+#line 827 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_symbol_append ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); /*}*/
  insert_after(2, "</PYACC_Production_SymbolRef>");
  insert_after(1, "</PYACC_SymbolRef>");
  insert_before(1, "<PYACC_Production_SymbolRef><PYACC_SymbolRef>");
  }
-#line 2821 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2833 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 89:
-#line 821 "src/parse-gram.y" /* yacc.c:1648  */
+#line 833 "src/parse-gram.y" /* yacc.c:1648  */
     { code_piece_append("<PYACC_BracedCode>"); grammar_current_rule_action_append ((yyvsp[-1].code), (yylsp[-1]), (yyvsp[0].named_ref), false); /*}*/
  code_piece_append("</PYACC_BracedCode>");
  code_piece_pack();
@@ -2841,129 +2853,129 @@ yyreduce:
  insert_after(2, "</PYACC_Production_Action>");
  insert_before(1, "<PYACC_Production_Action>");
  }
-#line 2834 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2846 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 90:
-#line 830 "src/parse-gram.y" /* yacc.c:1648  */
+#line 842 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
-#line 2840 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2852 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 91:
-#line 832 "src/parse-gram.y" /* yacc.c:1648  */
+#line 844 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_empty_set ((yylsp[0])); /*}*/
  insert_after(1, "</PYACC_Production_Empty>");
  insert_before(1, "<PYACC_Production_Empty>");
  }
-#line 2849 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2861 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 92:
-#line 837 "src/parse-gram.y" /* yacc.c:1648  */
+#line 849 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Production_Prec>");
  insert_after(2, "</PYACC_SymbolRef>");
  insert_before(2, "<PYACC_SymbolRef>");
  insert_before(1, "<PYACC_Production_Prec>");
  }
-#line 2860 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2872 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 93:
-#line 844 "src/parse-gram.y" /* yacc.c:1648  */
+#line 856 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Production_DPrec>");
  sprintf(gram_piece_temp, "<PYACC_Production_DPrec value=\"%d\">", (yyvsp[0].integer));
  insert_before(1, gram_piece_temp);
  }
-#line 2870 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2882 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 94:
-#line 850 "src/parse-gram.y" /* yacc.c:1648  */
+#line 862 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Production_Merge>");
  insert_before(1, "<PYACC_Production_Merge>");
  }
-#line 2879 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2891 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 95:
-#line 857 "src/parse-gram.y" /* yacc.c:1648  */
+#line 869 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = 0; }
-#line 2885 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2897 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 96:
-#line 858 "src/parse-gram.y" /* yacc.c:1648  */
+#line 870 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = named_ref_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2891 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2903 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 98:
-#line 869 "src/parse-gram.y" /* yacc.c:1648  */
+#line 881 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[0].code)); }
-#line 2897 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2909 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 99:
-#line 894 "src/parse-gram.y" /* yacc.c:1648  */
+#line 906 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = ""; }
-#line 2903 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2915 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 100:
-#line 895 "src/parse-gram.y" /* yacc.c:1648  */
+#line 907 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = (yyvsp[0].uniqstr); }
-#line 2909 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2921 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 101:
-#line 896 "src/parse-gram.y" /* yacc.c:1648  */
+#line 908 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_string;  (yyval.value).chars = (yyvsp[0].code); }
-#line 2915 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2927 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 102:
-#line 897 "src/parse-gram.y" /* yacc.c:1648  */
+#line 909 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_code;    (yyval.value).chars = strip_braces ((yyvsp[0].code)); }
-#line 2921 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2933 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 103:
-#line 910 "src/parse-gram.y" /* yacc.c:1648  */
+#line 922 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2927 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2939 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 104:
-#line 912 "src/parse-gram.y" /* yacc.c:1648  */
+#line 924 "src/parse-gram.y" /* yacc.c:1648  */
     {
       (yyval.symbol) = symbol_get (char_name ((yyvsp[0].character)), (yylsp[0]));
       symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]), false);
       symbol_user_token_number_set ((yyval.symbol), (yyvsp[0].character), (yylsp[0]));
     }
-#line 2937 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2949 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 105:
-#line 920 "src/parse-gram.y" /* yacc.c:1648  */
+#line 932 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2943 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2955 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 108:
-#line 932 "src/parse-gram.y" /* yacc.c:1648  */
+#line 944 "src/parse-gram.y" /* yacc.c:1648  */
     {
       (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].code)), (yylsp[0]));
       symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]), false);
     }
-#line 2952 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2964 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 110:
-#line 941 "src/parse-gram.y" /* yacc.c:1648  */
+#line 953 "src/parse-gram.y" /* yacc.c:1648  */
     {
 #if 0
  int gram_piece0_save = gram_piece0, gram_piece1_save = gram_piece1;
@@ -2984,11 +2996,11 @@ yyreduce:
  insert_after(1, "</PYACC_Section3>");
  insert_after(0, "<PYACC_Section3>");
     }
-#line 2977 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2989 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
 
-#line 2981 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2993 "src/parse-gram.c" /* yacc.c:1648  */
         default: break;
       }
     if (yychar_backup != yychar)
@@ -3251,7 +3263,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 963 "src/parse-gram.y" /* yacc.c:1907  */
+#line 975 "src/parse-gram.y" /* yacc.c:1907  */
 
 
 /* Return the location of the left-hand side of a rule whose
index fb13203..4521396 100644 (file)
@@ -61,7 +61,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 873 "src/parse-gram.y" /* yacc.c:1910  */
+#line 885 "src/parse-gram.y" /* yacc.c:1910  */
 #include "muscle-tab.h"
 
 #line 68 "src/parse-gram.h" /* yacc.c:1910  */
@@ -153,9 +153,9 @@ symbol_list *list;
 named_ref *named_ref;
 #line 266 "src/parse-gram.y" /* yacc.c:1910  */
 param_type param;
-#line 549 "src/parse-gram.y" /* yacc.c:1910  */
+#line 561 "src/parse-gram.y" /* yacc.c:1910  */
 code_props_type code_type;
-#line 875 "src/parse-gram.y" /* yacc.c:1910  */
+#line 887 "src/parse-gram.y" /* yacc.c:1910  */
 
   struct
   {
index 652c10a..54347ea 100644 (file)
@@ -332,8 +332,20 @@ prologue_declaration:
 | "%<flag>"
     {
       muscle_percent_define_ensure ($1, @1, true);
- insert_after(0, "</PYACC_Section1_Flag>");
- insert_before(0, "<PYACC_Section1_Flag>");
+ if (strcmp($1, "api.pure") == 0) {
+  insert_after(0, "</PYACC_Section1_PureParser>");
+  insert_before(0, "<PYACC_Section1_PureParser>");
+ }
+ else if (strcmp($1, "locations") == 0) {
+  insert_after(0, "</PYACC_Section1_Locations>");
+  insert_before(0, "<PYACC_Section1_Locations>");
+ }
+ else if (strcmp($1, "parse.trace") == 0) {
+  insert_after(0, "</PYACC_Section1_Debug>");
+  insert_before(0, "<PYACC_Section1_Debug>");
+ }
+ else
+  abort();
     }
 | "%define" variable value
     {