Rework how tag/symbol lists from the parser are handled
authorNick Downing <downing.nick@gmail.com>
Tue, 17 Jul 2018 02:15:19 +0000 (12:15 +1000)
committerNick Downing <downing.nick@gmail.com>
Tue, 17 Jul 2018 02:15:19 +0000 (12:15 +1000)
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
src/scan-gram.c
src/scan-gram.l
src/symtab.c

index 6a778ca..23546ad 100644 (file)
@@ -129,7 +129,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 846 "src/parse-gram.y" /* yacc.c:355  */
+#line 859 "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 247 "src/parse-gram.y" /* yacc.c:355  */
 param_type param;
-#line 528 "src/parse-gram.y" /* yacc.c:355  */
+#line 532 "src/parse-gram.y" /* yacc.c:355  */
 code_props_type code_type;
-#line 848 "src/parse-gram.y" /* yacc.c:355  */
+#line 861 "src/parse-gram.y" /* yacc.c:355  */
 
   struct
   {
@@ -626,17 +626,17 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint16 yyrline[] =
 {
        0,   270,   270,   285,   296,   300,   301,   313,   319,   326,
-     330,   337,   345,   349,   353,   357,   364,   376,   380,   384,
-     388,   392,   396,   396,   400,   404,   430,   434,   438,   442,
-     446,   447,   456,   457,   458,   464,   486,   492,   498,   513,
-     531,   532,   542,   543,   549,   568,   568,   575,   575,   582,
-     597,   617,   618,   619,   620,   624,   627,   632,   634,   639,
-     644,   656,   658,   663,   664,   668,   669,   673,   678,   682,
-     690,   695,   700,   708,   717,   730,   731,   740,   741,   747,
-     748,   749,   756,   756,   766,   770,   774,   779,   791,   796,
-     805,   807,   812,   817,   822,   830,   831,   841,   842,   867,
-     868,   869,   870,   882,   884,   893,   898,   899,   904,   912,
-     913
+     330,   337,   345,   351,   357,   361,   368,   380,   384,   388,
+     392,   396,   400,   400,   404,   408,   434,   438,   442,   446,
+     450,   451,   460,   461,   462,   468,   490,   496,   502,   517,
+     535,   536,   546,   547,   553,   572,   572,   581,   581,   590,
+     605,   625,   626,   627,   628,   632,   633,   638,   640,   645,
+     652,   665,   670,   678,   679,   683,   687,   691,   692,   693,
+     698,   703,   710,   719,   727,   741,   742,   751,   752,   758,
+     759,   760,   767,   767,   777,   781,   785,   790,   802,   807,
+     816,   818,   823,   828,   835,   843,   844,   854,   855,   880,
+     881,   882,   883,   895,   897,   906,   911,   912,   917,   925,
+     926
 };
 #endif
 
@@ -1097,7 +1097,7 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
         break;
 
     case 65: /* code_props_type  */
-#line 529 "src/parse-gram.y" /* yacc.c:684  */
+#line 533 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s", code_props_type_string (((*yyvaluep).code_type))); }
 #line 1103 "src/parse-gram.c" /* yacc.c:684  */
         break;
@@ -1121,7 +1121,7 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
         break;
 
     case 89: /* value  */
-#line 857 "src/parse-gram.y" /* yacc.c:684  */
+#line 870 "src/parse-gram.y" /* yacc.c:684  */
       {
   switch (((*yyvaluep).value).kind)
     {
@@ -2183,42 +2183,46 @@ yyreduce:
 #line 345 "src/parse-gram.y" /* yacc.c:1648  */
     { expected_sr_conflicts = (yyvsp[0].integer); /*}*/
  insert_after(1, "</PYACC_Section1_Expect>");
+ insert_after(1, "</PYACC_Int>");
+ insert_before(1, "<PYACC_Int>");
  insert_before(0, "<PYACC_Section1_Expect>");
  }
-#line 2156 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2158 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 13:
-#line 349 "src/parse-gram.y" /* yacc.c:1648  */
+#line 351 "src/parse-gram.y" /* yacc.c:1648  */
     { expected_rr_conflicts = (yyvsp[0].integer); /*}*/
  insert_after(1, "</PYACC_Section1_ExpectRR>");
+ insert_after(1, "</PYACC_Int>");
+ insert_before(1, "<PYACC_Int>");
  insert_before(0, "<PYACC_Section1_ExpectRR>");
  }
-#line 2165 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2169 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 14:
-#line 353 "src/parse-gram.y" /* yacc.c:1648  */
+#line 357 "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 2174 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2178 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 15:
-#line 358 "src/parse-gram.y" /* yacc.c:1648  */
+#line 362 "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 2185 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2189 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 16:
-#line 365 "src/parse-gram.y" /* yacc.c:1648  */
+#line 369 "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]));
@@ -2230,80 +2234,80 @@ yyreduce:
  insert_after(1, "</PYACC_Section1_InitialAction>");
  insert_before(0, "<PYACC_Section1_InitialAction>");
     }
-#line 2201 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2205 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 17:
-#line 376 "src/parse-gram.y" /* yacc.c:1648  */
+#line 380 "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 2210 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2214 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 18:
-#line 380 "src/parse-gram.y" /* yacc.c:1648  */
+#line 384 "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 2219 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2223 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 19:
-#line 384 "src/parse-gram.y" /* yacc.c:1648  */
+#line 388 "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 2228 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2232 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 20:
-#line 388 "src/parse-gram.y" /* yacc.c:1648  */
+#line 392 "src/parse-gram.y" /* yacc.c:1648  */
     { nondeterministic_parser = true; /*}*/
  insert_after(0, "</PYACC_Section1_NonDeterministicParser>");
  insert_before(0, "<PYACC_Section1_NonDeterministicParser>");
  }
-#line 2237 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2241 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 21:
-#line 392 "src/parse-gram.y" /* yacc.c:1648  */
+#line 396 "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 2246 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2250 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 22:
-#line 396 "src/parse-gram.y" /* yacc.c:1648  */
+#line 400 "src/parse-gram.y" /* yacc.c:1648  */
     { current_param = (yyvsp[0].param); }
-#line 2252 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2256 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 23:
-#line 396 "src/parse-gram.y" /* yacc.c:1648  */
+#line 400 "src/parse-gram.y" /* yacc.c:1648  */
     { current_param = param_none; /*}*/
  insert_after(2, "</PYACC_Section1_Param>");
  insert_before(0, "<PYACC_Section1_Param>");
  }
-#line 2261 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2265 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 24:
-#line 400 "src/parse-gram.y" /* yacc.c:1648  */
+#line 404 "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 2270 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2274 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 25:
-#line 405 "src/parse-gram.y" /* yacc.c:1648  */
+#line 409 "src/parse-gram.y" /* yacc.c:1648  */
     {
       char const *skeleton_user = (yyvsp[0].code);
       if (strchr (skeleton_user, '/'))
@@ -2329,60 +2333,60 @@ yyreduce:
  insert_after(1, "</PYACC_Section1_Skeleton>");
  insert_before(0, "<PYACC_Section1_Skeleton>");
     }
-#line 2300 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2304 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 26:
-#line 430 "src/parse-gram.y" /* yacc.c:1648  */
+#line 434 "src/parse-gram.y" /* yacc.c:1648  */
     { token_table_flag = true; /*}*/
  insert_after(0, "</PYACC_Section1_TokenTable>");
  insert_before(0, "<PYACC_Section1_TokenTable>");
  }
-#line 2309 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2313 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 27:
-#line 434 "src/parse-gram.y" /* yacc.c:1648  */
+#line 438 "src/parse-gram.y" /* yacc.c:1648  */
     { report_flag |= report_states; /*}*/
  insert_after(0, "</PYACC_Section1_Verbose>");
  insert_before(0, "<PYACC_Section1_Verbose>");
  }
-#line 2318 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2322 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 28:
-#line 438 "src/parse-gram.y" /* yacc.c:1648  */
+#line 442 "src/parse-gram.y" /* yacc.c:1648  */
     { yacc_flag = true; /*}*/
  insert_after(0, "</PYACC_Section1_YACC>");
  insert_before(0, "<PYACC_Section1_YACC>");
  }
-#line 2327 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2331 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 30:
-#line 446 "src/parse-gram.y" /* yacc.c:1648  */
+#line 450 "src/parse-gram.y" /* yacc.c:1648  */
     { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2333 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2337 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 31:
-#line 447 "src/parse-gram.y" /* yacc.c:1648  */
+#line 451 "src/parse-gram.y" /* yacc.c:1648  */
     { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2339 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2343 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 34:
-#line 459 "src/parse-gram.y" /* yacc.c:1648  */
+#line 463 "src/parse-gram.y" /* yacc.c:1648  */
     {
       grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
  insert_after(1, "</PYACC_Section1Or2_Start>");
  insert_before(0, "<PYACC_Section1Or2_Start>");
     }
-#line 2349 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2353 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 35:
-#line 465 "src/parse-gram.y" /* yacc.c:1648  */
+#line 469 "src/parse-gram.y" /* yacc.c:1648  */
     {
       code_props code;
       code_props_symbol_action_init (&code, (yyvsp[-1].code), (yylsp[-1]));
@@ -2399,36 +2403,36 @@ yyreduce:
         symbol_list_free ((yyvsp[0].list));
       }
  insert_after(2, "</PYACC_Section1Or2_CodeProps>");
- insert_after(2, "</PYACC_Section1Or2_CodeProps_GenericSymList>");
- insert_before(2, "<PYACC_Section1Or2_CodeProps_GenericSymList>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
  sprintf(gram_piece_temp, "<PYACC_Section1Or2_CodeProps type=\"%d\">", (yyvsp[-2].code_type));
  insert_before(0, gram_piece_temp);
     }
-#line 2375 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2379 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 36:
-#line 487 "src/parse-gram.y" /* yacc.c:1648  */
+#line 491 "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 2385 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2389 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 37:
-#line 493 "src/parse-gram.y" /* yacc.c:1648  */
+#line 497 "src/parse-gram.y" /* yacc.c:1648  */
     {
       default_prec = false;
  insert_after(0, "</PYACC_Section1Or2_DefaultPrec>");
  insert_before(0, "<PYACC_Section1Or2_DefaultPrec>");
     }
-#line 2395 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2399 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 38:
-#line 499 "src/parse-gram.y" /* yacc.c:1648  */
+#line 503 "src/parse-gram.y" /* yacc.c:1648  */
     {
       /* Do not invoke muscle_percent_code_grow here since it invokes
          muscle_user_name_list_grow.  */
@@ -2443,11 +2447,11 @@ yyreduce:
  insert_after(1, "</PYACC_Section1Or2_Code>");
  insert_before(0, "<PYACC_Section1Or2_Code><PYACC_IDNone />");
     }
-#line 2414 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2418 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 39:
-#line 514 "src/parse-gram.y" /* yacc.c:1648  */
+#line 518 "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]));
@@ -2459,37 +2463,37 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Code>");
  insert_before(0, "<PYACC_Section1Or2_Code>");
     }
-#line 2430 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2434 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 40:
-#line 531 "src/parse-gram.y" /* yacc.c:1648  */
+#line 535 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = destructor; }
-#line 2436 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2440 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 41:
-#line 532 "src/parse-gram.y" /* yacc.c:1648  */
+#line 536 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = printer; }
-#line 2442 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2446 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 42:
-#line 542 "src/parse-gram.y" /* yacc.c:1648  */
+#line 546 "src/parse-gram.y" /* yacc.c:1648  */
     { insert_before(0, "<PYACC_IDNone />"); }
-#line 2448 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2452 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 43:
-#line 543 "src/parse-gram.y" /* yacc.c:1648  */
+#line 547 "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 2456 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2460 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 44:
-#line 550 "src/parse-gram.y" /* yacc.c:1648  */
+#line 554 "src/parse-gram.y" /* yacc.c:1648  */
     {
       union_seen = true;
  code_piece_append("<PYACC_BracedCode>");
@@ -2502,45 +2506,49 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Union>");
  insert_before(0, "<PYACC_Section1Or2_Union>");
     }
-#line 2473 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2477 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 45:
-#line 568 "src/parse-gram.y" /* yacc.c:1648  */
+#line 572 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = nterm_sym; }
-#line 2479 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2483 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 46:
-#line 569 "src/parse-gram.y" /* yacc.c:1648  */
+#line 573 "src/parse-gram.y" /* yacc.c:1648  */
     {
       current_class = unknown_sym;
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_NTerm>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
  insert_before(0, "<PYACC_Section1Or2_NTerm>");
     }
-#line 2490 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2496 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 47:
-#line 575 "src/parse-gram.y" /* yacc.c:1648  */
+#line 581 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = token_sym; }
-#line 2496 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2502 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 48:
-#line 576 "src/parse-gram.y" /* yacc.c:1648  */
+#line 582 "src/parse-gram.y" /* yacc.c:1648  */
     {
       current_class = unknown_sym;
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_Token>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
  insert_before(0, "<PYACC_Section1Or2_Token>");
     }
-#line 2507 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2515 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 49:
-#line 583 "src/parse-gram.y" /* yacc.c:1648  */
+#line 591 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_list *list;
       tag_seen = true;
@@ -2548,15 +2556,15 @@ yyreduce:
         symbol_type_set (list->content.sym, (yyvsp[-1].uniqstr), (yylsp[-1]));
       symbol_list_free ((yyvsp[0].list));
  insert_after(2, "</PYACC_Section1Or2_Type>");
- insert_after(2, "</PYACC_Section1Or2_Type_Symbols>");
- insert_before(2, "<PYACC_Section1Or2_Type_Symbols>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
  insert_before(0, "<PYACC_Section1Or2_Type>");
     }
-#line 2523 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2531 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 50:
-#line 598 "src/parse-gram.y" /* yacc.c:1648  */
+#line 606 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_list *list;
       ++current_prec;
@@ -2568,249 +2576,247 @@ yyreduce:
       symbol_list_free ((yyvsp[0].list));
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_Precedence>");
- insert_after(2, "</PYACC_Section1Or2_Precedence_Symbols>");
- insert_before(2, "<PYACC_Section1Or2_Precedence_Symbols>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
  sprintf(gram_piece_temp, "<PYACC_Section1Or2_Precedence type=\"%d\">", (yyvsp[-2].assoc)); 
  insert_before(0, gram_piece_temp);
     }
-#line 2544 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2552 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 51:
-#line 617 "src/parse-gram.y" /* yacc.c:1648  */
+#line 625 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = left_assoc; }
-#line 2550 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2558 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 52:
-#line 618 "src/parse-gram.y" /* yacc.c:1648  */
+#line 626 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = right_assoc;  }
-#line 2556 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2564 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 53:
-#line 619 "src/parse-gram.y" /* yacc.c:1648  */
+#line 627 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = non_assoc; }
-#line 2562 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2570 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 54:
-#line 620 "src/parse-gram.y" /* yacc.c:1648  */
+#line 628 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = precedence_assoc; }
-#line 2568 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2576 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 55:
-#line 624 "src/parse-gram.y" /* yacc.c:1648  */
-    { current_type = NULL; /*}*/
- insert_before(0, "<PYACC_TagNone />");
- }
-#line 2576 "src/parse-gram.c" /* yacc.c:1648  */
+#line 632 "src/parse-gram.y" /* yacc.c:1648  */
+    { current_type = NULL; }
+#line 2582 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 56:
-#line 627 "src/parse-gram.y" /* yacc.c:1648  */
+#line 633 "src/parse-gram.y" /* yacc.c:1648  */
     { current_type = (yyvsp[0].uniqstr); tag_seen = true; }
-#line 2582 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2588 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 57:
-#line 633 "src/parse-gram.y" /* yacc.c:1648  */
+#line 639 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
-#line 2588 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2594 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 58:
-#line 635 "src/parse-gram.y" /* yacc.c:1648  */
+#line 641 "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 2594 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2600 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 59:
-#line 640 "src/parse-gram.y" /* yacc.c:1648  */
+#line 646 "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_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
     }
-#line 2603 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2611 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 60:
-#line 645 "src/parse-gram.y" /* yacc.c:1648  */
+#line 653 "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]));
       symbol_class_set ((yyvsp[-1].symbol), token_sym, (yylsp[-1]), false);
- insert_after(1, "<PYACC_Section1Or2_Precedence_Symbols_Symbol>");
- insert_before(0, "<PYACC_Sectino1Or2_Precedence_Symbols_Symbol>");
+ insert_after(1, "</PYACC_Section1Or2_Symbol>");
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Symbol user_token=\"%d\">", (yyvsp[0].integer));
+ insert_before(0, gram_piece_temp);
     }
