Remove RHSes (just put RHSes after the LHS), change Escape char= to character=
authorNick Downing <downing.nick@gmail.com>
Wed, 4 Jul 2018 12:32:26 +0000 (22:32 +1000)
committerNick Downing <downing.nick@gmail.com>
Wed, 4 Jul 2018 12:32:26 +0000 (22:32 +1000)
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
src/scan-gram.l

index 2d5ff0e..83db9cd 100644 (file)
@@ -129,7 +129,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 807 "src/parse-gram.y" /* yacc.c:355  */
+#line 805 "src/parse-gram.y" /* yacc.c:355  */
 #include "muscle-tab.h"
 
 #line 136 "src/parse-gram.c" /* yacc.c:355  */
@@ -223,7 +223,7 @@ named_ref *named_ref;
 param_type param;
 #line 496 "src/parse-gram.y" /* yacc.c:355  */
 code_props_type code_type;
-#line 809 "src/parse-gram.y" /* yacc.c:355  */
+#line 807 "src/parse-gram.y" /* yacc.c:355  */
 
   struct
   {
@@ -627,10 +627,10 @@ static const yytype_uint16 yyrline[] =
      560,   580,   581,   582,   583,   587,   590,   595,   597,   602,
      607,   619,   621,   626,   627,   631,   632,   636,   641,   645,
      653,   658,   663,   671,   680,   693,   694,   703,   704,   710,
-     711,   712,   719,   719,   731,   735,   739,   744,   756,   761,
-     766,   768,   773,   778,   783,   791,   792,   802,   803,   828,
-     829,   830,   831,   843,   845,   854,   859,   860,   865,   873,
-     874
+     711,   712,   719,   719,   729,   733,   737,   742,   754,   759,
+     764,   766,   771,   776,   781,   789,   790,   800,   801,   826,
+     827,   828,   829,   841,   843,   852,   857,   858,   863,   871,
+     872
 };
 #endif
 
@@ -1115,7 +1115,7 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
         break;
 
     case 89: /* value  */
-#line 818 "src/parse-gram.y" /* yacc.c:684  */
+#line 816 "src/parse-gram.y" /* yacc.c:684  */
       {
   switch (((*yyvaluep).value).kind)
     {
@@ -2746,33 +2746,31 @@ yyreduce:
     /* Free the current lhs. */
     current_lhs (0, (yylsp[-3]), 0);
  insert_after(3, "</PYACC_Section2_Rules>");
- insert_after(3, "</PYACC_Section2_Rules_RHSes>");
- insert_before(3, "<PYACC_Section2_Rules_RHSes>");
  insert_before(0, "<PYACC_Section2_Rules>");
   }
-#line 2724 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2722 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 84:
-#line 731 "src/parse-gram.y" /* yacc.c:1648  */
+#line 729 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
- insert_after(0, "</PYACC_Section2_Rules_RHSes_RHS>");
- insert_before(0, "<PYACC_Section2_Rules_RHSes_RHS>");
+ insert_after(0, "</PYACC_Section2_Rules_RHS>");
+ insert_before(0, "<PYACC_Section2_Rules_RHS>");
  }
-#line 2733 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2731 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 85:
-#line 735 "src/parse-gram.y" /* yacc.c:1648  */
+#line 733 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_end ((yylsp[0])); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS>");
- insert_before(2, "<PYACC_Section2_Rules_RHSes_RHS>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS>");
+ insert_before(2, "<PYACC_Section2_Rules_RHS>");
  }
-#line 2742 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2740 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 87:
-#line 745 "src/parse-gram.y" /* yacc.c:1648  */
+#line 743 "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 */
@@ -2784,155 +2782,155 @@ yyreduce:
  piece[piece2] = piece[piece2 - 1]; /* empty */
  piece[piece2 - 1] = temp;
  }
-#line 2758 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2756 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 88:
-#line 757 "src/parse-gram.y" /* yacc.c:1648  */
+#line 755 "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_RHSes_RHS_Symbol>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Symbol>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Symbol>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Symbol>");
  }
