Combine PYACC.TerminalRef and PYACC.NonterminalRef into PYACC.SymbolRef (relying...
authorNick Downing <downing.nick@gmail.com>
Sun, 29 Jul 2018 00:09:07 +0000 (10:09 +1000)
committerNick Downing <downing.nick@gmail.com>
Sun, 29 Jul 2018 00:09:07 +0000 (10:09 +1000)
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y

index a17ae45..f06880a 100644 (file)
@@ -129,7 +129,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 908 "src/parse-gram.y" /* yacc.c:355  */
+#line 872 "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 551 "src/parse-gram.y" /* yacc.c:355  */
+#line 549 "src/parse-gram.y" /* yacc.c:355  */
 code_props_type code_type;
-#line 910 "src/parse-gram.y" /* yacc.c:355  */
+#line 874 "src/parse-gram.y" /* yacc.c:355  */
 
   struct
   {
@@ -647,15 +647,15 @@ 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,   509,   515,   521,   536,
-     554,   555,   565,   566,   572,   591,   591,   600,   600,   609,
-     624,   644,   645,   646,   647,   651,   652,   657,   659,   664,
-     671,   684,   689,   697,   698,   702,   706,   710,   711,   712,
-     717,   722,   735,   751,   765,   786,   787,   796,   797,   803,
-     804,   805,   812,   812,   825,   829,   833,   838,   850,   855,
-     864,   866,   871,   878,   884,   892,   893,   903,   904,   929,
-     930,   931,   932,   944,   946,   955,   960,   961,   966,   974,
-     975
+     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,   819,
+     828,   830,   835,   842,   848,   856,   857,   867,   868,   893,
+     894,   895,   896,   908,   910,   919,   924,   925,   930,   938,
+     939
 };
 #endif
 
@@ -1116,7 +1116,7 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
         break;
 
     case 65: /* code_props_type  */
-#line 552 "src/parse-gram.y" /* yacc.c:684  */
+#line 550 "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 919 "src/parse-gram.y" /* yacc.c:684  */
+#line 883 "src/parse-gram.y" /* yacc.c:684  */
       {
   switch (((*yyvaluep).value).kind)
     {
@@ -2375,8 +2375,8 @@ yyreduce:
     {
       grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
  insert_after(1, "</PYACC_Section1Or2_Start>");
- insert_after(1, "</PYACC_NonterminalRef>");
- insert_before(1, "<PYACC_NonterminalRef>");
+ insert_after(1, "</PYACC_SymbolRef>");
+ insert_before(1, "<PYACC_SymbolRef>");
  insert_before(0, "<PYACC_Section1Or2_Start>");
     }
 #line 2372 "src/parse-gram.c" /* yacc.c:1648  */
@@ -2400,36 +2400,34 @@ yyreduce:
         symbol_list_free ((yyvsp[0].list));
       }
  insert_after(2, "</PYACC_Section1Or2_CodeProps>");
- 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 2398 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2396 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 36:
-#line 510 "src/parse-gram.y" /* yacc.c:1648  */
+#line 508 "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 2408 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2406 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 37:
-#line 516 "src/parse-gram.y" /* yacc.c:1648  */
+#line 514 "src/parse-gram.y" /* yacc.c:1648  */
     {
       default_prec = false;
  insert_after(0, "</PYACC_Section1Or2_DefaultPrec>");
  insert_before(0, "<PYACC_Section1Or2_DefaultPrec>");
     }
-#line 2418 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2416 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 38:
-#line 522 "src/parse-gram.y" /* yacc.c:1648  */
+#line 520 "src/parse-gram.y" /* yacc.c:1648  */
     {
       /* Do not invoke muscle_percent_code_grow here since it invokes
          muscle_user_name_list_grow.  */
@@ -2444,11 +2442,11 @@ yyreduce:
  insert_after(1, "</PYACC_Section1Or2_Code>");
  insert_before(0, "<PYACC_Section1Or2_Code><PYACC_ID />");
     }
-#line 2437 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2435 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 39:
-#line 537 "src/parse-gram.y" /* yacc.c:1648  */
+#line 535 "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]));
@@ -2460,37 +2458,37 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Code>");
  insert_before(0, "<PYACC_Section1Or2_Code>");
     }
-#line 2453 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2451 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 40:
-#line 554 "src/parse-gram.y" /* yacc.c:1648  */
+#line 552 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = destructor; }
-#line 2459 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2457 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 41:
-#line 555 "src/parse-gram.y" /* yacc.c:1648  */
+#line 553 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = printer; }
-#line 2465 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2463 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 42:
-#line 565 "src/parse-gram.y" /* yacc.c:1648  */
+#line 563 "src/parse-gram.y" /* yacc.c:1648  */
     { insert_before(0, "<PYACC_ID />"); }
-#line 2471 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2469 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 43:
-#line 566 "src/parse-gram.y" /* yacc.c:1648  */
+#line 564 "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 2479 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2477 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 44:
-#line 573 "src/parse-gram.y" /* yacc.c:1648  */
+#line 571 "src/parse-gram.y" /* yacc.c:1648  */
     {
       union_seen = true;
  code_piece_append("<PYACC_BracedCode>{");
@@ -2503,49 +2501,45 @@ yyreduce:
  insert_after(2, "</PYACC_Section1Or2_Union>");
  insert_before(0, "<PYACC_Section1Or2_Union>");
     }
-#line 2496 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2494 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 45:
-#line 591 "src/parse-gram.y" /* yacc.c:1648  */
+#line 589 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = nterm_sym; }
-#line 2502 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2500 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 46:
-#line 592 "src/parse-gram.y" /* yacc.c:1648  */
+#line 590 "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 2515 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2511 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 47:
-#line 600 "src/parse-gram.y" /* yacc.c:1648  */
+#line 596 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = token_sym; }
-#line 2521 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2517 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 48:
-#line 601 "src/parse-gram.y" /* yacc.c:1648  */
+#line 597 "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 2534 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2528 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 49:
-#line 610 "src/parse-gram.y" /* yacc.c:1648  */
+#line 604 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_list *list;
       tag_seen = true;
@@ -2553,15 +2547,13 @@ 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_TaggedSymbols>");
- insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
  insert_before(0, "<PYACC_Section1Or2_Type>");
     }