-#line 2615 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2624 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 61:
-#line 657 "src/parse-gram.y" /* yacc.c:1648  */
-    { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
-#line 2621 "src/parse-gram.c" /* yacc.c:1648  */
+#line 666 "src/parse-gram.y" /* yacc.c:1648  */
+    { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); /*}*/
+ insert_after(0, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
+ }
+#line 2633 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 62:
-#line 659 "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 2627 "src/parse-gram.c" /* yacc.c:1648  */
+#line 671 "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_Section1Or2_Symbol>");
+ insert_before(1, "<PYACC_Section1Or2_Symbol>");
+ }
+#line 2642 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 63:
-#line 663 "src/parse-gram.y" /* yacc.c:1648  */
+#line 678 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = (yyvsp[0].list); }
-#line 2633 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2648 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 64:
-#line 664 "src/parse-gram.y" /* yacc.c:1648  */
+#line 679 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_append ((yyvsp[-1].list), (yyvsp[0].list)); }
-#line 2639 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2654 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 65:
-#line 668 "src/parse-gram.y" /* yacc.c:1648  */
-    { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
-#line 2645 "src/parse-gram.c" /* yacc.c:1648  */
+#line 683 "src/parse-gram.y" /* yacc.c:1648  */
+    { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); /*}*/
+ insert_after(0, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
+ }
+#line 2663 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 66:
-#line 669 "src/parse-gram.y" /* yacc.c:1648  */
+#line 687 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_type_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2651 "src/parse-gram.c" /* yacc.c:1648  */
-    break;
-
-  case 67:
-#line 674 "src/parse-gram.y" /* yacc.c:1648  */
-    {
- insert_after(0, "</PYACC_Tag");
- insert_before(0, "<PYACC_Tag type=\"0\">");
- }
-#line 2660 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2669 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 68:
-#line 678 "src/parse-gram.y" /* yacc.c:1648  */
-    { (yyval.uniqstr) = uniqstr_new ("*"); /*}*/
- insert_after(0, "</PYACC_Tag");
- insert_before(0, "<PYACC_Tag type=\"1\">");
- }
-#line 2669 "src/parse-gram.c" /* yacc.c:1648  */
+#line 692 "src/parse-gram.y" /* yacc.c:1648  */
+    { (yyval.uniqstr) = uniqstr_new ("*"); }
+#line 2675 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 69:
-#line 682 "src/parse-gram.y" /* yacc.c:1648  */
-    { (yyval.uniqstr) = uniqstr_new (""); /*}*/
- insert_after(0, "</PYACC_Tag");
- insert_before(0, "<PYACC_Tag type=\"2\">");
- }
-#line 2678 "src/parse-gram.c" /* yacc.c:1648  */
+#line 693 "src/parse-gram.y" /* yacc.c:1648  */
+    { (yyval.uniqstr) = uniqstr_new (""); }
+#line 2681 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 70:
-#line 691 "src/parse-gram.y" /* yacc.c:1648  */
+#line 699 "src/parse-gram.y" /* yacc.c:1648  */
     {
       current_type = (yyvsp[0].uniqstr);
       tag_seen = true;
     }
-#line 2687 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2690 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 71:
-#line 696 "src/parse-gram.y" /* yacc.c:1648  */
+#line 704 "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_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
     }