-#line 2767 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2765 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 89:
-#line 762 "src/parse-gram.y" /* yacc.c:1648  */
+#line 760 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_action_append ((yyvsp[-1].code), (yylsp[-1]), (yyvsp[0].named_ref), false); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_Action>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Action>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Action>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Action>");
  }
-#line 2776 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2774 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 90:
-#line 767 "src/parse-gram.y" /* yacc.c:1648  */
+#line 765 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
-#line 2782 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2780 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 91:
-#line 769 "src/parse-gram.y" /* yacc.c:1648  */
+#line 767 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_empty_set ((yylsp[0])); /*}*/
- insert_after(1, "</PYACC_Section2_Rules_RHSes_RHS_Empty>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Empty>");
+ insert_after(1, "</PYACC_Section2_Rules_RHS_Empty>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Empty>");
  }
-#line 2791 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2789 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 92:
-#line 774 "src/parse-gram.y" /* yacc.c:1648  */
+#line 772 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_Prec>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Prec>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Prec>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Prec>");
  }
-#line 2800 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2798 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 93:
-#line 779 "src/parse-gram.y" /* yacc.c:1648  */
+#line 777 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_DPrec>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_DPrec>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_DPrec>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_DPrec>");
  }
-#line 2809 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2807 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 94:
-#line 784 "src/parse-gram.y" /* yacc.c:1648  */
+#line 782 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_Merge>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Merge>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Merge>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Merge>");
  }
-#line 2818 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2816 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 95:
-#line 791 "src/parse-gram.y" /* yacc.c:1648  */
+#line 789 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = 0; }
-#line 2824 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2822 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 96:
-#line 792 "src/parse-gram.y" /* yacc.c:1648  */
+#line 790 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = named_ref_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2830 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2828 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 98:
-#line 803 "src/parse-gram.y" /* yacc.c:1648  */
+#line 801 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[0].code)); }
-#line 2836 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2834 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 99:
-#line 828 "src/parse-gram.y" /* yacc.c:1648  */
+#line 826 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = ""; }
-#line 2842 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2840 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 100:
-#line 829 "src/parse-gram.y" /* yacc.c:1648  */
+#line 827 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = (yyvsp[0].uniqstr); }
-#line 2848 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2846 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 101:
-#line 830 "src/parse-gram.y" /* yacc.c:1648  */
+#line 828 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_string;  (yyval.value).chars = (yyvsp[0].code); }
-#line 2854 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2852 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 102:
-#line 831 "src/parse-gram.y" /* yacc.c:1648  */
+#line 829 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_code;    (yyval.value).chars = strip_braces ((yyvsp[0].code)); }
-#line 2860 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2858 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 103:
-#line 844 "src/parse-gram.y" /* yacc.c:1648  */
+#line 842 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2866 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2864 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 104:
-#line 846 "src/parse-gram.y" /* yacc.c:1648  */
+#line 844 "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 2876 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2874 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 105:
-#line 854 "src/parse-gram.y" /* yacc.c:1648  */
+#line 852 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2882 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2880 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 108:
-#line 866 "src/parse-gram.y" /* yacc.c:1648  */
+#line 864 "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 2891 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2889 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 110:
-#line 875 "src/parse-gram.y" /* yacc.c:1648  */
+#line 873 "src/parse-gram.y" /* yacc.c:1648  */
     {
       muscle_code_grow ("epilogue", translate_code ((yyvsp[0].code), (yylsp[0]), true), (yylsp[0]));
       code_scanner_last_string_free ();
  insert_after(1, "</PYACC_Section3>");
  insert_after(0, "<PYACC_Section3>");
     }
-#line 2902 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2900 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
 
-#line 2906 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2904 "src/parse-gram.c" /* yacc.c:1648  */
         default: break;
       }
     if (yychar_backup != yychar)
@@ -3195,7 +3193,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 883 "src/parse-gram.y" /* yacc.c:1907  */
+#line 881 "src/parse-gram.y" /* yacc.c:1907  */
 
 
 /* Return the location of the left-hand side of a rule whose
index ec0f447..88bb4bb 100644 (file)
@@ -61,7 +61,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 807 "src/parse-gram.y" /* yacc.c:1910  */
+#line 805 "src/parse-gram.y" /* yacc.c:1910  */
 #include "muscle-tab.h"
 
 #line 68 "src/parse-gram.h" /* yacc.c:1910  */