-#line 2550 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2542 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 50:
-#line 625 "src/parse-gram.y" /* yacc.c:1648  */
+#line 617 "src/parse-gram.y" /* yacc.c:1648  */
     {
       symbol_list *list;
       ++current_prec;
@@ -2573,276 +2565,248 @@ yyreduce:
       symbol_list_free ((yyvsp[0].list));
       current_type = NULL;
  insert_after(2, "</PYACC_Section1Or2_Precedence>");
- insert_after(2, "</PYACC_Section1Or2_TaggedSymbols>");
- insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
  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 2571 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2561 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 51:
-#line 644 "src/parse-gram.y" /* yacc.c:1648  */
+#line 634 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = left_assoc; }
-#line 2577 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2567 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 52:
-#line 645 "src/parse-gram.y" /* yacc.c:1648  */
+#line 635 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = right_assoc;  }
-#line 2583 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2573 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 53:
-#line 646 "src/parse-gram.y" /* yacc.c:1648  */
+#line 636 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = non_assoc; }
-#line 2589 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2579 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 54:
-#line 647 "src/parse-gram.y" /* yacc.c:1648  */
+#line 637 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = precedence_assoc; }
-#line 2595 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2585 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 55:
-#line 651 "src/parse-gram.y" /* yacc.c:1648  */
+#line 641 "src/parse-gram.y" /* yacc.c:1648  */
     { current_type = NULL; }
-#line 2601 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2591 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 56:
-#line 652 "src/parse-gram.y" /* yacc.c:1648  */
+#line 642 "src/parse-gram.y" /* yacc.c:1648  */
     { current_type = (yyvsp[0].uniqstr); tag_seen = true; }
-#line 2607 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2597 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 57:
-#line 658 "src/parse-gram.y" /* yacc.c:1648  */
+#line 648 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
-#line 2613 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2603 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 58:
-#line 660 "src/parse-gram.y" /* yacc.c:1648  */
+#line 650 "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 2619 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2609 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 59:
-#line 665 "src/parse-gram.y" /* yacc.c:1648  */
+#line 655 "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_TerminalRef>");
- insert_before(0, "<PYACC_TerminalRef>");
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
     }