-#line 2696 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2701 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 72:
-#line 701 "src/parse-gram.y" /* yacc.c:1648  */
+#line 711 "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]));
       symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
- insert_after(1, "</PYACC_Section1Or2_SymbolDef>");
- insert_before(0, "<PYACC_Section1Or2_SymbolDef>");
+ insert_after(1, "</PYACC_Section1Or2_Symbol>");
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Symbol user_token=\"%d\">", (yyvsp[0].integer));
+ insert_before(0, gram_piece_temp);
     }
-#line 2708 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2714 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 73:
-#line 709 "src/parse-gram.y" /* yacc.c:1648  */
+#line 720 "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]));
       symbol_make_alias ((yyvsp[-1].symbol), (yyvsp[0].symbol), (yyloc));
- insert_after(1, "</PYACC_Section1Or2_SymbolDef>");
- insert_after(0, "<PYACC_IntNone />");
- insert_before(0, "<PYACC_Section1Or2_SymbolDef>");
+ insert_after(1, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
     }
-#line 2721 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2726 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 74:
-#line 718 "src/parse-gram.y" /* yacc.c:1648  */
+#line 728 "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]));
       symbol_user_token_number_set ((yyvsp[-2].symbol), (yyvsp[-1].integer), (yylsp[-1]));
       symbol_make_alias ((yyvsp[-2].symbol), (yyvsp[0].symbol), (yyloc));
- insert_after(2, "</PYACC_Section1Or2_SymbolDef>");
- insert_before(0, "<PYACC_Section1Or2_SymbolDef>");
+ insert_after(2, "</PYACC_Section1Or2_Symbol>");
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Symbol user_token=\"%d\">", (yyvsp[-1].integer));
+ insert_before(0, gram_piece_temp);
     }
-#line 2734 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2740 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 81:
-#line 750 "src/parse-gram.y" /* yacc.c:1648  */
+#line 761 "src/parse-gram.y" /* yacc.c:1648  */
     {
       yyerrok;
     }