@@ -155,7 +155,7 @@ named_ref *named_ref;
 param_type param;
 #line 496 "src/parse-gram.y" /* yacc.c:1910  */
 code_props_type code_type;
-#line 809 "src/parse-gram.y" /* yacc.c:1910  */
+#line 807 "src/parse-gram.y" /* yacc.c:1910  */
 
   struct
   {
index 09f6259..b7ab751 100644 (file)
@@ -721,20 +721,18 @@ rules:
     /* Free the current lhs. */
     current_lhs (0, @1, 0);
  insert_after(3, "</PYACC_Section2_Rules>");
- insert_after(3, "</PYACC_Section2_Rules_RHSes>");
- insert_before(3, "<PYACC_Section2_Rules_RHSes>");
  insert_before(0, "<PYACC_Section2_Rules>");
   }
 ;
 
 rhses.1:
   rhs                { grammar_current_rule_end (@1); /*}*/
- insert_after(0, "</PYACC_Section2_Rules_RHSes_RHS>");
- insert_before(0, "<PYACC_Section2_Rules_RHSes_RHS>");
+ insert_after(0, "</PYACC_Section2_Rules_RHS>");
+ insert_before(0, "<PYACC_Section2_Rules_RHS>");
  }
 | rhses.1 "|" rhs    { grammar_current_rule_end (@3); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS>");
- insert_before(2, "<PYACC_Section2_Rules_RHSes_RHS>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS>");
+ insert_before(2, "<PYACC_Section2_Rules_RHS>");
  }
 | rhses.1 ";"
 ;
@@ -755,35 +753,35 @@ rhs:
  } 
 | rhs symbol named_ref.opt
     { grammar_current_rule_symbol_append ($2, @2, $3); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_Symbol>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Symbol>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Symbol>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Symbol>");
  }
 | rhs "{...}" named_ref.opt
     { grammar_current_rule_action_append ($2, @2, $3, false); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_Action>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Action>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Action>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Action>");
  }
 | rhs "%?{...}"
     { grammar_current_rule_action_append ($2, @2, NULL, true); }
 | rhs "%empty"
     { grammar_current_rule_empty_set (@2); /*}*/
- insert_after(1, "</PYACC_Section2_Rules_RHSes_RHS_Empty>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Empty>");
+ insert_after(1, "</PYACC_Section2_Rules_RHS_Empty>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Empty>");
  }
 | rhs "%prec" symbol
     { grammar_current_rule_prec_set ($3, @3); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_Prec>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Prec>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Prec>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Prec>");
  }
 | rhs "%dprec" INT
     { grammar_current_rule_dprec_set ($3, @3); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_DPrec>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_DPrec>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_DPrec>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_DPrec>");
  }
 | rhs "%merge" TAG
     { grammar_current_rule_merge_set ($3, @3); /*}*/
- insert_after(2, "</PYACC_Section2_Rules_RHSes_RHS_Merge>");
- insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Merge>");
+ insert_after(2, "</PYACC_Section2_Rules_RHS_Merge>");
+ insert_before(1, "<PYACC_Section2_Rules_RHS_Merge>");
  }
 ;
 
index ad09fce..9030e49 100644 (file)
@@ -674,7 +674,7 @@ eqopt    ([[:space:]]*=)?
  {
       obstack_1grow (&obstack_for_string, c);
   stop_text();
-  sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", (int)c);
+  sprintf(piece_temp, "<PYACC_Escape character=\"%d\">", (int)c);
   piece_append(piece_temp);
   flush();
   piece_append("</PYACC_Escape>"); 
@@ -691,23 +691,23 @@ eqopt    ([[:space:]]*=)?
  {
       obstack_1grow (&obstack_for_string, c);
   stop_text();
-  sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", (int)c);
+  sprintf(piece_temp, "<PYACC_Escape character=\"%d\">", (int)c);
   piece_append(piece_temp);
   flush();
   piece_append("</PYACC_Escape>"); 
  }
   }
 