-#line 2630 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2620 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 60:
-#line 672 "src/parse-gram.y" /* yacc.c:1648  */
+#line 662 "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_TerminalRef>");
- sprintf(gram_piece_temp, "<PYACC_TerminalRef user_token=\"%d\">", (yyvsp[0].integer));
+ insert_after(1, "</PYACC_SymbolRef>");
+ sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
     }
-#line 2643 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2633 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 61:
-#line 685 "src/parse-gram.y" /* yacc.c:1648  */
+#line 675 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); /*}*/
- insert_after(0, "</PYACC_TerminalRef>");
- insert_before(0, "<PYACC_TerminalRef>");
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
  }
-#line 2652 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2642 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 62:
-#line 690 "src/parse-gram.y" /* yacc.c:1648  */
+#line 680 "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_TerminalRef>");
- insert_before(1, "<PYACC_TerminalRef>");
+ insert_after(1, "</PYACC_SymbolRef>");
+ insert_before(1, "<PYACC_SymbolRef>");
  }
-#line 2661 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2651 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 63:
-#line 697 "src/parse-gram.y" /* yacc.c:1648  */
+#line 687 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = (yyvsp[0].list); }
-#line 2667 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2657 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 64:
-#line 698 "src/parse-gram.y" /* yacc.c:1648  */
+#line 688 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_append ((yyvsp[-1].list), (yyvsp[0].list)); }
-#line 2673 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2663 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 65:
-#line 702 "src/parse-gram.y" /* yacc.c:1648  */
+#line 692 "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 2682 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2672 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 66:
-#line 706 "src/parse-gram.y" /* yacc.c:1648  */
+#line 696 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_type_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2688 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2678 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 68:
-#line 711 "src/parse-gram.y" /* yacc.c:1648  */
+#line 701 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ("*"); }
-#line 2694 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2684 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 69:
-#line 712 "src/parse-gram.y" /* yacc.c:1648  */
+#line 702 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new (""); }
-#line 2700 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2690 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 70:
-#line 718 "src/parse-gram.y" /* yacc.c:1648  */
+#line 708 "src/parse-gram.y" /* yacc.c:1648  */
     {
       current_type = (yyvsp[0].uniqstr);
       tag_seen = true;
     }
-#line 2709 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2699 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 71:
-#line 723 "src/parse-gram.y" /* yacc.c:1648  */
+#line 713 "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]));
- if (current_class == nterm_sym) {
-  insert_after(0, "</PYACC_NonterminalRef>");
-  insert_before(0, "<PYACC_NonterminalRef>");
- }
- else {
-  insert_after(0, "</PYACC_TerminalRef>");
-  insert_before(0, "<PYACC_TerminalRef>");
- }
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
     }
-#line 2726 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2710 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 72:
-#line 736 "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_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
- if (current_class == nterm_sym) {
-  insert_after(1, "</PYACC_NonterminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_NonterminalRef user_token=\"%d\">", (yyvsp[0].integer));
-  insert_before(0, gram_piece_temp);
- }
- else {
-  insert_after(1, "</PYACC_TerminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_TerminalRef user_token=\"%d\">", (yyvsp[0].integer));
-  insert_before(0, gram_piece_temp);
- }
+ insert_after(1, "</PYACC_SymbolRef>");
+ sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", (yyvsp[0].integer));
+ insert_before(0, gram_piece_temp);
     }
-#line 2746 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2723 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 73:
-#line 752 "src/parse-gram.y" /* yacc.c:1648  */
+#line 729 "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));
- if (current_class == nterm_sym) {
-  insert_after(1, "</PYACC_NonterminalRef>");
-  insert_before(0, "<PYACC_NonterminalRef>");
- }
- else {
-  insert_after(1, "</PYACC_TerminalRef>");
-  insert_before(0, "<PYACC_TerminalRef>");
- }
+ insert_after(1, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
     }