-#line 2742 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2748 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 82:
-#line 756 "src/parse-gram.y" /* yacc.c:1648  */
+#line 767 "src/parse-gram.y" /* yacc.c:1648  */
     { current_lhs ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); }
-#line 2748 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2754 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 83:
-#line 757 "src/parse-gram.y" /* yacc.c:1648  */
+#line 768 "src/parse-gram.y" /* yacc.c:1648  */
     {
     /* Free the current lhs. */
     current_lhs (0, (yylsp[-3]), 0);
  insert_after(3, "</PYACC_Section2_Rules>");
  insert_before(0, "<PYACC_Section2_Rules>");
   }
-#line 2759 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2765 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 84:
-#line 766 "src/parse-gram.y" /* yacc.c:1648  */
+#line 777 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
  insert_after(0, "</PYACC_Section2_Rules_RHS>");
  insert_before(0, "<PYACC_Section2_Rules_RHS>");
  }
-#line 2768 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2774 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 85:
-#line 770 "src/parse-gram.y" /* yacc.c:1648  */
+#line 781 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Section2_Rules_RHS>");
  insert_before(2, "<PYACC_Section2_Rules_RHS>");
  }
-#line 2777 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2783 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 87:
-#line 780 "src/parse-gram.y" /* yacc.c:1648  */
+#line 791 "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 */
@@ -2822,20 +2828,20 @@ yyreduce:
  gram_piece[gram_piece2] = gram_piece[gram_piece2 - 1]; /* empty */
  gram_piece[gram_piece2 - 1] = temp;
  }
-#line 2793 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2799 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 88:
-#line 792 "src/parse-gram.y" /* yacc.c:1648  */
+#line 803 "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_Section2_Rules_RHS_Symbol>");
  insert_before(1, "<PYACC_Section2_Rules_RHS_Symbol>");
  }
-#line 2802 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2808 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 89:
-#line 797 "src/parse-gram.y" /* yacc.c:1648  */
+#line 808 "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();
@@ -2844,126 +2850,128 @@ yyreduce:
  insert_after(2, "</PYACC_Section2_Rules_RHS_Action>");
  insert_before(1, "<PYACC_Section2_Rules_RHS_Action>");
  }
-#line 2815 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2821 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 90:
-#line 806 "src/parse-gram.y" /* yacc.c:1648  */
+#line 817 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
-#line 2821 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2827 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 91:
-#line 808 "src/parse-gram.y" /* yacc.c:1648  */
+#line 819 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_empty_set ((yylsp[0])); /*}*/
  insert_after(1, "</PYACC_Section2_Rules_RHS_Empty>");
  insert_before(1, "<PYACC_Section2_Rules_RHS_Empty>");
  }
-#line 2830 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2836 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 92:
-#line 813 "src/parse-gram.y" /* yacc.c:1648  */
+#line 824 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Section2_Rules_RHS_Prec>");
  insert_before(1, "<PYACC_Section2_Rules_RHS_Prec>");
  }
-#line 2839 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2845 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 93:
-#line 818 "src/parse-gram.y" /* yacc.c:1648  */
+#line 829 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Section2_Rules_RHS_DPrec>");
+ insert_after(2, "</PYACC_Int>");
+ insert_before(2, "<PYACC_Int>");
  insert_before(1, "<PYACC_Section2_Rules_RHS_DPrec>");
  }
-#line 2848 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2856 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 94:
-#line 823 "src/parse-gram.y" /* yacc.c:1648  */
+#line 836 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Section2_Rules_RHS_Merge>");
  insert_before(1, "<PYACC_Section2_Rules_RHS_Merge>");
  }
-#line 2857 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2865 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 95:
-#line 830 "src/parse-gram.y" /* yacc.c:1648  */
+#line 843 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = 0; }
-#line 2863 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2871 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 96:
-#line 831 "src/parse-gram.y" /* yacc.c:1648  */
+#line 844 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = named_ref_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2869 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2877 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 98:
-#line 842 "src/parse-gram.y" /* yacc.c:1648  */
+#line 855 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[0].code)); }
-#line 2875 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2883 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 99:
-#line 867 "src/parse-gram.y" /* yacc.c:1648  */
+#line 880 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = ""; }
-#line 2881 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2889 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 100:
-#line 868 "src/parse-gram.y" /* yacc.c:1648  */
+#line 881 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = (yyvsp[0].uniqstr); }
-#line 2887 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2895 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 101:
-#line 869 "src/parse-gram.y" /* yacc.c:1648  */
+#line 882 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_string;  (yyval.value).chars = (yyvsp[0].code); }
-#line 2893 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2901 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 102:
-#line 870 "src/parse-gram.y" /* yacc.c:1648  */
+#line 883 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_code;    (yyval.value).chars = strip_braces ((yyvsp[0].code)); }
-#line 2899 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2907 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 103:
-#line 883 "src/parse-gram.y" /* yacc.c:1648  */
+#line 896 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2905 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2913 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 104:
-#line 885 "src/parse-gram.y" /* yacc.c:1648  */
+#line 898 "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 2915 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2923 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 105:
-#line 893 "src/parse-gram.y" /* yacc.c:1648  */
+#line 906 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2921 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2929 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 108:
-#line 905 "src/parse-gram.y" /* yacc.c:1648  */
+#line 918 "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 2930 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2938 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 110:
-#line 914 "src/parse-gram.y" /* yacc.c:1648  */
+#line 927 "src/parse-gram.y" /* yacc.c:1648  */
     {
 #if 0
  int gram_piece0_save = gram_piece0, gram_piece1_save = gram_piece1;
@@ -2984,11 +2992,11 @@ yyreduce:
  insert_after(1, "</PYACC_Section3>");
  insert_after(0, "<PYACC_Section3>");
     }
-#line 2955 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2963 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
 
-#line 2959 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2967 "src/parse-gram.c" /* yacc.c:1648  */
         default: break;
       }
     if (yychar_backup != yychar)
@@ -3251,7 +3259,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 936 "src/parse-gram.y" /* yacc.c:1907  */
+#line 949 "src/parse-gram.y" /* yacc.c:1907  */
 
 
 /* Return the location of the left-hand side of a rule whose
index 9d5a02c..088ce6f 100644 (file)
@@ -61,7 +61,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 846 "src/parse-gram.y" /* yacc.c:1910  */
+#line 859 "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 247 "src/parse-gram.y" /* yacc.c:1910  */
 param_type param;
-#line 528 "src/parse-gram.y" /* yacc.c:1910  */
+#line 532 "src/parse-gram.y" /* yacc.c:1910  */
 code_props_type code_type;
-#line 848 "src/parse-gram.y" /* yacc.c:1910  */
+#line 861 "src/parse-gram.y" /* yacc.c:1910  */
 
   struct
   {
index 311a4c2..2830d6c 100644 (file)
@@ -344,10 +344,14 @@ prologue_declaration:
     }
 | "%expect" INT                    { expected_sr_conflicts = $2; /*}*/
  insert_after(1, "</PYACC_Section1_Expect>");
+ insert_after(1, "</PYACC_Int>");
+ insert_before(1, "<PYACC_Int>");
  insert_before(0, "<PYACC_Section1_Expect>");
  }
 | "%expect-rr" INT                 { expected_rr_conflicts = $2; /*}*/
  insert_after(1, "</PYACC_Section1_ExpectRR>");
+ insert_after(1, "</PYACC_Int>");
+ insert_before(1, "<PYACC_Int>");
  insert_before(0, "<PYACC_Section1_ExpectRR>");
  }
 | "%file-prefix" STRING            { spec_file_prefix = $2; /*}*/
@@ -478,8 +482,8 @@ grammar_declaration:
         symbol_list_free ($3);
       }
  insert_after(2, "</PYACC_Section1Or2_CodeProps>");