-  \\a   obstack_1grow (&obstack_for_string, '\a'); stop_text(); piece_append("<PYACC_Escape char=\"7\">"); flush(); piece_append("</PYACC_Escape>");
-  \\b   obstack_1grow (&obstack_for_string, '\b'); stop_text(); piece_append("<PYACC_Escape char=\"8\">"); flush(); piece_append("</PYACC_Escape>");
-  \\f   obstack_1grow (&obstack_for_string, '\f'); stop_text(); piece_append("<PYACC_Escape char=\"12\">"); flush(); piece_append("</PYACC_Escape>");
-  \\n   obstack_1grow (&obstack_for_string, '\n'); stop_text(); piece_append("<PYACC_Escape char=\"10\">"); flush(); piece_append("</PYACC_Escape>");
-  \\r   obstack_1grow (&obstack_for_string, '\r'); stop_text(); piece_append("<PYACC_Escape char=\"13\">"); flush(); piece_append("</PYACC_Escape>");
-  \\t   obstack_1grow (&obstack_for_string, '\t'); stop_text(); piece_append("<PYACC_Escape char=\"9\">"); flush(); piece_append("</PYACC_Escape>");
-  \\v   obstack_1grow (&obstack_for_string, '\v'); stop_text(); piece_append("<PYACC_Escape char=\"11\">"); flush(); piece_append("</PYACC_Escape>");
+  \\a   obstack_1grow (&obstack_for_string, '\a'); stop_text(); piece_append("<PYACC_Escape character=\"7\">"); flush(); piece_append("</PYACC_Escape>");
+  \\b   obstack_1grow (&obstack_for_string, '\b'); stop_text(); piece_append("<PYACC_Escape character=\"8\">"); flush(); piece_append("</PYACC_Escape>");
+  \\f   obstack_1grow (&obstack_for_string, '\f'); stop_text(); piece_append("<PYACC_Escape character=\"12\">"); flush(); piece_append("</PYACC_Escape>");
+  \\n   obstack_1grow (&obstack_for_string, '\n'); stop_text(); piece_append("<PYACC_Escape character=\"10\">"); flush(); piece_append("</PYACC_Escape>");
+  \\r   obstack_1grow (&obstack_for_string, '\r'); stop_text(); piece_append("<PYACC_Escape character=\"13\">"); flush(); piece_append("</PYACC_Escape>");
+  \\t   obstack_1grow (&obstack_for_string, '\t'); stop_text(); piece_append("<PYACC_Escape character=\"9\">"); flush(); piece_append("</PYACC_Escape>");
+  \\v   obstack_1grow (&obstack_for_string, '\v'); stop_text(); piece_append("<PYACC_Escape character=\"11\">"); flush(); piece_append("</PYACC_Escape>");
 
   /* \\[\"\'?\\] would be shorter, but it confuses xgettext.  */
-  \\("\""|"'"|"?"|"\\")  obstack_1grow (&obstack_for_string, yytext[1]); stop_text(); sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", yytext[1]); piece_append(piece_temp); flush(); piece_append("</PYACC_Escape>"); 
+  \\("\""|"'"|"?"|"\\")  obstack_1grow (&obstack_for_string, yytext[1]); stop_text(); sprintf(piece_temp, "<PYACC_Escape character=\"%d\">", yytext[1]); piece_append(piece_temp); flush(); piece_append("</PYACC_Escape>"); 
  
   \\(u|U[0-9abcdefABCDEF]{4})[0-9abcdefABCDEF]{4} {
     int c = convert_ucn_to_byte (yytext);
@@ -717,7 +717,7 @@ eqopt    ([[:space:]]*=)?
     else
  {
       obstack_1grow (&obstack_for_string, c);
-  sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", c);
+  sprintf(piece_temp, "<PYACC_Escape character=\"%d\">", c);
   piece_append(piece_temp);
   flush();
   piece_append("</PYACC_Escape>");