-#line 2764 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2735 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 74:
-#line 766 "src/parse-gram.y" /* yacc.c:1648  */
+#line 737 "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));
- if (current_class == nterm_sym) {
-  insert_after(2, "</PYACC_NonterminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_NonterminalRef user_token=\"%d\">", (yyvsp[-1].integer));
-  insert_before(0, gram_piece_temp);
- }
- else {
-  insert_after(2, "</PYACC_TerminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_TerminalRef user_token=\"%d\">", (yyvsp[-1].integer));
-  insert_before(0, gram_piece_temp);
- }
+ insert_after(2, "</PYACC_SymbolRef>");
+ sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", (yyvsp[-1].integer));
+ insert_before(0, gram_piece_temp);
     }
-#line 2785 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2749 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 81:
-#line 806 "src/parse-gram.y" /* yacc.c:1648  */
+#line 770 "src/parse-gram.y" /* yacc.c:1648  */
     {
       yyerrok;
     }
-#line 2793 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2757 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 82:
-#line 812 "src/parse-gram.y" /* yacc.c:1648  */
+#line 776 "src/parse-gram.y" /* yacc.c:1648  */
     { current_lhs ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); }
-#line 2799 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2763 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 83:
-#line 813 "src/parse-gram.y" /* yacc.c:1648  */
+#line 777 "src/parse-gram.y" /* yacc.c:1648  */
     {
     /* Free the current lhs. */
     current_lhs (0, (yylsp[-3]), 0);
  insert_after(3, "</PYACC_Section2_Rules>");
  /* the following will capture the ':', aesthetically unpleasing but benign */
- insert_after(0, "</PYACC_NonterminalRef>");
- insert_before(0, "<PYACC_NonterminalRef>");
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
  insert_before(0, "<PYACC_Section2_Rules>");
   }
-#line 2813 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2777 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 84:
-#line 825 "src/parse-gram.y" /* yacc.c:1648  */
+#line 789 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
  insert_after(0, "</PYACC_Production>");
  insert_before(0, "<PYACC_Production>");
  }
-#line 2822 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2786 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 85:
-#line 829 "src/parse-gram.y" /* yacc.c:1648  */
+#line 793 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
  insert_after(2, "</PYACC_Production>");
  insert_before(2, "<PYACC_Production>");
  }
-#line 2831 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2795 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 87:
-#line 839 "src/parse-gram.y" /* yacc.c:1648  */
+#line 803 "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 */
@@ -2854,20 +2818,20 @@ yyreduce:
  gram_piece[gram_piece2] = gram_piece[gram_piece2 - 1]; /* empty */
  gram_piece[gram_piece2 - 1] = temp;
  }
-#line 2847 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2811 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 88:
-#line 851 "src/parse-gram.y" /* yacc.c:1648  */
+#line 815 "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_before(1, "<PYACC_Production_SymbolRef>");
  }
-#line 2856 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2820 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 89:
-#line 856 "src/parse-gram.y" /* yacc.c:1648  */
+#line 820 "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();
@@ -2876,129 +2840,129 @@ yyreduce:
  insert_after(2, "</PYACC_Production_Action>");
  insert_before(1, "<PYACC_Production_Action>");
  }
-#line 2869 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2833 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 90:
-#line 865 "src/parse-gram.y" /* yacc.c:1648  */
+#line 829 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
-#line 2875 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2839 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 91:
-#line 867 "src/parse-gram.y" /* yacc.c:1648  */
+#line 831 "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 2884 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2848 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 92:
-#line 872 "src/parse-gram.y" /* yacc.c:1648  */
+#line 836 "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_TerminalRef>");
- insert_before(2, "<PYACC_TerminalRef>");
+ insert_after(2, "</PYACC_SymbolRef>");
+ insert_before(2, "<PYACC_SymbolRef>");
  insert_before(1, "<PYACC_Production_Prec>");
  }