- insert_after(2, "</PYACC_Section1Or2_CodeProps_GenericSymList>");
- insert_before(2, "<PYACC_Section1Or2_CodeProps_GenericSymList>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
  sprintf(gram_piece_temp, "<PYACC_Section1Or2_CodeProps type=\"%d\">", $1);
  insert_before(0, gram_piece_temp);
     }
@@ -570,6 +574,8 @@ symbol_declaration:
       current_class = unknown_sym;
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_NTerm>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
  insert_before(0, "<PYACC_Section1Or2_NTerm>");
     }
 | "%token" { current_class = token_sym; } symbol_defs.1
@@ -577,6 +583,8 @@ symbol_declaration:
       current_class = unknown_sym;
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_Token>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
  insert_before(0, "<PYACC_Section1Or2_Token>");
     }
 | "%type" TAG symbols.1
@@ -587,8 +595,8 @@ symbol_declaration:
         symbol_type_set (list->content.sym, $2, @2);
       symbol_list_free ($3);
  insert_after(2, "</PYACC_Section1Or2_Type>");
- insert_after(2, "</PYACC_Section1Or2_Type_Symbols>");
- insert_before(2, "<PYACC_Section1Or2_Type_Symbols>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
  insert_before(0, "<PYACC_Section1Or2_Type>");
     }
 ;
@@ -606,8 +614,8 @@ precedence_declaration:
       symbol_list_free ($3);
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_Precedence>");
- insert_after(2, "</PYACC_Section1Or2_Precedence_Symbols>");
- insert_before(2, "<PYACC_Section1Or2_Precedence_Symbols>");
+ insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
+ insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
  sprintf(gram_piece_temp, "<PYACC_Section1Or2_Precedence type=\"%d\">", $1); 
  insert_before(0, gram_piece_temp);
     }
@@ -621,9 +629,7 @@ precedence_declarator:
 ;
 
 tag.opt:
-  %empty { current_type = NULL; /*}*/
- insert_before(0, "<PYACC_TagNone />");
- }
+  %empty { current_type = NULL; }
 | TAG    { current_type = $1; tag_seen = true; }
 ;
 
@@ -640,23 +646,32 @@ symbol.prec:
     {
       $$ = $1;
       symbol_class_set ($1, token_sym, @1, false);
+ insert_after(0, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
     }
 | symbol INT
     {
       $$ = $1;
       symbol_user_token_number_set ($1, $2, @2);
       symbol_class_set ($1, token_sym, @1, false);
- insert_after(1, "<PYACC_Section1Or2_Precedence_Symbols_Symbol>");
- insert_before(0, "<PYACC_Sectino1Or2_Precedence_Symbols_Symbol>");
+ insert_after(1, "</PYACC_Section1Or2_Symbol>");
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Symbol user_token=\"%d\">", $2);
+ insert_before(0, gram_piece_temp);
     }
 ;
 
 /* One or more symbols to be %typed. */
 symbols.1:
   symbol
