param_parse = 1 << 1,
param_both = param_lex | param_parse
} param_type;
-#line 798 "src/parse-gram.y" /* yacc.c:355 */
+#line 807 "src/parse-gram.y" /* yacc.c:355 */
#include "muscle-tab.h"
#line 136 "src/parse-gram.c" /* yacc.c:355 */
param_type param;
#line 496 "src/parse-gram.y" /* yacc.c:355 */
code_props_type code_type;
-#line 800 "src/parse-gram.y" /* yacc.c:355 */
+#line 809 "src/parse-gram.y" /* yacc.c:355 */
struct
{
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, 747, 752,
- 757, 759, 764, 769, 774, 782, 783, 793, 794, 819,
- 820, 821, 822, 834, 836, 845, 850, 851, 856, 864,
- 865
+ 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
};
#endif
break;
case 89: /* value */
-#line 809 "src/parse-gram.y" /* yacc.c:684 */
+#line 818 "src/parse-gram.y" /* yacc.c:684 */
{
switch (((*yyvaluep).value).kind)
{
case 87:
#line 745 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_begin (current_lhs_symbol, current_lhs_location,
- current_lhs_named_ref); }
-#line 2749 "src/parse-gram.c" /* yacc.c:1648 */
+ current_lhs_named_ref); /*}*/
+ /* in this case, want empty rule associated with stuff on the right of us */
+ /* therefore, move inter-token text from the right of us over to the left */
+ if (yychar == YYEMPTY)
+ yychar = yylex(&yylval, &yylloc);
+ char *temp = piece[piece2 + 1];
+ piece[piece2 + 1] = piece[piece2]; /* empty */
+ piece[piece2] = piece[piece2 - 1]; /* empty */
+ piece[piece2 - 1] = temp;
+ }
+#line 2758 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 88:
-#line 748 "src/parse-gram.y" /* yacc.c:1648 */
+#line 757 "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>");
}
-#line 2758 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2767 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 89:
-#line 753 "src/parse-gram.y" /* yacc.c:1648 */
+#line 762 "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_after(0, "<PYACC_Section2_Rules_RHSes_RHS_Action>");
+ insert_before(1, "<PYACC_Section2_Rules_RHSes_RHS_Action>");
}
-#line 2767 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2776 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 90:
-#line 758 "src/parse-gram.y" /* yacc.c:1648 */
+#line 767 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
-#line 2773 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2782 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 91:
-#line 760 "src/parse-gram.y" /* yacc.c:1648 */
+#line 769 "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>");
}
-#line 2782 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2791 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 92:
-#line 765 "src/parse-gram.y" /* yacc.c:1648 */
+#line 774 "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>");
}
-#line 2791 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2800 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 93:
-#line 770 "src/parse-gram.y" /* yacc.c:1648 */
+#line 779 "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>");
}
-#line 2800 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2809 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 94:
-#line 775 "src/parse-gram.y" /* yacc.c:1648 */
+#line 784 "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>");
}
-#line 2809 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2818 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 95:
-#line 782 "src/parse-gram.y" /* yacc.c:1648 */
+#line 791 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.named_ref) = 0; }
-#line 2815 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2824 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 96:
-#line 783 "src/parse-gram.y" /* yacc.c:1648 */
+#line 792 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.named_ref) = named_ref_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2821 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2830 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 98:
-#line 794 "src/parse-gram.y" /* yacc.c:1648 */
+#line 803 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.uniqstr) = uniqstr_new ((yyvsp[0].code)); }
-#line 2827 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2836 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 99:
-#line 819 "src/parse-gram.y" /* yacc.c:1648 */
+#line 828 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_keyword; (yyval.value).chars = ""; }
-#line 2833 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2842 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 100:
-#line 820 "src/parse-gram.y" /* yacc.c:1648 */
+#line 829 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_keyword; (yyval.value).chars = (yyvsp[0].uniqstr); }
-#line 2839 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2848 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 101:
-#line 821 "src/parse-gram.y" /* yacc.c:1648 */
+#line 830 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_string; (yyval.value).chars = (yyvsp[0].code); }
-#line 2845 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2854 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 102:
-#line 822 "src/parse-gram.y" /* yacc.c:1648 */
+#line 831 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_code; (yyval.value).chars = strip_braces ((yyvsp[0].code)); }
-#line 2851 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2860 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 103:
-#line 835 "src/parse-gram.y" /* yacc.c:1648 */
+#line 844 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2857 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2866 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 104:
-#line 837 "src/parse-gram.y" /* yacc.c:1648 */
+#line 846 "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 2867 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2876 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 105:
-#line 845 "src/parse-gram.y" /* yacc.c:1648 */
+#line 854 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2873 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2882 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 108:
-#line 857 "src/parse-gram.y" /* yacc.c:1648 */
+#line 866 "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 2882 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2891 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 110:
-#line 866 "src/parse-gram.y" /* yacc.c:1648 */
+#line 875 "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 2893 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2902 "src/parse-gram.c" /* yacc.c:1648 */
break;
-#line 2897 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2906 "src/parse-gram.c" /* yacc.c:1648 */
default: break;
}
if (yychar_backup != yychar)
#endif
return yyresult;
}
-#line 874 "src/parse-gram.y" /* yacc.c:1907 */
+#line 883 "src/parse-gram.y" /* yacc.c:1907 */
/* Return the location of the left-hand side of a rule whose
static yyconst flex_int16_t yy_rule_linenum[130] =
{ 0,
- 189, 192, 193, 194, 202, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 279, 283, 284, 285, 287, 299, 313, 330, 335,
- 338, 341, 344, 356, 367, 368, 369, 377, 384, 391,
+ 190, 193, 194, 195, 203, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 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, 355, 364, 365, 366, 374, 384, 391,
411, 421, 436, 446, 473, 486, 502, 517, 534, 535,
546, 557, 558, 570, 586, 596, 623, 635, 656, 657,
668, 684, 701, 702, 703, 704, 705, 706, 707, 710,
- 712, 727, 749, 754, 755, 761, 762, 773, 779, 785,
- 791, 807, 808, 812, 819, 844, 873, 914, 915
+ 712, 726, 744, 749, 750, 756, 757, 768, 775, 782,
+ 789, 806, 807, 811, 818, 843, 872, 913, 914
} ;
/* The intent behind this definition is that it'll catch
/* Nick */
static int in_text;
-static void flush_text(void);
+static void start_text(void);
+static void stop_text(void);
/* A C-like comment in directives/rules. */
white space between the backslash and the newline. */
/* An equal sign, with optional leading whitespaces. This is used in some
deprecated constructs. */
-#line 1145 "src/scan-gram.c"
+#line 1146 "src/scan-gram.c"
#define INITIAL 0
#define SC_YACC_COMMENT 1
register int yy_act;
/* %% [7.0] user's declarations go here */
-#line 150 "src/scan-gram.l"
+#line 151 "src/scan-gram.l"
/* Nesting level. Either for nested braces, or nested angle brackets
| Scanning white space. |
`-----------------------*/
-#line 1447 "src/scan-gram.c"
+#line 1448 "src/scan-gram.c"
if ( !(yy_init) )
{
/* Comments and white space. */
case 1:
YY_RULE_SETUP
-#line 189 "src/scan-gram.l"
+#line 190 "src/scan-gram.l"
{
complain (loc, Wother, _("stray ',' treated as white space"));
}
YY_BREAK
case 2:
/* rule 2 can match eol */
-#line 193 "src/scan-gram.l"
+#line 194 "src/scan-gram.l"
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
-#line 193 "src/scan-gram.l"
+#line 194 "src/scan-gram.l"
continue;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 194 "src/scan-gram.l"
+#line 195 "src/scan-gram.l"
{
token_start = loc->start;
context_state = YY_START;
case 5:
/* rule 5 can match eol */
YY_RULE_SETUP
-#line 202 "src/scan-gram.l"
+#line 203 "src/scan-gram.l"
{
handle_syncline (gram_text + sizeof "#line " - 1, *loc);
}
case 6:
YY_RULE_SETUP
-#line 220 "src/scan-gram.l"
+#line 221 "src/scan-gram.l"
return PERCENT_NONASSOC;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 221 "src/scan-gram.l"
+#line 222 "src/scan-gram.l"
return PERCENT_CODE;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 222 "src/scan-gram.l"
+#line 223 "src/scan-gram.l"
RETURN_PERCENT_FLAG("parse.trace");
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 223 "src/scan-gram.l"
+#line 224 "src/scan-gram.l"
return PERCENT_DEFAULT_PREC;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 224 "src/scan-gram.l"
+#line 225 "src/scan-gram.l"
return PERCENT_DEFINE;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 225 "src/scan-gram.l"
+#line 226 "src/scan-gram.l"
return PERCENT_DEFINES;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 226 "src/scan-gram.l"
+#line 227 "src/scan-gram.l"
return PERCENT_DESTRUCTOR;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 227 "src/scan-gram.l"
+#line 228 "src/scan-gram.l"
return PERCENT_DPREC;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 228 "src/scan-gram.l"
+#line 229 "src/scan-gram.l"
return PERCENT_EMPTY;
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 229 "src/scan-gram.l"
+#line 230 "src/scan-gram.l"
return PERCENT_ERROR_VERBOSE;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 230 "src/scan-gram.l"
+#line 231 "src/scan-gram.l"
return PERCENT_EXPECT;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 231 "src/scan-gram.l"
+#line 232 "src/scan-gram.l"
return PERCENT_EXPECT_RR;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 232 "src/scan-gram.l"
+#line 233 "src/scan-gram.l"
return PERCENT_FILE_PREFIX;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 233 "src/scan-gram.l"
+#line 234 "src/scan-gram.l"
return PERCENT_YACC;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 234 "src/scan-gram.l"
+#line 235 "src/scan-gram.l"
return PERCENT_INITIAL_ACTION;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 235 "src/scan-gram.l"
+#line 236 "src/scan-gram.l"
return PERCENT_GLR_PARSER;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 236 "src/scan-gram.l"
+#line 237 "src/scan-gram.l"
return PERCENT_LANGUAGE;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 237 "src/scan-gram.l"
+#line 238 "src/scan-gram.l"
return PERCENT_LEFT;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 238 "src/scan-gram.l"
+#line 239 "src/scan-gram.l"
RETURN_PERCENT_PARAM(lex);
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 239 "src/scan-gram.l"
+#line 240 "src/scan-gram.l"
RETURN_PERCENT_FLAG("locations");
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 240 "src/scan-gram.l"
+#line 241 "src/scan-gram.l"
return PERCENT_MERGE;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 241 "src/scan-gram.l"
+#line 242 "src/scan-gram.l"
return PERCENT_NAME_PREFIX;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 242 "src/scan-gram.l"
+#line 243 "src/scan-gram.l"
return PERCENT_NO_DEFAULT_PREC;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 243 "src/scan-gram.l"
+#line 244 "src/scan-gram.l"
return PERCENT_NO_LINES;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 244 "src/scan-gram.l"
+#line 245 "src/scan-gram.l"
return PERCENT_NONASSOC;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 245 "src/scan-gram.l"
+#line 246 "src/scan-gram.l"
return PERCENT_NONDETERMINISTIC_PARSER;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 246 "src/scan-gram.l"
+#line 247 "src/scan-gram.l"
return PERCENT_NTERM;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 247 "src/scan-gram.l"
+#line 248 "src/scan-gram.l"
return PERCENT_OUTPUT;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 248 "src/scan-gram.l"
+#line 249 "src/scan-gram.l"
RETURN_PERCENT_PARAM(both);
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 249 "src/scan-gram.l"
+#line 250 "src/scan-gram.l"
RETURN_PERCENT_PARAM(parse);
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 250 "src/scan-gram.l"
+#line 251 "src/scan-gram.l"
return PERCENT_PREC;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 251 "src/scan-gram.l"
+#line 252 "src/scan-gram.l"
return PERCENT_PRECEDENCE;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 252 "src/scan-gram.l"
+#line 253 "src/scan-gram.l"
return PERCENT_PRINTER;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 253 "src/scan-gram.l"
+#line 254 "src/scan-gram.l"
RETURN_PERCENT_FLAG("api.pure");
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 254 "src/scan-gram.l"
+#line 255 "src/scan-gram.l"
return PERCENT_REQUIRE;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 255 "src/scan-gram.l"
+#line 256 "src/scan-gram.l"
return PERCENT_RIGHT;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 256 "src/scan-gram.l"
+#line 257 "src/scan-gram.l"
return PERCENT_SKELETON;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 257 "src/scan-gram.l"
+#line 258 "src/scan-gram.l"
return PERCENT_START;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 258 "src/scan-gram.l"
+#line 259 "src/scan-gram.l"
return PERCENT_TOKEN;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 259 "src/scan-gram.l"
+#line 260 "src/scan-gram.l"
return PERCENT_TOKEN;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 260 "src/scan-gram.l"
+#line 261 "src/scan-gram.l"
return PERCENT_TOKEN_TABLE;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 261 "src/scan-gram.l"
+#line 262 "src/scan-gram.l"
return PERCENT_TYPE;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 262 "src/scan-gram.l"
+#line 263 "src/scan-gram.l"
return PERCENT_UNION;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 263 "src/scan-gram.l"
+#line 264 "src/scan-gram.l"
return PERCENT_VERBOSE;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 264 "src/scan-gram.l"
+#line 265 "src/scan-gram.l"
return PERCENT_YACC;
YY_BREAK
/* deprecated */
case 51:
YY_RULE_SETUP
-#line 267 "src/scan-gram.l"
+#line 268 "src/scan-gram.l"
DEPRECATED("%default-prec");
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 268 "src/scan-gram.l"
+#line 269 "src/scan-gram.l"
DEPRECATED("%define parse.error verbose");
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 269 "src/scan-gram.l"
+#line 270 "src/scan-gram.l"
DEPRECATED("%expect-rr");
YY_BREAK
case 54:
/* rule 54 can match eol */
YY_RULE_SETUP
-#line 270 "src/scan-gram.l"
+#line 271 "src/scan-gram.l"
DEPRECATED("%file-prefix");
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 271 "src/scan-gram.l"
+#line 272 "src/scan-gram.l"
DEPRECATED("%fixed-output-files");
YY_BREAK
case 56:
/* rule 56 can match eol */
YY_RULE_SETUP
-#line 272 "src/scan-gram.l"
+#line 273 "src/scan-gram.l"
DEPRECATED("%name-prefix");
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 273 "src/scan-gram.l"
+#line 274 "src/scan-gram.l"
DEPRECATED("%no-default-prec");
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 274 "src/scan-gram.l"
+#line 275 "src/scan-gram.l"
DEPRECATED("%no-lines");
YY_BREAK
case 59:
/* rule 59 can match eol */
YY_RULE_SETUP
-#line 275 "src/scan-gram.l"
+#line 276 "src/scan-gram.l"
DEPRECATED("%output");
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 276 "src/scan-gram.l"
+#line 277 "src/scan-gram.l"
DEPRECATED("%pure-parser");
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 277 "src/scan-gram.l"
+#line 278 "src/scan-gram.l"
DEPRECATED("%token-table");
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 279 "src/scan-gram.l"
+#line 280 "src/scan-gram.l"
{
complain (loc, complaint, _("invalid directive: %s"), quote (gram_text));
}
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 283 "src/scan-gram.l"
+#line 284 "src/scan-gram.l"
return EQUAL;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 284 "src/scan-gram.l"
+#line 285 "src/scan-gram.l"
return PIPE;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 285 "src/scan-gram.l"
+#line 286 "src/scan-gram.l"
return SEMICOLON;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 287 "src/scan-gram.l"
+#line 288 "src/scan-gram.l"
{
val->uniqstr = uniqstr_new (gram_text);
id_loc = *loc;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 299 "src/scan-gram.l"
+#line 300 "src/scan-gram.l"
{
val->integer = scan_integer (gram_text, 10, *loc);
#if 1
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 313 "src/scan-gram.l"
+#line 314 "src/scan-gram.l"
{
val->integer = scan_integer (gram_text, 16, *loc);
#if 1
accept "1FOO" as "1 FOO". */
case 69:
YY_RULE_SETUP
-#line 330 "src/scan-gram.l"
+#line 331 "src/scan-gram.l"
{
complain (loc, complaint, _("invalid identifier: %s"), quote (gram_text));
}
/* Characters. */
case 70:
YY_RULE_SETUP
-#line 335 "src/scan-gram.l"
-token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; piece_pack(); piece_append("<PYACC_Char>"); in_text = 0;
+#line 336 "src/scan-gram.l"
+token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; piece_pack(); piece_append("<PYACC_Char>");
YY_BREAK
/* Strings. */
case 71:
YY_RULE_SETUP
-#line 338 "src/scan-gram.l"
-token_start = loc->start; BEGIN SC_ESCAPED_STRING; piece_pack(); piece_append("<PYACC_String>"); in_text = 0;
+#line 339 "src/scan-gram.l"
+token_start = loc->start; BEGIN SC_ESCAPED_STRING; piece_pack(); piece_append("<PYACC_String>");
YY_BREAK
/* Prologue. */
case 72:
YY_RULE_SETUP
-#line 341 "src/scan-gram.l"
-code_start = loc->start; BEGIN SC_PROLOGUE; piece_pack(); piece_append("<PYACC_Section1_Prologue>"); flush(); piece_append("<PYACC_Text>");
+#line 342 "src/scan-gram.l"
+code_start = loc->start; BEGIN SC_PROLOGUE; piece_pack(); piece_append("<PYACC_Section1_Prologue>"); flush(); start_text();
YY_BREAK
/* Code in between braces. */
case 73:
YY_RULE_SETUP
-#line 344 "src/scan-gram.l"
+#line 345 "src/scan-gram.l"
{
STRING_GROW;
nesting = 0;
BEGIN SC_BRACED_CODE;
piece_pack();
piece_append("<PYACC_BracedCode>");
- flush();
- piece_append("<PYACC_Text>");
}
YY_BREAK
/* Semantic predicate. */
case 74:
/* rule 74 can match eol */
YY_RULE_SETUP
-#line 356 "src/scan-gram.l"
+#line 355 "src/scan-gram.l"
{
nesting = 0;
code_start = loc->start;
piece_pack();
piece_append("<PYACC_BracedPredicate>");
- flush();
- piece_append("<PYACC_Text>");
BEGIN SC_PREDICATE;
}
YY_BREAK
/* A type. */
case 75:
YY_RULE_SETUP
-#line 367 "src/scan-gram.l"
+#line 364 "src/scan-gram.l"
return TAG_ANY;
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 368 "src/scan-gram.l"
+#line 365 "src/scan-gram.l"
return TAG_NONE;
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 369 "src/scan-gram.l"
+#line 366 "src/scan-gram.l"
{
nesting = 0;
token_start = loc->start;
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 377 "src/scan-gram.l"
+#line 374 "src/scan-gram.l"
{
static int percent_percent_count;
if (++percent_percent_count == 2)
+ {
BEGIN SC_EPILOGUE;
+ in_text = 1; /* not really in text, just suppress the <PYACC_Text> tag */
+ }
return PERCENT_PERCENT;
}
YY_BREAK
val->code = last_string;
BEGIN INITIAL;
#if 1
- flush_text();
+ stop_text();
piece_esc(gram_text, strlen(gram_text));
piece_append("</PYACC_String>");
piece_pack();
STRING_FREE;
BEGIN INITIAL;
#if 1
- flush_text();
+ stop_text();
piece_esc(gram_text, strlen(gram_text));
piece_append("</PYACC_Char>");
piece_pack();
else
{
obstack_1grow (&obstack_for_string, c);
- flush_text();
+ stop_text();
sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", (int)c);
piece_append(piece_temp);
flush();
else
{
obstack_1grow (&obstack_for_string, c);
- flush_text();
+ stop_text();
sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", (int)c);
piece_append(piece_temp);
flush();
case 103:
YY_RULE_SETUP
#line 701 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\a'); flush_text(); piece_append("<PYACC_Escape char=\"7\">"); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, '\a'); stop_text(); piece_append("<PYACC_Escape char=\"7\">"); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
case 104:
YY_RULE_SETUP
#line 702 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\b'); flush_text(); piece_append("<PYACC_Escape char=\"8\">"); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, '\b'); stop_text(); piece_append("<PYACC_Escape char=\"8\">"); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
case 105:
YY_RULE_SETUP
#line 703 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\f'); flush_text(); piece_append("<PYACC_Escape char=\"12\">"); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, '\f'); stop_text(); piece_append("<PYACC_Escape char=\"12\">"); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
case 106:
YY_RULE_SETUP
#line 704 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\n'); flush_text(); piece_append("<PYACC_Escape char=\"10\">"); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, '\n'); stop_text(); piece_append("<PYACC_Escape char=\"10\">"); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
case 107:
YY_RULE_SETUP
#line 705 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\r'); flush_text(); piece_append("<PYACC_Escape char=\"13\">"); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, '\r'); stop_text(); piece_append("<PYACC_Escape char=\"13\">"); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
case 108:
YY_RULE_SETUP
#line 706 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\t'); flush_text(); piece_append("<PYACC_Escape char=\"9\">"); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, '\t'); stop_text(); piece_append("<PYACC_Escape char=\"9\">"); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
case 109:
YY_RULE_SETUP
#line 707 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\v'); flush_text(); piece_append("<PYACC_Escape char=\"11\">"); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, '\v'); stop_text(); piece_append("<PYACC_Escape char=\"11\">"); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
/* \\[\"\'?\\] would be shorter, but it confuses xgettext. */
case 110:
YY_RULE_SETUP
#line 710 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, gram_text[1]); flush_text(); sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", gram_text[1]); piece_append(piece_temp); flush(); piece_append("</PYACC_Escape>");
+obstack_1grow (&obstack_for_string, gram_text[1]); stop_text(); sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", gram_text[1]); piece_append(piece_temp); flush(); piece_append("</PYACC_Escape>");
YY_BREAK
case 111:
YY_RULE_SETUP
else
{
obstack_1grow (&obstack_for_string, c);
- flush_text();
sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", c);
piece_append(piece_temp);
flush();
case 112:
/* rule 112 can match eol */
YY_RULE_SETUP
-#line 727 "src/scan-gram.l"
+#line 726 "src/scan-gram.l"
{
char const *p = gram_text + 1;
/* Quote only if escaping won't make the character visible. */
p = quotearg_style_mem (escape_quoting_style, p, 1);
complain (loc, complaint, _("invalid character after \\-escape: %s"),
p);
- if (in_text == 0) {
- piece_append("<PYACC_Text>");
- in_text = 1;
- }
}
YY_BREAK
case 113:
/* rule 113 can match eol */
YY_RULE_SETUP
-#line 749 "src/scan-gram.l"
+#line 744 "src/scan-gram.l"
STRING_GROW;
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 754 "src/scan-gram.l"
+#line 749 "src/scan-gram.l"
STRING_GROW; BEGIN context_state;
YY_BREAK
case 115:
/* rule 115 can match eol */
YY_RULE_SETUP
-#line 755 "src/scan-gram.l"
+#line 750 "src/scan-gram.l"
unexpected_newline (token_start, "'");
YY_BREAK
case YY_STATE_EOF(SC_CHARACTER):
-#line 756 "src/scan-gram.l"
+#line 751 "src/scan-gram.l"
unexpected_eof (token_start, "'");
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 761 "src/scan-gram.l"
+#line 756 "src/scan-gram.l"
STRING_GROW; BEGIN context_state;
YY_BREAK
case 117:
/* rule 117 can match eol */
YY_RULE_SETUP
-#line 762 "src/scan-gram.l"
+#line 757 "src/scan-gram.l"
unexpected_newline (token_start, "\"");
YY_BREAK
case YY_STATE_EOF(SC_STRING):
-#line 763 "src/scan-gram.l"
+#line 758 "src/scan-gram.l"
unexpected_eof (token_start, "\"");
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 773 "src/scan-gram.l"
+#line 768 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
token_start = loc->start;
BEGIN SC_CHARACTER;
+ start_text();
}
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 779 "src/scan-gram.l"
+#line 775 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
token_start = loc->start;
BEGIN SC_STRING;
+ start_text();
}
YY_BREAK
case 120:
/* rule 120 can match eol */
YY_RULE_SETUP
-#line 785 "src/scan-gram.l"
+#line 782 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
token_start = loc->start;
BEGIN SC_COMMENT;
+ start_text();
}
YY_BREAK
case 121:
/* rule 121 can match eol */
YY_RULE_SETUP
-#line 791 "src/scan-gram.l"
+#line 789 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
BEGIN SC_LINE_COMMENT;
+ start_text();
}
YY_BREAK
case 122:
/* rule 122 can match eol */
YY_RULE_SETUP
-#line 807 "src/scan-gram.l"
-STRING_GROW; nesting++;
+#line 806 "src/scan-gram.l"
+STRING_GROW; nesting++; start_text();
YY_BREAK
case 123:
/* rule 123 can match eol */
YY_RULE_SETUP
-#line 808 "src/scan-gram.l"
-STRING_GROW; nesting--;
+#line 807 "src/scan-gram.l"
+STRING_GROW; nesting--; start_text();
YY_BREAK
/* Tokenize '<<%' correctly (as '<<' '%') rather than incorrrectly
(as '<' '<%'). */
case 124:
/* rule 124 can match eol */
YY_RULE_SETUP
-#line 812 "src/scan-gram.l"
-STRING_GROW;
+#line 811 "src/scan-gram.l"
+STRING_GROW; start_text();
YY_BREAK
case YY_STATE_EOF(SC_BRACED_CODE):
case YY_STATE_EOF(SC_PREDICATE):
-#line 814 "src/scan-gram.l"
+#line 813 "src/scan-gram.l"
unexpected_eof (code_start, "}");
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 819 "src/scan-gram.l"
+#line 818 "src/scan-gram.l"
{
obstack_1grow (&obstack_for_string, '}');
val->code = last_string;
BEGIN INITIAL;
#if 1
- piece_append("</PYACC_Text>");
+ stop_text();
piece_esc(gram_text, strlen(gram_text));
piece_append("</PYACC_BracedCode>");
piece_pack();
case 126:
YY_RULE_SETUP
-#line 844 "src/scan-gram.l"
+#line 843 "src/scan-gram.l"
{
--nesting;
if (nesting < 0)
val->code = last_string;
BEGIN INITIAL;
#if 1
- piece_append("</PYACC_Text>");
+ stop_text();
piece_esc(gram_text, strlen(gram_text));
piece_append("</PYACC_BracedPredicate>");
piece_pack();
case 127:
YY_RULE_SETUP
-#line 873 "src/scan-gram.l"
+#line 872 "src/scan-gram.l"
{
STRING_FINISH;
loc->start = code_start;
val->code = last_string;
BEGIN INITIAL;
#if 1
- piece_append("</PYACC_Text>");
+ stop_text();
piece_esc(gram_text, strlen(gram_text));
piece_append("</PYACC_Section1_Prologue>");
piece_pack();
}
YY_BREAK
case YY_STATE_EOF(SC_PROLOGUE):
-#line 889 "src/scan-gram.l"
+#line 888 "src/scan-gram.l"
unexpected_eof (code_start, "%}");
YY_BREAK
case YY_STATE_EOF(SC_EPILOGUE):
-#line 900 "src/scan-gram.l"
+#line 899 "src/scan-gram.l"
{
STRING_FINISH;
loc->start = code_start;
| By default, grow the string obstack with the input. |
`-----------------------------------------------------*/
case 128:
-#line 915 "src/scan-gram.l"
+#line 914 "src/scan-gram.l"
case 129:
/* rule 129 can match eol */
YY_RULE_SETUP
-#line 915 "src/scan-gram.l"
-STRING_GROW;
+#line 914 "src/scan-gram.l"
+STRING_GROW; start_text();
YY_BREAK
case 130:
YY_RULE_SETUP
#line 917 "src/scan-gram.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 2786 "src/scan-gram.c"
+#line 2785 "src/scan-gram.c"
case YY_STATE_EOF(SC_RETURN_BRACKETED_ID):
yyterminate();
}
/* Nick */
-static void flush_text(void) {
+static void start_text(void) {
+ if (in_text == 0) {
+ piece_append("<PYACC_Text>");
+ in_text = 1;
+ }
+}
+
+static void stop_text(void) {
if (in_text) {
piece_append("</PYACC_Text>");
in_text = 0;
/* Nick */
static int in_text;
-static void flush_text(void);
+static void start_text(void);
+static void stop_text(void);
%}
/* A C-like comment in directives/rules. */
}
/* Characters. */
- "'" token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; piece_pack(); piece_append("<PYACC_Char>"); in_text = 0;
+ "'" token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; piece_pack(); piece_append("<PYACC_Char>");
/* Strings. */
- "\"" token_start = loc->start; BEGIN SC_ESCAPED_STRING; piece_pack(); piece_append("<PYACC_String>"); in_text = 0;
+ "\"" token_start = loc->start; BEGIN SC_ESCAPED_STRING; piece_pack(); piece_append("<PYACC_String>");
/* Prologue. */
- "%{" code_start = loc->start; BEGIN SC_PROLOGUE; piece_pack(); piece_append("<PYACC_Section1_Prologue>"); flush(); piece_append("<PYACC_Text>");
+ "%{" code_start = loc->start; BEGIN SC_PROLOGUE; piece_pack(); piece_append("<PYACC_Section1_Prologue>"); flush(); start_text();
/* Code in between braces. */
"{" {
BEGIN SC_BRACED_CODE;
piece_pack();
piece_append("<PYACC_BracedCode>");
- flush();
- piece_append("<PYACC_Text>");
}
/* Semantic predicate. */
code_start = loc->start;
piece_pack();
piece_append("<PYACC_BracedPredicate>");
- flush();
- piece_append("<PYACC_Text>");
BEGIN SC_PREDICATE;
}
"%%" {
static int percent_percent_count;
if (++percent_percent_count == 2)
+ {
BEGIN SC_EPILOGUE;
+ in_text = 1; /* not really in text, just suppress the <PYACC_Text> tag */
+ }
return PERCENT_PERCENT;
}
val->code = last_string;
BEGIN INITIAL;
#if 1
- flush_text();
+ stop_text();
piece_esc(yytext, strlen(yytext));
piece_append("</PYACC_String>");
piece_pack();
STRING_FREE;
BEGIN INITIAL;
#if 1
- flush_text();
+ stop_text();
piece_esc(yytext, strlen(yytext));
piece_append("</PYACC_Char>");
piece_pack();
else
{
obstack_1grow (&obstack_for_string, c);
- flush_text();
+ stop_text();
sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", (int)c);
piece_append(piece_temp);
flush();
else
{
obstack_1grow (&obstack_for_string, c);
- flush_text();
+ stop_text();
sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", (int)c);
piece_append(piece_temp);
flush();
}
}
- \\a obstack_1grow (&obstack_for_string, '\a'); flush_text(); piece_append("<PYACC_Escape char=\"7\">"); flush(); piece_append("</PYACC_Escape>");
- \\b obstack_1grow (&obstack_for_string, '\b'); flush_text(); piece_append("<PYACC_Escape char=\"8\">"); flush(); piece_append("</PYACC_Escape>");
- \\f obstack_1grow (&obstack_for_string, '\f'); flush_text(); piece_append("<PYACC_Escape char=\"12\">"); flush(); piece_append("</PYACC_Escape>");
- \\n obstack_1grow (&obstack_for_string, '\n'); flush_text(); piece_append("<PYACC_Escape char=\"10\">"); flush(); piece_append("</PYACC_Escape>");
- \\r obstack_1grow (&obstack_for_string, '\r'); flush_text(); piece_append("<PYACC_Escape char=\"13\">"); flush(); piece_append("</PYACC_Escape>");
- \\t obstack_1grow (&obstack_for_string, '\t'); flush_text(); piece_append("<PYACC_Escape char=\"9\">"); flush(); piece_append("</PYACC_Escape>");
- \\v obstack_1grow (&obstack_for_string, '\v'); flush_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 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>");
/* \\[\"\'?\\] would be shorter, but it confuses xgettext. */
- \\("\""|"'"|"?"|"\\") obstack_1grow (&obstack_for_string, yytext[1]); flush_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 char=\"%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);
else
{
obstack_1grow (&obstack_for_string, c);
- flush_text();
sprintf(piece_temp, "<PYACC_Escape char=\"%d\">", c);
piece_append(piece_temp);
flush();
p = quotearg_style_mem (escape_quoting_style, p, 1);
complain (loc, complaint, _("invalid character after \\-escape: %s"),
p);
- if (in_text == 0) {
- piece_append("<PYACC_Text>");
- in_text = 1;
- }
}
}
context_state = YY_START;
token_start = loc->start;
BEGIN SC_CHARACTER;
+ start_text();
}
"\"" {
STRING_GROW;
context_state = YY_START;
token_start = loc->start;
BEGIN SC_STRING;
+ start_text();
}
"/"{splice}"*" {
STRING_GROW;
context_state = YY_START;
token_start = loc->start;
BEGIN SC_COMMENT;
+ start_text();
}
"/"{splice}"/" {
STRING_GROW;
context_state = YY_START;
BEGIN SC_LINE_COMMENT;
+ start_text();
}
}
<SC_BRACED_CODE,SC_PREDICATE>
{
- "{"|"<"{splice}"%" STRING_GROW; nesting++;
- "%"{splice}">" STRING_GROW; nesting--;
+ "{"|"<"{splice}"%" STRING_GROW; nesting++; start_text();
+ "%"{splice}">" STRING_GROW; nesting--; start_text();
/* Tokenize '<<%' correctly (as '<<' '%') rather than incorrrectly
(as '<' '<%'). */
- "<"{splice}"<" STRING_GROW;
+ "<"{splice}"<" STRING_GROW; start_text();
<<EOF>> unexpected_eof (code_start, "}");
}
val->code = last_string;
BEGIN INITIAL;
#if 1
- piece_append("</PYACC_Text>");
+ stop_text();
piece_esc(yytext, strlen(yytext));
piece_append("</PYACC_BracedCode>");
piece_pack();
val->code = last_string;
BEGIN INITIAL;
#if 1
- piece_append("</PYACC_Text>");
+ stop_text();
piece_esc(yytext, strlen(yytext));
piece_append("</PYACC_BracedPredicate>");
piece_pack();
val->code = last_string;
BEGIN INITIAL;
#if 1
- piece_append("</PYACC_Text>");
+ stop_text();
piece_esc(yytext, strlen(yytext));
piece_append("</PYACC_Section1_Prologue>");
piece_pack();
`-----------------------------------------------------*/
<SC_COMMENT,SC_LINE_COMMENT,SC_BRACED_CODE,SC_PREDICATE,SC_PROLOGUE,SC_EPILOGUE,SC_STRING,SC_CHARACTER,SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>. |
- <SC_COMMENT,SC_LINE_COMMENT,SC_BRACED_CODE,SC_PREDICATE,SC_PROLOGUE,SC_EPILOGUE>\n STRING_GROW;
+ <SC_COMMENT,SC_LINE_COMMENT,SC_BRACED_CODE,SC_PREDICATE,SC_PROLOGUE,SC_EPILOGUE>\n STRING_GROW; start_text();
+
%%
}
/* Nick */
-static void flush_text(void) {
+static void start_text(void) {
+ if (in_text == 0) {
+ piece_append("<PYACC_Text>");
+ in_text = 1;
+ }
+}
+
+static void stop_text(void) {
if (in_text) {
piece_append("</PYACC_Text>");
in_text = 0;