-#line 2895 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2859 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 93:
-#line 879 "src/parse-gram.y" /* yacc.c:1648  */
+#line 843 "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 2905 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2869 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 94:
-#line 885 "src/parse-gram.y" /* yacc.c:1648  */
+#line 849 "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 2914 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2878 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 95:
-#line 892 "src/parse-gram.y" /* yacc.c:1648  */
+#line 856 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = 0; }
-#line 2920 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2884 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 96:
-#line 893 "src/parse-gram.y" /* yacc.c:1648  */
+#line 857 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = named_ref_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2926 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2890 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 98:
-#line 904 "src/parse-gram.y" /* yacc.c:1648  */
+#line 868 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[0].code)); }
-#line 2932 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2896 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 99:
-#line 929 "src/parse-gram.y" /* yacc.c:1648  */
+#line 893 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = ""; }
-#line 2938 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2902 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 100:
-#line 930 "src/parse-gram.y" /* yacc.c:1648  */
+#line 894 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = (yyvsp[0].uniqstr); }
-#line 2944 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2908 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 101:
-#line 931 "src/parse-gram.y" /* yacc.c:1648  */
+#line 895 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_string;  (yyval.value).chars = (yyvsp[0].code); }
-#line 2950 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2914 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 102:
-#line 932 "src/parse-gram.y" /* yacc.c:1648  */
+#line 896 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_code;    (yyval.value).chars = strip_braces ((yyvsp[0].code)); }
-#line 2956 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2920 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 103:
-#line 945 "src/parse-gram.y" /* yacc.c:1648  */
+#line 909 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2962 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2926 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 104:
-#line 947 "src/parse-gram.y" /* yacc.c:1648  */
+#line 911 "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 2972 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2936 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 105:
-#line 955 "src/parse-gram.y" /* yacc.c:1648  */
+#line 919 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2978 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2942 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 108:
-#line 967 "src/parse-gram.y" /* yacc.c:1648  */
+#line 931 "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 2987 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2951 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 110:
-#line 976 "src/parse-gram.y" /* yacc.c:1648  */
+#line 940 "src/parse-gram.y" /* yacc.c:1648  */
     {
 #if 0
  int gram_piece0_save = gram_piece0, gram_piece1_save = gram_piece1;
@@ -3019,11 +2983,11 @@ yyreduce:
  insert_after(1, "</PYACC_Section3>");
  insert_after(0, "<PYACC_Section3>");
     }
-#line 3012 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2976 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
 
-#line 3016 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2980 "src/parse-gram.c" /* yacc.c:1648  */
         default: break;
       }
     if (yychar_backup != yychar)
@@ -3286,7 +3250,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 998 "src/parse-gram.y" /* yacc.c:1907  */
+#line 962 "src/parse-gram.y" /* yacc.c:1907  */
 
 
 /* Return the location of the left-hand side of a rule whose
index e39533f..5f427fe 100644 (file)
@@ -61,7 +61,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 908 "src/parse-gram.y" /* yacc.c:1910  */
+#line 872 "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 551 "src/parse-gram.y" /* yacc.c:1910  */
+#line 549 "src/parse-gram.y" /* yacc.c:1910  */
 code_props_type code_type;
-#line 910 "src/parse-gram.y" /* yacc.c:1910  */
+#line 874 "src/parse-gram.y" /* yacc.c:1910  */
 
   struct
   {
index a7a9f87..9c1b889 100644 (file)
@@ -480,8 +480,8 @@ grammar_declaration:
     {
       grammar_start_symbol_set ($2, @2);
  insert_after(1, "</PYACC_Section1Or2_Start>");
- insert_after(1, "</PYACC_NonterminalRef>");
- insert_before(1, "<PYACC_NonterminalRef>");
+ insert_after(1, "</PYACC_SymbolRef>");
+ insert_before(1, "<PYACC_SymbolRef>");
  insert_before(0, "<PYACC_Section1Or2_Start>");
     }
 | code_props_type "{...}" generic_symlist
@@ -655,16 +655,16 @@ symbol.prec:
     {
       $$ = $1;
       symbol_class_set ($1, token_sym, @1, false);
- insert_after(0, "</PYACC_TerminalRef>");
- insert_before(0, "<PYACC_TerminalRef>");
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
     }
 | symbol INT
     {
       $$ = $1;
       symbol_user_token_number_set ($1, $2, @2);
       symbol_class_set ($1, token_sym, @1, false);
- insert_after(1, "</PYACC_TerminalRef>");
- sprintf(gram_piece_temp, "<PYACC_TerminalRef user_token=\"%d\">", $2);
+ insert_after(1, "</PYACC_SymbolRef>");
+ sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", $2);
  insert_before(0, gram_piece_temp);
     }
 ;
@@ -673,13 +673,13 @@ symbol.prec:
 symbols.1:
   symbol
     { $$ = symbol_list_sym_new ($1, @1); /*}*/
- insert_after(0, "</PYACC_TerminalRef>");
- insert_before(0, "<PYACC_TerminalRef>");
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
  }
 | symbols.1 symbol
     { $$ = symbol_list_append ($1, symbol_list_sym_new ($2, @2)); /*}*/
- insert_after(1, "</PYACC_TerminalRef>");
- insert_before(1, "<PYACC_TerminalRef>");
+ insert_after(1, "</PYACC_SymbolRef>");
+ insert_before(1, "<PYACC_SymbolRef>");
  }
 ;
 
@@ -713,44 +713,25 @@ symbol_def:
     {
       symbol_class_set ($1, current_class, @1, true);
       symbol_type_set ($1, current_type, @1);
- if (current_class == nterm_sym) {
-  insert_after(0, "</PYACC_NonterminalRef>");
-  insert_before(0, "<PYACC_NonterminalRef>");
- }
- else {
-  insert_after(0, "</PYACC_TerminalRef>");
-  insert_before(0, "<PYACC_TerminalRef>");
- }
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
     }
 | 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);