-    { $$ = symbol_list_sym_new ($1, @1); }
+    { $$ = symbol_list_sym_new ($1, @1); /*}*/
+ insert_after(0, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
+ }
 | symbols.1 symbol
-    { $$ = symbol_list_append ($1, symbol_list_sym_new ($2, @2)); }
+    { $$ = symbol_list_append ($1, symbol_list_sym_new ($2, @2)); /*}*/
+ insert_after(1, "</PYACC_Section1Or2_Symbol>");
+ insert_before(1, "<PYACC_Section1Or2_Symbol>");
+ }
 ;
 
 generic_symlist:
@@ -665,24 +680,17 @@ generic_symlist:
 ;
 
 generic_symlist_item:
-  symbol    { $$ = symbol_list_sym_new ($1, @1); }
+  symbol    { $$ = symbol_list_sym_new ($1, @1); /*}*/
+ insert_after(0, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
+ }
 | tag       { $$ = symbol_list_type_new ($1, @1); }
 ;
 
 tag:
   TAG
- {
- insert_after(0, "</PYACC_Tag");
- insert_before(0, "<PYACC_Tag type=\"0\">");
- }
-| "<*>" { $$ = uniqstr_new ("*"); /*}*/
- insert_after(0, "</PYACC_Tag");
- insert_before(0, "<PYACC_Tag type=\"1\">");
- }
-| "<>"  { $$ = uniqstr_new (""); /*}*/
- insert_after(0, "</PYACC_Tag");
- insert_before(0, "<PYACC_Tag type=\"2\">");
- }
+| "<*>" { $$ = uniqstr_new ("*"); }
+| "<>"  { $$ = uniqstr_new (""); }
 ;
 
 /* One token definition.  */
@@ -696,23 +704,25 @@ symbol_def:
     {
       symbol_class_set ($1, current_class, @1, true);
       symbol_type_set ($1, current_type, @1);
+ insert_after(0, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
     }
 | id INT
     {
       symbol_class_set ($1, current_class, @1, true);
       symbol_type_set ($1, current_type, @1);
       symbol_user_token_number_set ($1, $2, @2);
- insert_after(1, "</PYACC_Section1Or2_SymbolDef>");
- insert_before(0, "<PYACC_Section1Or2_SymbolDef>");
+ insert_after(1, "</PYACC_Section1Or2_Symbol>");
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Symbol user_token=\"%d\">", $2);
+ insert_before(0, gram_piece_temp);
     }
 | id string_as_id
     {
       symbol_class_set ($1, current_class, @1, true);
       symbol_type_set ($1, current_type, @1);
       symbol_make_alias ($1, $2, @$);
- insert_after(1, "</PYACC_Section1Or2_SymbolDef>");
- insert_after(0, "<PYACC_IntNone />");
- insert_before(0, "<PYACC_Section1Or2_SymbolDef>");
+ insert_after(1, "</PYACC_Section1Or2_Symbol>");
+ insert_before(0, "<PYACC_Section1Or2_Symbol>");
     }
 | id INT string_as_id
     {
@@ -720,8 +730,9 @@ symbol_def:
       symbol_type_set ($1, current_type, @1);
       symbol_user_token_number_set ($1, $2, @2);
       symbol_make_alias ($1, $3, @$);
- insert_after(2, "</PYACC_Section1Or2_SymbolDef>");
- insert_before(0, "<PYACC_Section1Or2_SymbolDef>");
+ insert_after(2, "</PYACC_Section1Or2_Symbol>");
+ sprintf(gram_piece_temp, "<PYACC_Section1Or2_Symbol user_token=\"%d\">", $2);
+ insert_before(0, gram_piece_temp);
     }
 ;
 
@@ -817,6 +828,8 @@ rhs:
 | rhs "%dprec" INT
     { grammar_current_rule_dprec_set ($3, @3); /*}*/
  insert_after(2, "</PYACC_Section2_Rules_RHS_DPrec>");
+ insert_after(2, "</PYACC_Int>");
+ insert_before(2, "<PYACC_Int>");
  insert_before(1, "<PYACC_Section2_Rules_RHS_DPrec>");
  }
 | rhs "%merge" TAG
index 7d2fa45..5937a4f 100644 (file)
@@ -1071,13 +1071,13 @@ static yyconst flex_int16_t yy_rule_linenum[130] =
       256,  257,  258,  259,  260,  261,  262,  263,  264,  265,
       268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
       278,  280,  284,  285,  286,  288,  300,  314,  331,  336,
-      339,  342,  345,  359,  368,  369,  370,  378,  393,  400,
-      420,  430,  445,  455,  482,  495,  511,  526,  543,  544,
-      555,  566,  567,  579,  595,  605,  632,  644,  665,  666,
+      339,  342,  345,  359,  368,  369,  370,  380,  395,  402,
+      422,  432,  447,  457,  484,  497,  513,  528,  545,  546,
+      557,  568,  569,  581,  597,  607,  634,  646,  668,  669,
 
-      677,  693,  710,  711,  712,  713,  714,  715,  716,  719,
-      721,  735,  753,  758,  759,  765,  766,  777,  784,  791,
-      798,  815,  816,  820,  827,  858,  887,  934,  935
+      680,  696,  713,  714,  715,  716,  717,  718,  719,  722,
+      724,  738,  756,  761,  762,  768,  769,  780,  787,  794,
+      801,  818,  819,  823,  830,  861,  890,  937,  938
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2039,7 +2039,7 @@ YY_RULE_SETUP
 #line 300 "src/scan-gram.l"
 {
     val->integer = scan_integer (gram_text, 10, *loc);
-#if 1
+#if 0
  gram_piece_pack();
  sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
  gram_piece_append(gram_piece_temp);
@@ -2057,7 +2057,7 @@ YY_RULE_SETUP
 #line 314 "src/scan-gram.l"
 {
     val->integer = scan_integer (gram_text, 16, *loc);
-#if 1
+#if 0
  gram_piece_pack();
  sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
  gram_piece_append(gram_piece_temp);
@@ -2131,12 +2131,12 @@ YY_RULE_SETUP
 case 75:
 YY_RULE_SETUP
 #line 368 "src/scan-gram.l"
-return TAG_ANY;
+gram_piece_pack(); gram_piece_append("<PYACC_Section1Or2_Tag>&lt;<PYACC_Text>*</PYACC_Text>&gt;</PYACC_Section1Or2_Tag>"); return ~TAG_ANY; /*return TAG_ANY;*/
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 369 "src/scan-gram.l"
-return TAG_NONE;
+gram_piece_pack(); gram_piece_append("<PYACC_Section1Or2_Tag>&lt;<PYACC_Text />&gt;</PYACC_Section1Or2_Tag>"); return ~TAG_NONE; /*return TAG_NONE;*/
        YY_BREAK
 case 77:
 YY_RULE_SETUP
@@ -2146,12 +2146,14 @@ YY_RULE_SETUP
     token_start = loc->start;
     BEGIN SC_TAG;
  gram_piece_pack();
- gram_piece_append("<Tag>");
+ gram_piece_append("<PYACC_Section1Or2_Tag>");
+ flush();
+ gram_piece_append("<PYACC_Text>");
   }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 378 "src/scan-gram.l"
+#line 380 "src/scan-gram.l"
 {
     static int percent_percent_count;
     if (++percent_percent_count == 2)
@@ -2169,7 +2171,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 393 "src/scan-gram.l"
+#line 395 "src/scan-gram.l"
 {
     bracketed_id_str = NULL;
     bracketed_id_start = loc->start;
@@ -2179,7 +2181,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 400 "src/scan-gram.l"
+#line 402 "src/scan-gram.l"
 {
     complain (loc, complaint, "%s: %s",
               ngettext ("invalid character", "invalid characters", gram_leng),
@@ -2187,7 +2189,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 406 "src/scan-gram.l"
+#line 408 "src/scan-gram.l"
 {
     loc->start = loc->end = scanner_cursor;
     yyterminate ();
@@ -2202,7 +2204,7 @@ case YY_STATE_EOF(INITIAL):
 
 case 81:
 YY_RULE_SETUP
-#line 420 "src/scan-gram.l"
+#line 422 "src/scan-gram.l"
 complain (loc, complaint, _("invalid null character"));
        YY_BREAK
 
@@ -2213,7 +2215,7 @@ complain (loc, complaint, _("invalid null character"));
 
 case 82:
 YY_RULE_SETUP
-#line 430 "src/scan-gram.l"
+#line 432 "src/scan-gram.l"
 {
     if (bracketed_id_str) /* SHOULDN'T THIS BE if (!bracketed_id_str) ??? */
       {
@@ -2232,7 +2234,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 445 "src/scan-gram.l"
+#line 447 "src/scan-gram.l"
 {
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
     *loc = id_loc;
@@ -2246,7 +2248,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 455 "src/scan-gram.l"
+#line 457 "src/scan-gram.l"
 {
     ROLLBACK_CURRENT_TOKEN;
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
@@ -2259,7 +2261,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
-#line 465 "src/scan-gram.l"
+#line 467 "src/scan-gram.l"
 {
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
     *loc = id_loc;
@@ -2278,7 +2280,7 @@ case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
 
 case 85:
 YY_RULE_SETUP
-#line 482 "src/scan-gram.l"
+#line 484 "src/scan-gram.l"
 {
     if (bracketed_id_str)
       {
@@ -2295,7 +2297,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 495 "src/scan-gram.l"
+#line 497 "src/scan-gram.l"
 {
     BEGIN bracketed_id_context_state;
     if (bracketed_id_str)
@@ -2314,7 +2316,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 511 "src/scan-gram.l"
+#line 513 "src/scan-gram.l"
 {
     complain (loc, complaint, "%s: %s",
               ngettext ("invalid character in bracketed name",
@@ -2323,7 +2325,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_BRACKETED_ID):
-#line 518 "src/scan-gram.l"
+#line 520 "src/scan-gram.l"
 {
     BEGIN bracketed_id_context_state;
     unexpected_eof (bracketed_id_start, "]");
@@ -2334,7 +2336,7 @@ case YY_STATE_EOF(SC_BRACKETED_ID):
 
 case 88:
 YY_RULE_SETUP
-#line 526 "src/scan-gram.l"
+#line 528 "src/scan-gram.l"
 {
     ROLLBACK_CURRENT_TOKEN;
     val->uniqstr = bracketed_id_str;
@@ -2352,17 +2354,17 @@ YY_RULE_SETUP
 
 case 89:
 YY_RULE_SETUP
-#line 543 "src/scan-gram.l"
+#line 545 "src/scan-gram.l"
 BEGIN context_state;
        YY_BREAK
 case 90:
 /* rule 90 can match eol */
 YY_RULE_SETUP
-#line 544 "src/scan-gram.l"
+#line 546 "src/scan-gram.l"
 continue;
        YY_BREAK
 case YY_STATE_EOF(SC_YACC_COMMENT):
-#line 545 "src/scan-gram.l"
+#line 547 "src/scan-gram.l"
 unexpected_eof (token_start, "*/"); BEGIN context_state;
        YY_BREAK
 
@@ -2374,11 +2376,11 @@ unexpected_eof (token_start, "*/"); BEGIN context_state;
 case 91:
 /* rule 91 can match eol */
 YY_RULE_SETUP
-#line 555 "src/scan-gram.l"
+#line 557 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case YY_STATE_EOF(SC_COMMENT):
-#line 556 "src/scan-gram.l"
+#line 558 "src/scan-gram.l"
 unexpected_eof (token_start, "*/"); BEGIN context_state;
        YY_BREAK
 
@@ -2390,17 +2392,17 @@ unexpected_eof (token_start, "*/"); BEGIN context_state;
 case 92:
 /* rule 92 can match eol */
 YY_RULE_SETUP
-#line 566 "src/scan-gram.l"
+#line 568 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case 93:
 /* rule 93 can match eol */
 YY_RULE_SETUP
-#line 567 "src/scan-gram.l"
+#line 569 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_LINE_COMMENT):
-#line 568 "src/scan-gram.l"
+#line 570 "src/scan-gram.l"
 BEGIN context_state;
        YY_BREAK
 
@@ -2412,7 +2414,7 @@ BEGIN context_state;
 
 case 94:
 YY_RULE_SETUP
-#line 579 "src/scan-gram.l"
+#line 581 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = token_start;
@@ -2430,13 +2432,13 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_STRING):
-#line 594 "src/scan-gram.l"
+#line 596 "src/scan-gram.l"
 unexpected_eof (token_start, "\"");
        YY_BREAK
 case 95:
 /* rule 95 can match eol */
 YY_RULE_SETUP
-#line 595 "src/scan-gram.l"
+#line 597 "src/scan-gram.l"
 unexpected_newline (token_start, "\"");
        YY_BREAK
 
@@ -2448,7 +2450,7 @@ unexpected_newline (token_start, "\"");
 
 case 96:
 YY_RULE_SETUP
-#line 605 "src/scan-gram.l"
+#line 607 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = token_start;
@@ -2480,11 +2482,11 @@ YY_RULE_SETUP
 case 97:
 /* rule 97 can match eol */
 YY_RULE_SETUP
-#line 632 "src/scan-gram.l"
+#line 634 "src/scan-gram.l"
 unexpected_newline (token_start, "'");
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
-#line 633 "src/scan-gram.l"
+#line 635 "src/scan-gram.l"
 unexpected_eof (token_start, "'");
        YY_BREAK
 
@@ -2495,7 +2497,7 @@ unexpected_eof (token_start, "'");
 
 case 98:
 YY_RULE_SETUP
-#line 644 "src/scan-gram.l"
+#line 646 "src/scan-gram.l"
 {
     --nesting;
     if (nesting < 0)
@@ -2506,8 +2508,9 @@ YY_RULE_SETUP
         STRING_FREE;
         BEGIN INITIAL;
 #if 1
+ gram_piece_append("</PYACC_Text");
  gram_piece_esc(gram_text, strlen(gram_text));
- gram_piece_append("</Tag>");
+ gram_piece_append("</PYACC_Section1Or2_Tag>");
  gram_piece_pack();
  return ~TAG;
 #else
@@ -2520,16 +2523,16 @@ YY_RULE_SETUP
 case 99:
 /* rule 99 can match eol */
 YY_RULE_SETUP
-#line 665 "src/scan-gram.l"
+#line 668 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 666 "src/scan-gram.l"
+#line 669 "src/scan-gram.l"
 STRING_GROW; nesting += gram_leng;
        YY_BREAK
 case YY_STATE_EOF(SC_TAG):
-#line 668 "src/scan-gram.l"
+#line 671 "src/scan-gram.l"
 unexpected_eof (token_start, ">");
        YY_BREAK
 
@@ -2540,7 +2543,7 @@ unexpected_eof (token_start, ">");
 
 case 101:
 YY_RULE_SETUP
-#line 677 "src/scan-gram.l"
+#line 680 "src/scan-gram.l"
 {
     unsigned long int c = strtoul (gram_text + 1, NULL, 8);
     if (!c || UCHAR_MAX < c)
@@ -2559,7 +2562,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 693 "src/scan-gram.l"
+#line 696 "src/scan-gram.l"
 {
     verify (UCHAR_MAX < ULONG_MAX);
     unsigned long int c = strtoul (gram_text + 2, NULL, 16);
@@ -2579,48 +2582,48 @@ YY_RULE_SETUP
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 710 "src/scan-gram.l"
+#line 713 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\a'); stop_text(); gram_piece_append("<PYACC_Escape character=\"7\">"); flush(); gram_piece_append("</PYACC_Escape>");
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 711 "src/scan-gram.l"
+#line 714 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\b'); stop_text(); gram_piece_append("<PYACC_Escape character=\"8\">"); flush(); gram_piece_append("</PYACC_Escape>");
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 712 "src/scan-gram.l"
+#line 715 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\f'); stop_text(); gram_piece_append("<PYACC_Escape character=\"12\">"); flush(); gram_piece_append("</PYACC_Escape>");
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 713 "src/scan-gram.l"
+#line 716 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\n'); stop_text(); gram_piece_append("<PYACC_Escape character=\"10\">"); flush(); gram_piece_append("</PYACC_Escape>");
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 714 "src/scan-gram.l"
+#line 717 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\r'); stop_text(); gram_piece_append("<PYACC_Escape character=\"13\">"); flush(); gram_piece_append("</PYACC_Escape>");
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 715 "src/scan-gram.l"
+#line 718 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\t'); stop_text(); gram_piece_append("<PYACC_Escape character=\"9\">"); flush(); gram_piece_append("</PYACC_Escape>");
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 716 "src/scan-gram.l"
+#line 719 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\v'); stop_text(); gram_piece_append("<PYACC_Escape character=\"11\">"); flush(); gram_piece_append("</PYACC_Escape>");
        YY_BREAK
 /* \\[\"\'?\\] would be shorter, but it confuses xgettext.  */
 case 110:
 YY_RULE_SETUP
-#line 719 "src/scan-gram.l"
+#line 722 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, gram_text[1]); stop_text(); sprintf(gram_piece_temp, "<PYACC_Escape character=\"%d\">", gram_text[1]); gram_piece_append(gram_piece_temp); flush(); gram_piece_append("</PYACC_Escape>"); 
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 721 "src/scan-gram.l"
+#line 724 "src/scan-gram.l"
 {
     int c = convert_ucn_to_byte (gram_text);
     if (c <= 0)
@@ -2639,7 +2642,7 @@ YY_RULE_SETUP
 case 112:
 /* rule 112 can match eol */
 YY_RULE_SETUP
-#line 735 "src/scan-gram.l"
+#line 738 "src/scan-gram.l"
 {
     char const *p = gram_text + 1;
     /* Quote only if escaping won't make the character visible.  */
@@ -2660,7 +2663,7 @@ YY_RULE_SETUP
 case 113:
 /* rule 113 can match eol */
 YY_RULE_SETUP
-#line 753 "src/scan-gram.l"
+#line 756 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 
@@ -2668,17 +2671,17 @@ STRING_GROW;
 
 case 114:
 YY_RULE_SETUP
-#line 758 "src/scan-gram.l"
+#line 761 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case 115:
 /* rule 115 can match eol */
 YY_RULE_SETUP
-#line 759 "src/scan-gram.l"
+#line 762 "src/scan-gram.l"
 unexpected_newline (token_start, "'");
        YY_BREAK
 case YY_STATE_EOF(SC_CHARACTER):
-#line 760 "src/scan-gram.l"
+#line 763 "src/scan-gram.l"
 unexpected_eof (token_start, "'");
        YY_BREAK
 
@@ -2686,17 +2689,17 @@ unexpected_eof (token_start, "'");
 
 case 116:
 YY_RULE_SETUP
-#line 765 "src/scan-gram.l"
+#line 768 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case 117:
 /* rule 117 can match eol */
 YY_RULE_SETUP
-#line 766 "src/scan-gram.l"
+#line 769 "src/scan-gram.l"
 unexpected_newline (token_start, "\"");
        YY_BREAK
 case YY_STATE_EOF(SC_STRING):
-#line 767 "src/scan-gram.l"
+#line 770 "src/scan-gram.l"
 unexpected_eof (token_start, "\"");
        YY_BREAK
 
@@ -2707,7 +2710,7 @@ unexpected_eof (token_start, "\"");
 
 case 118:
 YY_RULE_SETUP
-#line 777 "src/scan-gram.l"
+#line 780 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2718,7 +2721,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 784 "src/scan-gram.l"
+#line 787 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2730,7 +2733,7 @@ YY_RULE_SETUP
 case 120:
 /* rule 120 can match eol */
 YY_RULE_SETUP
-#line 791 "src/scan-gram.l"
+#line 794 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2742,7 +2745,7 @@ YY_RULE_SETUP
 case 121:
 /* rule 121 can match eol */
 YY_RULE_SETUP
-#line 798 "src/scan-gram.l"
+#line 801 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2760,13 +2763,13 @@ YY_RULE_SETUP
 case 122:
 /* rule 122 can match eol */
 YY_RULE_SETUP
-#line 815 "src/scan-gram.l"
+#line 818 "src/scan-gram.l"
 STRING_GROW; nesting++; start_text();
        YY_BREAK
 case 123:
 /* rule 123 can match eol */
 YY_RULE_SETUP
-#line 816 "src/scan-gram.l"
+#line 819 "src/scan-gram.l"
 STRING_GROW; nesting--; start_text();
        YY_BREAK
 /* Tokenize '<<%' correctly (as '<<' '%') rather than incorrrectly
@@ -2774,12 +2777,12 @@ STRING_GROW; nesting--; start_text();
 case 124:
 /* rule 124 can match eol */
 YY_RULE_SETUP
-#line 820 "src/scan-gram.l"
+#line 823 "src/scan-gram.l"
 STRING_GROW; start_text();
        YY_BREAK
 case YY_STATE_EOF(SC_BRACED_CODE):
 case YY_STATE_EOF(SC_PREDICATE):
-#line 822 "src/scan-gram.l"
+#line 825 "src/scan-gram.l"
 unexpected_eof (code_start, "}");
        YY_BREAK
 
@@ -2787,7 +2790,7 @@ unexpected_eof (code_start, "}");
 
 case 125:
 YY_RULE_SETUP
-#line 827 "src/scan-gram.l"
+#line 830 "src/scan-gram.l"
 {
     obstack_1grow (&obstack_for_string, '}');
 
@@ -2821,7 +2824,7 @@ YY_RULE_SETUP
 
 case 126:
 YY_RULE_SETUP
-#line 858 "src/scan-gram.l"
+#line 861 "src/scan-gram.l"
 {
     --nesting;
     if (nesting < 0)
@@ -2852,7 +2855,7 @@ YY_RULE_SETUP
 
 case 127:
 YY_RULE_SETUP
-#line 887 "src/scan-gram.l"
+#line 890 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = code_start;
@@ -2870,7 +2873,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_PROLOGUE):
-#line 903 "src/scan-gram.l"
+#line 906 "src/scan-gram.l"
 unexpected_eof (code_start, "%}");
        YY_BREAK
 
@@ -2881,7 +2884,7 @@ unexpected_eof (code_start, "%}");
 
 
 case YY_STATE_EOF(SC_EPILOGUE):
-#line 914 "src/scan-gram.l"
+#line 917 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = code_start;
@@ -2901,19 +2904,19 @@ case YY_STATE_EOF(SC_EPILOGUE):
   | By default, grow the string obstack with the input.  |
   `-----------------------------------------------------*/
 case 128:
-#line 935 "src/scan-gram.l"
+#line 938 "src/scan-gram.l"
 case 129:
 /* rule 129 can match eol */
 YY_RULE_SETUP
-#line 935 "src/scan-gram.l"
+#line 938 "src/scan-gram.l"
 STRING_GROW; start_text();
        YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 938 "src/scan-gram.l"
+#line 941 "src/scan-gram.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 2806 "src/scan-gram.c"
+#line 2809 "src/scan-gram.c"
 case YY_STATE_EOF(SC_RETURN_BRACKETED_ID):
        yyterminate();
 
@@ -4047,7 +4050,7 @@ void gram_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 938 "src/scan-gram.l"
+#line 941 "src/scan-gram.l"
 
 
 
index f47725c..d1f1154 100644 (file)
@@ -299,7 +299,7 @@ eqopt    ([[:space:]]*=)?
 
   {int} {
     val->integer = scan_integer (yytext, 10, *loc);
-#if 1
+#if 0
  gram_piece_pack();
  sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
  gram_piece_append(gram_piece_temp);
@@ -313,7 +313,7 @@ eqopt    ([[:space:]]*=)?
   }
   0[xX][0-9abcdefABCDEF]+ {
     val->integer = scan_integer (yytext, 16, *loc);
-#if 1
+#if 0
  gram_piece_pack();
  sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
  gram_piece_append(gram_piece_temp);
@@ -365,14 +365,16 @@ eqopt    ([[:space:]]*=)?
   }
 
   /* A type. */
-  "<*>"       return TAG_ANY;
-  "<>"        return TAG_NONE;
+  "<*>"       gram_piece_pack(); gram_piece_append("<PYACC_Section1Or2_Tag>&lt;<PYACC_Text>*</PYACC_Text>&gt;</PYACC_Section1Or2_Tag>"); return ~TAG_ANY; /*return TAG_ANY;*/
+  "<>"        gram_piece_pack(); gram_piece_append("<PYACC_Section1Or2_Tag>&lt;<PYACC_Text />&gt;</PYACC_Section1Or2_Tag>"); return ~TAG_NONE; /*return TAG_NONE;*/
   "<"         {
     nesting = 0;
     token_start = loc->start;
     BEGIN SC_TAG;
  gram_piece_pack();
- gram_piece_append("<Tag>");
+ gram_piece_append("<PYACC_Section1Or2_Tag>");
+ flush();
+ gram_piece_append("<PYACC_Text>");
   }
 
   "%%" {
@@ -651,8 +653,9 @@ eqopt    ([[:space:]]*=)?
         STRING_FREE;
         BEGIN INITIAL;
 #if 1
+ gram_piece_append("</PYACC_Text");
  gram_piece_esc(yytext, strlen(yytext));
- gram_piece_append("</Tag>");
+ gram_piece_append("</PYACC_Section1Or2_Tag>");
  gram_piece_pack();
  return ~TAG;
 #else
index 75024b1..d84870b 100644 (file)
@@ -528,6 +528,11 @@ symbol_make_alias (symbol *sym, symbol *str, location loc)
   else if (sym->alias)
     complain (&loc, Wother,
               _("symbol %s given more than one literal string"), sym->tag);
+#if 1
+  else if (sym->class != token_sym)
+    complain (&loc, Wother,
+              _("symbol %s nonterminal, can't have literal string"), sym->tag);
+#endif
   else
     {
       str->class = token_sym;