- if (current_class == nterm_sym) {
-  insert_after(1, "</PYACC_NonterminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_NonterminalRef user_token=\"%d\">", $2);
-  insert_before(0, gram_piece_temp);
- }
- else {
-  insert_after(1, "</PYACC_TerminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_TerminalRef user_token=\"%d\">", $2);
-  insert_before(0, gram_piece_temp);
- }
+ insert_after(1, "</PYACC_SymbolRef>");
+ sprintf(gram_piece_temp, "<PYACC_SymbolRef 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, @$);
- if (current_class == nterm_sym) {
-  insert_after(1, "</PYACC_NonterminalRef>");
-  insert_before(0, "<PYACC_NonterminalRef>");
- }
- else {
-  insert_after(1, "</PYACC_TerminalRef>");
-  insert_before(0, "<PYACC_TerminalRef>");
- }
+ insert_after(1, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
     }
 | id INT string_as_id
     {
@@ -758,16 +739,9 @@ symbol_def:
       symbol_type_set ($1, current_type, @1);
       symbol_user_token_number_set ($1, $2, @2);
       symbol_make_alias ($1, $3, @$);
- if (current_class == nterm_sym) {
-  insert_after(2, "</PYACC_NonterminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_NonterminalRef user_token=\"%d\">", $2);
-  insert_before(0, gram_piece_temp);
- }
- else {
-  insert_after(2, "</PYACC_TerminalRef>");
-  sprintf(gram_piece_temp, "<PYACC_TerminalRef user_token=\"%d\">", $2);
-  insert_before(0, gram_piece_temp);
- }
+ insert_after(2, "</PYACC_SymbolRef>");
+ sprintf(gram_piece_temp, "<PYACC_SymbolRef user_token=\"%d\">", $2);
+ insert_before(0, gram_piece_temp);
     }
 ;
 
@@ -805,8 +779,8 @@ rules:
     current_lhs (0, @1, 0);
  insert_after(3, "</PYACC_Section2_Rules>");
  /* the following will capture the ':', aesthetically unpleasing but benign */
- insert_after(0, "</PYACC_NonterminalRef>");
- insert_before(0, "<PYACC_NonterminalRef>");
+ insert_after(0, "</PYACC_SymbolRef>");
+ insert_before(0, "<PYACC_SymbolRef>");
  insert_before(0, "<PYACC_Section2_Rules>");
   }
 ;
@@ -861,8 +835,8 @@ rhs:
 | rhs "%prec" symbol
     { grammar_current_rule_prec_set ($3, @3); /*}*/
  insert_after(2, "</PYACC_Production_Prec>");
- insert_after(2, "</PYACC_TerminalRef>");
- insert_before(2, "<PYACC_TerminalRef>");
+ insert_after(2, "</PYACC_SymbolRef>");
+ insert_before(2, "<PYACC_SymbolRef>");
  insert_before(1, "<PYACC_Production_Prec>");
  }
 | rhs "%dprec" INT