src/parse-gram.output
src/scan-code.c.orig
src/scan-gram.c.orig
+src/scan-skel.c.orig
src/yacc
tests/atconfig
tests/atlocal
#include "symlist.h"
#include "symtab.h"
-#line 227 "src/parse-gram.y" /* yacc.c:355 */
+#line 246 "src/parse-gram.y" /* yacc.c:355 */
typedef enum
{
param_parse = 1 << 1,
param_both = param_lex | param_parse
} param_type;
-#line 892 "src/parse-gram.y" /* yacc.c:355 */
+#line 911 "src/parse-gram.y" /* yacc.c:355 */
#include "muscle-tab.h"
#line 136 "src/parse-gram.c" /* yacc.c:355 */
union GRAM_STYPE
{
-#line 188 "src/parse-gram.y" /* yacc.c:355 */
+#line 207 "src/parse-gram.y" /* yacc.c:355 */
unsigned char character;
-#line 192 "src/parse-gram.y" /* yacc.c:355 */
+#line 211 "src/parse-gram.y" /* yacc.c:355 */
char *code;
-#line 197 "src/parse-gram.y" /* yacc.c:355 */
+#line 216 "src/parse-gram.y" /* yacc.c:355 */
uniqstr uniqstr;
-#line 205 "src/parse-gram.y" /* yacc.c:355 */
+#line 224 "src/parse-gram.y" /* yacc.c:355 */
int integer;
-#line 209 "src/parse-gram.y" /* yacc.c:355 */
+#line 228 "src/parse-gram.y" /* yacc.c:355 */
symbol *symbol;
-#line 214 "src/parse-gram.y" /* yacc.c:355 */
+#line 233 "src/parse-gram.y" /* yacc.c:355 */
assoc assoc;
-#line 217 "src/parse-gram.y" /* yacc.c:355 */
+#line 236 "src/parse-gram.y" /* yacc.c:355 */
symbol_list *list;
-#line 220 "src/parse-gram.y" /* yacc.c:355 */
+#line 239 "src/parse-gram.y" /* yacc.c:355 */
named_ref *named_ref;
-#line 247 "src/parse-gram.y" /* yacc.c:355 */
+#line 266 "src/parse-gram.y" /* yacc.c:355 */
param_type param;
-#line 534 "src/parse-gram.y" /* yacc.c:355 */
+#line 553 "src/parse-gram.y" /* yacc.c:355 */
code_props_type code_type;
-#line 894 "src/parse-gram.y" /* yacc.c:355 */
+#line 913 "src/parse-gram.y" /* yacc.c:355 */
struct
{
extern int code_piece0;
void code_piece_append(const char *str);
void code_piece_pack();
-#line 237 "src/parse-gram.y" /* yacc.c:359 */
+
+ extern char gram_piece_temp[], *gram_piece[];
+ extern int gram_piece0, gram_piece1;
+ int gram_piece2, gram_piece3;
+ void gram_piece_insert(int n, const void *str);
+
+ #define insert_before(n, str) \
+ do { \
+ gram_piece_insert(gram_piece2 + (n) * 2, (str)); \
+ ++gram_piece0; \
+ ++gram_piece3; \
+ } while (0)
+ #define insert_after(n, str) \
+ do { \
+ gram_piece_insert(gram_piece2 + (n) * 2 + 1, (str)); \
+ ++gram_piece0; \
+ ++gram_piece3; \
+ } while (0)
+
+#line 256 "src/parse-gram.y" /* yacc.c:359 */
/** Add a lex-param and/or a parse-param.
*
static void add_param (param_type type, char *decl, location loc);
static param_type current_param = param_none;
-#line 347 "src/parse-gram.c" /* yacc.c:359 */
+#line 366 "src/parse-gram.c" /* yacc.c:359 */
#ifdef short
# undef short
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 270, 270, 285, 296, 300, 301, 313, 319, 326,
- 330, 337, 345, 351, 357, 361, 368, 380, 384, 388,
- 392, 396, 400, 400, 404, 408, 434, 438, 442, 446,
- 450, 451, 460, 461, 462, 470, 492, 498, 504, 519,
- 537, 538, 548, 549, 555, 574, 574, 583, 583, 592,
- 607, 627, 628, 629, 630, 634, 635, 640, 642, 647,
- 654, 667, 672, 680, 681, 685, 689, 693, 694, 695,
- 700, 705, 718, 734, 748, 769, 770, 779, 780, 786,
- 787, 788, 795, 795, 808, 812, 816, 821, 833, 838,
- 847, 849, 854, 861, 868, 876, 877, 887, 888, 913,
- 914, 915, 916, 928, 930, 939, 944, 945, 950, 958,
- 959
+ 0, 289, 289, 304, 315, 319, 320, 332, 338, 345,
+ 349, 356, 364, 370, 376, 380, 387, 399, 403, 407,
+ 411, 415, 419, 419, 423, 427, 453, 457, 461, 465,
+ 469, 470, 479, 480, 481, 489, 511, 517, 523, 538,
+ 556, 557, 567, 568, 574, 593, 593, 602, 602, 611,
+ 626, 646, 647, 648, 649, 653, 654, 659, 661, 666,
+ 673, 686, 691, 699, 700, 704, 708, 712, 713, 714,
+ 719, 724, 737, 753, 767, 788, 789, 798, 799, 805,
+ 806, 807, 814, 814, 827, 831, 835, 840, 852, 857,
+ 866, 868, 873, 880, 887, 895, 896, 906, 907, 932,
+ 933, 934, 935, 947, 949, 958, 963, 964, 969, 977,
+ 978
};
#endif
switch (yytype)
{
case 3: /* "string" */
-#line 194 "src/parse-gram.y" /* yacc.c:684 */
+#line 213 "src/parse-gram.y" /* yacc.c:684 */
{ fputs (quotearg_style (c_quoting_style, ((*yyvaluep).code)), yyo); }
-#line 1014 "src/parse-gram.c" /* yacc.c:684 */
+#line 1033 "src/parse-gram.c" /* yacc.c:684 */
break;
case 23: /* "%<flag>" */
-#line 202 "src/parse-gram.y" /* yacc.c:684 */
+#line 221 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%%%s", ((*yyvaluep).uniqstr)); }
-#line 1020 "src/parse-gram.c" /* yacc.c:684 */
+#line 1039 "src/parse-gram.c" /* yacc.c:684 */
break;
case 39: /* "{...}" */
-#line 195 "src/parse-gram.y" /* yacc.c:684 */
+#line 214 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1026 "src/parse-gram.c" /* yacc.c:684 */
+#line 1045 "src/parse-gram.c" /* yacc.c:684 */
break;
case 40: /* "%?{...}" */
-#line 195 "src/parse-gram.y" /* yacc.c:684 */
+#line 214 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1032 "src/parse-gram.c" /* yacc.c:684 */
+#line 1051 "src/parse-gram.c" /* yacc.c:684 */
break;
case 41: /* "[identifier]" */
-#line 200 "src/parse-gram.y" /* yacc.c:684 */
+#line 219 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "[%s]", ((*yyvaluep).uniqstr)); }
-#line 1038 "src/parse-gram.c" /* yacc.c:684 */
+#line 1057 "src/parse-gram.c" /* yacc.c:684 */
break;
case 42: /* "char" */
-#line 190 "src/parse-gram.y" /* yacc.c:684 */
+#line 209 "src/parse-gram.y" /* yacc.c:684 */
{ fputs (char_name (((*yyvaluep).character)), yyo); }
-#line 1044 "src/parse-gram.c" /* yacc.c:684 */
+#line 1063 "src/parse-gram.c" /* yacc.c:684 */
break;
case 43: /* "epilogue" */
-#line 195 "src/parse-gram.y" /* yacc.c:684 */
+#line 214 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1050 "src/parse-gram.c" /* yacc.c:684 */
+#line 1069 "src/parse-gram.c" /* yacc.c:684 */
break;
case 45: /* "identifier" */
-#line 199 "src/parse-gram.y" /* yacc.c:684 */
+#line 218 "src/parse-gram.y" /* yacc.c:684 */
{ fputs (((*yyvaluep).uniqstr), yyo); }
-#line 1056 "src/parse-gram.c" /* yacc.c:684 */
+#line 1075 "src/parse-gram.c" /* yacc.c:684 */
break;
case 46: /* "identifier:" */
-#line 201 "src/parse-gram.y" /* yacc.c:684 */
+#line 220 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%s:", ((*yyvaluep).uniqstr)); }
-#line 1062 "src/parse-gram.c" /* yacc.c:684 */
+#line 1081 "src/parse-gram.c" /* yacc.c:684 */
break;
case 49: /* "%{...%}" */
-#line 195 "src/parse-gram.y" /* yacc.c:684 */
+#line 214 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1068 "src/parse-gram.c" /* yacc.c:684 */
+#line 1087 "src/parse-gram.c" /* yacc.c:684 */
break;
case 51: /* "<tag>" */
-#line 203 "src/parse-gram.y" /* yacc.c:684 */
+#line 222 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "<%s>", ((*yyvaluep).uniqstr)); }
-#line 1074 "src/parse-gram.c" /* yacc.c:684 */
+#line 1093 "src/parse-gram.c" /* yacc.c:684 */
break;
case 54: /* "integer" */
-#line 207 "src/parse-gram.y" /* yacc.c:684 */
+#line 226 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%d", ((*yyvaluep).integer)); }
-#line 1080 "src/parse-gram.c" /* yacc.c:684 */
+#line 1099 "src/parse-gram.c" /* yacc.c:684 */
break;
case 55: /* "%param" */
-#line 250 "src/parse-gram.y" /* yacc.c:684 */
+#line 269 "src/parse-gram.y" /* yacc.c:684 */
{
switch (((*yyvaluep).param))
{
case param_none: aver (false); break;
}
}
-#line 1097 "src/parse-gram.c" /* yacc.c:684 */
+#line 1116 "src/parse-gram.c" /* yacc.c:684 */
break;
case 65: /* code_props_type */
-#line 535 "src/parse-gram.y" /* yacc.c:684 */
+#line 554 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%s", code_props_type_string (((*yyvaluep).code_type))); }
-#line 1103 "src/parse-gram.c" /* yacc.c:684 */
+#line 1122 "src/parse-gram.c" /* yacc.c:684 */
break;
case 74: /* symbol.prec */
-#line 211 "src/parse-gram.y" /* yacc.c:684 */
+#line 230 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1109 "src/parse-gram.c" /* yacc.c:684 */
+#line 1128 "src/parse-gram.c" /* yacc.c:684 */
break;
case 78: /* tag */
-#line 203 "src/parse-gram.y" /* yacc.c:684 */
+#line 222 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "<%s>", ((*yyvaluep).uniqstr)); }
-#line 1115 "src/parse-gram.c" /* yacc.c:684 */
+#line 1134 "src/parse-gram.c" /* yacc.c:684 */
break;
case 88: /* variable */
-#line 199 "src/parse-gram.y" /* yacc.c:684 */
+#line 218 "src/parse-gram.y" /* yacc.c:684 */
{ fputs (((*yyvaluep).uniqstr), yyo); }
-#line 1121 "src/parse-gram.c" /* yacc.c:684 */
+#line 1140 "src/parse-gram.c" /* yacc.c:684 */
break;
case 89: /* value */
-#line 903 "src/parse-gram.y" /* yacc.c:684 */
+#line 922 "src/parse-gram.y" /* yacc.c:684 */
{
switch (((*yyvaluep).value).kind)
{
case muscle_string: fprintf (yyo, "\"%s\"", ((*yyvaluep).value).chars); break;
}
}
-#line 1134 "src/parse-gram.c" /* yacc.c:684 */
+#line 1153 "src/parse-gram.c" /* yacc.c:684 */
break;
case 90: /* id */
-#line 211 "src/parse-gram.y" /* yacc.c:684 */
+#line 230 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1140 "src/parse-gram.c" /* yacc.c:684 */
+#line 1159 "src/parse-gram.c" /* yacc.c:684 */
break;
case 91: /* id_colon */
-#line 212 "src/parse-gram.y" /* yacc.c:684 */
+#line 231 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%s:", ((*yyvaluep).symbol)->tag); }
-#line 1146 "src/parse-gram.c" /* yacc.c:684 */
+#line 1165 "src/parse-gram.c" /* yacc.c:684 */
break;
case 92: /* symbol */
-#line 211 "src/parse-gram.y" /* yacc.c:684 */
+#line 230 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1152 "src/parse-gram.c" /* yacc.c:684 */
+#line 1171 "src/parse-gram.c" /* yacc.c:684 */
break;
case 93: /* string_as_id */
-#line 211 "src/parse-gram.y" /* yacc.c:684 */
+#line 230 "src/parse-gram.y" /* yacc.c:684 */
{ fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1158 "src/parse-gram.c" /* yacc.c:684 */
+#line 1177 "src/parse-gram.c" /* yacc.c:684 */
break;
| yyparse. |
`----------*/
-extern char gram_piece_temp[];
-extern char *gram_piece[];
-extern int gram_piece0, gram_piece1;
-void gram_piece_append(const char *str);
-void gram_piece_insert(int n, const char *str);
-void gram_piece_esc(const char *p, size_t n);
-void gram_piece_pack();
-int gram_piece2, gram_piece3;
-static void peek(int *yychar_p, YYSTYPE *yylval_p, YYLTYPE *yylloc_p) {
- if (*yychar_p == YYEMPTY)
- *yychar_p = yylex(yylval_p, yylloc_p);
- memmove(gram_piece + gram_piece3 + 3, gram_piece + gram_piece3 + 1, (gram_piece1 - gram_piece3 - 1) * sizeof(char *));
- gram_piece[gram_piece3 + 1] = strdup("");
- gram_piece[gram_piece3 + 2] = strdup("");
- gram_piece3 += 2;
- gram_piece0 += 2;
- gram_piece1 += 2;
-}
-#define insert_before(n, str) \
- do { gram_piece_insert(gram_piece2 + (n) * 2, (str)); ++gram_piece0; ++gram_piece3; } while (0)
-#define insert_after(n, str) \
- do { gram_piece_insert(gram_piece2 + (n) * 2 + 1, (str)); ++gram_piece0; ++gram_piece3; } while (0)
int
yyparse (void)
{
yychar = YYEMPTY; /* Cause a token to be read. */
/* User initialization code. */
-#line 114 "src/parse-gram.y" /* yacc.c:1430 */
+#line 133 "src/parse-gram.y" /* yacc.c:1430 */
{
/* Bison's grammar can initial empty locations, hence a default
location is needed. */
boundary_set (&yylloc.end, current_file, 1, 1);
}
-#line 1861 "src/parse-gram.c" /* yacc.c:1430 */
+#line 1880 "src/parse-gram.c" /* yacc.c:1430 */
yylsp[0] = yylloc;
goto yysetstate;
switch (yyn)
{
case 2:
-#line 271 "src/parse-gram.y" /* yacc.c:1648 */
+#line 290 "src/parse-gram.y" /* yacc.c:1648 */
{
insert_after(2, "</PYACC_Section2>");
insert_before(2, "<PYACC_Section2>");
insert_after(0, "</PYACC_Section1>");
insert_before(0, "<PYACC_Section1>");
}
-#line 2063 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2082 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 3:
-#line 286 "src/parse-gram.y" /* yacc.c:1648 */
+#line 305 "src/parse-gram.y" /* yacc.c:1648 */
{
/* 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 */
gram_piece[gram_piece2] = gram_piece[gram_piece2 - 1]; /* empty */
gram_piece[gram_piece2 - 1] = temp;
}
-#line 2078 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2097 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 6:
-#line 302 "src/parse-gram.y" /* yacc.c:1648 */
+#line 321 "src/parse-gram.y" /* yacc.c:1648 */
{
/* inserting %{...%} below is a hack as we may lose some whitespace near it */
code_piece_append("<PYACC_Section1_Prologue>%{<PYACC_Text>");
free(gram_piece[gram_piece2]);
gram_piece[gram_piece2] = strdup(code_piece[code_piece0 - 1]);
}
-#line 2094 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2113 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 7:
-#line 314 "src/parse-gram.y" /* yacc.c:1648 */
+#line 333 "src/parse-gram.y" /* yacc.c:1648 */
{
muscle_percent_define_ensure ((yyvsp[0].uniqstr), (yylsp[0]), true);
insert_after(0, "</PYACC_Section1_Flag>");
insert_before(0, "<PYACC_Section1_Flag>");
}
-#line 2104 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2123 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 8:
-#line 320 "src/parse-gram.y" /* yacc.c:1648 */
+#line 339 "src/parse-gram.y" /* yacc.c:1648 */
{
muscle_percent_define_insert ((yyvsp[-1].uniqstr), (yylsp[-1]), (yyvsp[0].value).kind, (yyvsp[0].value).chars,
MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
insert_after(2, "</PYACC_Section1_Define>");
insert_before(0, "<PYACC_Section1_Define>");
}
-#line 2115 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2134 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 9:
-#line 326 "src/parse-gram.y" /* yacc.c:1648 */
+#line 345 "src/parse-gram.y" /* yacc.c:1648 */
{ defines_flag = true; /*}*/
insert_after(0, "</PYACC_Section1_Define>");
insert_before(0, "<PYACC_Section1_Define>");
}
-#line 2124 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2143 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 10:
-#line 331 "src/parse-gram.y" /* yacc.c:1648 */
+#line 350 "src/parse-gram.y" /* yacc.c:1648 */
{
defines_flag = true;
spec_defines_file = xstrdup ((yyvsp[0].code));
insert_after(1, "</PYACC_Section1_Define>");
insert_before(0, "<PYACC_Section1_Define>");
}
-#line 2135 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2154 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 11:
-#line 338 "src/parse-gram.y" /* yacc.c:1648 */
+#line 357 "src/parse-gram.y" /* yacc.c:1648 */
{
muscle_percent_define_insert ("parse.error", (yylsp[0]), muscle_keyword,
"verbose",
insert_after(0, "</PYACC_Section1_ErrorVerbose>");
insert_before(0, "<PYACC_Section1_ErrorVerbose>");
}
-#line 2147 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2166 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 12:
-#line 345 "src/parse-gram.y" /* yacc.c:1648 */
+#line 364 "src/parse-gram.y" /* yacc.c:1648 */
{ expected_sr_conflicts = (yyvsp[0].integer); /*}*/
insert_after(1, "</PYACC_Section1_Expect>");
insert_after(1, "</PYACC_Int>");
insert_before(1, "<PYACC_Int>");
insert_before(0, "<PYACC_Section1_Expect>");
}
-#line 2158 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2177 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 13:
-#line 351 "src/parse-gram.y" /* yacc.c:1648 */
+#line 370 "src/parse-gram.y" /* yacc.c:1648 */
{ expected_rr_conflicts = (yyvsp[0].integer); /*}*/
insert_after(1, "</PYACC_Section1_ExpectRR>");
insert_after(1, "</PYACC_Int>");
insert_before(1, "<PYACC_Int>");
insert_before(0, "<PYACC_Section1_ExpectRR>");
}
-#line 2169 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2188 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 14:
-#line 357 "src/parse-gram.y" /* yacc.c:1648 */
+#line 376 "src/parse-gram.y" /* yacc.c:1648 */
{ spec_file_prefix = (yyvsp[0].code); /*}*/
insert_after(1, "</PYACC_Section1_FilePrefix>");
insert_before(0, "<PYACC_Section1_FilePrefix>");
}
-#line 2178 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2197 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 15:
-#line 362 "src/parse-gram.y" /* yacc.c:1648 */
+#line 381 "src/parse-gram.y" /* yacc.c:1648 */
{
nondeterministic_parser = true;
glr_parser = true;
insert_after(0, "</PYACC_Section1_GLRParser>");
insert_before(0, "<PYACC_Section1_GLRParser>");
}
-#line 2189 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2208 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 16:
-#line 369 "src/parse-gram.y" /* yacc.c:1648 */
+#line 388 "src/parse-gram.y" /* yacc.c:1648 */
{
code_piece_append("<PYACC_BracedCode>");
muscle_code_grow ("initial_action", translate_code ((yyvsp[0].code), (yylsp[0]), false), (yylsp[0]));
insert_after(1, "</PYACC_Section1_InitialAction>");
insert_before(0, "<PYACC_Section1_InitialAction>");
}
-#line 2205 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2224 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 17:
-#line 380 "src/parse-gram.y" /* yacc.c:1648 */
+#line 399 "src/parse-gram.y" /* yacc.c:1648 */
{ language_argmatch ((yyvsp[0].code), grammar_prio, (yylsp[-1])); /*}*/
insert_after(1, "</PYACC_Section1_Language>");
insert_before(0, "<PYACC_Section1_Language>");
}
-#line 2214 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2233 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 18:
-#line 384 "src/parse-gram.y" /* yacc.c:1648 */
+#line 403 "src/parse-gram.y" /* yacc.c:1648 */
{ spec_name_prefix = (yyvsp[0].code); /*}*/
insert_after(1, "</PYACC_Section1_NamePrefix>");
insert_before(0, "<PYACC_Section1_NamePrefix>");
}
-#line 2223 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2242 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 19:
-#line 388 "src/parse-gram.y" /* yacc.c:1648 */
+#line 407 "src/parse-gram.y" /* yacc.c:1648 */
{ no_lines_flag = true; /*}*/
insert_after(0, "</PYACC_Section1_Lines>");
insert_before(0, "<PYACC_Section1_Lines value=\"false\">");
}
-#line 2232 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2251 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 20:
-#line 392 "src/parse-gram.y" /* yacc.c:1648 */
+#line 411 "src/parse-gram.y" /* yacc.c:1648 */
{ nondeterministic_parser = true; /*}*/
insert_after(0, "</PYACC_Section1_NonDeterministicParser>");
insert_before(0, "<PYACC_Section1_NonDeterministicParser>");
}
-#line 2241 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2260 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 21:
-#line 396 "src/parse-gram.y" /* yacc.c:1648 */
+#line 415 "src/parse-gram.y" /* yacc.c:1648 */
{ spec_outfile = (yyvsp[0].code); /*}*/
insert_after(1, "</PYACC_Section1_Output>");
insert_before(0, "<PYACC_Section1_Output>");
}
-#line 2250 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2269 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 22:
-#line 400 "src/parse-gram.y" /* yacc.c:1648 */
+#line 419 "src/parse-gram.y" /* yacc.c:1648 */
{ current_param = (yyvsp[0].param); }
-#line 2256 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2275 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 23:
-#line 400 "src/parse-gram.y" /* yacc.c:1648 */
+#line 419 "src/parse-gram.y" /* yacc.c:1648 */
{ current_param = param_none; /*}*/
insert_after(2, "</PYACC_Section1_Param>");
insert_before(0, "<PYACC_Section1_Param>");
}
-#line 2265 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2284 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 24:
-#line 404 "src/parse-gram.y" /* yacc.c:1648 */
+#line 423 "src/parse-gram.y" /* yacc.c:1648 */
{ version_check (&(yylsp[0]), (yyvsp[0].code)); /*}*/
insert_after(1, "</PYACC_Section1_Require>");
insert_before(0, "<PYACC_Section1_Require>");
}
-#line 2274 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2293 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 25:
-#line 409 "src/parse-gram.y" /* yacc.c:1648 */
+#line 428 "src/parse-gram.y" /* yacc.c:1648 */
{
char const *skeleton_user = (yyvsp[0].code);
if (strchr (skeleton_user, '/'))
insert_after(1, "</PYACC_Section1_Skeleton>");
insert_before(0, "<PYACC_Section1_Skeleton>");
}
-#line 2304 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2323 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 26:
-#line 434 "src/parse-gram.y" /* yacc.c:1648 */
+#line 453 "src/parse-gram.y" /* yacc.c:1648 */
{ token_table_flag = true; /*}*/
insert_after(0, "</PYACC_Section1_TokenTable>");
insert_before(0, "<PYACC_Section1_TokenTable>");
}
-#line 2313 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2332 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 27:
-#line 438 "src/parse-gram.y" /* yacc.c:1648 */
+#line 457 "src/parse-gram.y" /* yacc.c:1648 */
{ report_flag |= report_states; /*}*/
insert_after(0, "</PYACC_Section1_Verbose>");
insert_before(0, "<PYACC_Section1_Verbose>");
}
-#line 2322 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2341 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 28:
-#line 442 "src/parse-gram.y" /* yacc.c:1648 */
+#line 461 "src/parse-gram.y" /* yacc.c:1648 */
{ yacc_flag = true; /*}*/
insert_after(0, "</PYACC_Section1_YACC>");
insert_before(0, "<PYACC_Section1_YACC>");
}
-#line 2331 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2350 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 30:
-#line 450 "src/parse-gram.y" /* yacc.c:1648 */
+#line 469 "src/parse-gram.y" /* yacc.c:1648 */
{ add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2337 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2356 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 31:
-#line 451 "src/parse-gram.y" /* yacc.c:1648 */
+#line 470 "src/parse-gram.y" /* yacc.c:1648 */
{ add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2343 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2362 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 34:
-#line 463 "src/parse-gram.y" /* yacc.c:1648 */
+#line 482 "src/parse-gram.y" /* yacc.c:1648 */
{
grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
insert_after(1, "</PYACC_Section1Or2_Start>");
insert_before(1, "<PYACC_NonterminalRef>");
insert_before(0, "<PYACC_Section1Or2_Start>");
}
-#line 2355 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2374 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 35:
-#line 471 "src/parse-gram.y" /* yacc.c:1648 */
+#line 490 "src/parse-gram.y" /* yacc.c:1648 */
{
code_props code;
code_props_symbol_action_init (&code, (yyvsp[-1].code), (yylsp[-1]));
sprintf(gram_piece_temp, "<PYACC_Section1Or2_CodeProps type=\"%d\">", (yyvsp[-2].code_type));
insert_before(0, gram_piece_temp);
}
-#line 2381 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2400 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 36:
-#line 493 "src/parse-gram.y" /* yacc.c:1648 */
+#line 512 "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 2391 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2410 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 37:
-#line 499 "src/parse-gram.y" /* yacc.c:1648 */
+#line 518 "src/parse-gram.y" /* yacc.c:1648 */
{
default_prec = false;
insert_after(0, "</PYACC_Section1Or2_DefaultPrec>");
insert_before(0, "<PYACC_Section1Or2_DefaultPrec>");
}
-#line 2401 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2420 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 38:
-#line 505 "src/parse-gram.y" /* yacc.c:1648 */
+#line 524 "src/parse-gram.y" /* yacc.c:1648 */
{
/* Do not invoke muscle_percent_code_grow here since it invokes
muscle_user_name_list_grow. */
insert_after(1, "</PYACC_Section1Or2_Code>");
insert_before(0, "<PYACC_Section1Or2_Code><PYACC_ID />");
}
-#line 2420 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2439 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 39:
-#line 520 "src/parse-gram.y" /* yacc.c:1648 */
+#line 539 "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]));
insert_after(2, "</PYACC_Section1Or2_Code>");
insert_before(0, "<PYACC_Section1Or2_Code>");
}
-#line 2436 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2455 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 40:
-#line 537 "src/parse-gram.y" /* yacc.c:1648 */
+#line 556 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.code_type) = destructor; }
-#line 2442 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2461 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 41:
-#line 538 "src/parse-gram.y" /* yacc.c:1648 */
+#line 557 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.code_type) = printer; }
-#line 2448 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2467 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 42:
-#line 548 "src/parse-gram.y" /* yacc.c:1648 */
+#line 567 "src/parse-gram.y" /* yacc.c:1648 */
{ insert_before(0, "<PYACC_ID />"); }
-#line 2454 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2473 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 43:
-#line 549 "src/parse-gram.y" /* yacc.c:1648 */
+#line 568 "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 2462 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2481 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 44:
-#line 556 "src/parse-gram.y" /* yacc.c:1648 */
+#line 575 "src/parse-gram.y" /* yacc.c:1648 */
{
union_seen = true;
code_piece_append("<PYACC_BracedCode>{");
insert_after(2, "</PYACC_Section1Or2_Union>");
insert_before(0, "<PYACC_Section1Or2_Union>");
}
-#line 2479 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2498 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 45:
-#line 574 "src/parse-gram.y" /* yacc.c:1648 */
+#line 593 "src/parse-gram.y" /* yacc.c:1648 */
{ current_class = nterm_sym; }
-#line 2485 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2504 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 46:
-#line 575 "src/parse-gram.y" /* yacc.c:1648 */
+#line 594 "src/parse-gram.y" /* yacc.c:1648 */
{
current_class = unknown_sym;
current_type = NULL;
insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
insert_before(0, "<PYACC_Section1Or2_NTerm>");
}
-#line 2498 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2517 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 47:
-#line 583 "src/parse-gram.y" /* yacc.c:1648 */
+#line 602 "src/parse-gram.y" /* yacc.c:1648 */
{ current_class = token_sym; }
-#line 2504 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2523 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 48:
-#line 584 "src/parse-gram.y" /* yacc.c:1648 */
+#line 603 "src/parse-gram.y" /* yacc.c:1648 */
{
current_class = unknown_sym;
current_type = NULL;
insert_before(2, "<PYACC_Section1Or2_TaggedSymbols>");
insert_before(0, "<PYACC_Section1Or2_Token>");
}
-#line 2517 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2536 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 49:
-#line 593 "src/parse-gram.y" /* yacc.c:1648 */
+#line 612 "src/parse-gram.y" /* yacc.c:1648 */
{
symbol_list *list;
tag_seen = true;
insert_before(1, "<PYACC_Section1Or2_TaggedSymbols>");
insert_before(0, "<PYACC_Section1Or2_Type>");
}
-#line 2533 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2552 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 50:
-#line 608 "src/parse-gram.y" /* yacc.c:1648 */
+#line 627 "src/parse-gram.y" /* yacc.c:1648 */
{
symbol_list *list;
++current_prec;
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 2554 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2573 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 51:
-#line 627 "src/parse-gram.y" /* yacc.c:1648 */
+#line 646 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.assoc) = left_assoc; }
-#line 2560 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2579 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 52:
-#line 628 "src/parse-gram.y" /* yacc.c:1648 */
+#line 647 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.assoc) = right_assoc; }
-#line 2566 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2585 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 53:
-#line 629 "src/parse-gram.y" /* yacc.c:1648 */
+#line 648 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.assoc) = non_assoc; }
-#line 2572 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2591 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 54:
-#line 630 "src/parse-gram.y" /* yacc.c:1648 */
+#line 649 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.assoc) = precedence_assoc; }
-#line 2578 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2597 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 55:
-#line 634 "src/parse-gram.y" /* yacc.c:1648 */
+#line 653 "src/parse-gram.y" /* yacc.c:1648 */
{ current_type = NULL; }
-#line 2584 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2603 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 56:
-#line 635 "src/parse-gram.y" /* yacc.c:1648 */
+#line 654 "src/parse-gram.y" /* yacc.c:1648 */
{ current_type = (yyvsp[0].uniqstr); tag_seen = true; }
-#line 2590 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2609 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 57:
-#line 641 "src/parse-gram.y" /* yacc.c:1648 */
+#line 660 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
-#line 2596 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2615 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 58:
-#line 643 "src/parse-gram.y" /* yacc.c:1648 */
+#line 662 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = symbol_list_append ((yyvsp[-1].list), symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0]))); }
-#line 2602 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2621 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 59:
-#line 648 "src/parse-gram.y" /* yacc.c:1648 */
+#line 667 "src/parse-gram.y" /* yacc.c:1648 */
{
(yyval.symbol) = (yyvsp[0].symbol);
symbol_class_set ((yyvsp[0].symbol), token_sym, (yylsp[0]), false);
insert_after(0, "</PYACC_TerminalRef>");
insert_before(0, "<PYACC_TerminalRef>");
}
-#line 2613 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2632 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 60:
-#line 655 "src/parse-gram.y" /* yacc.c:1648 */
+#line 674 "src/parse-gram.y" /* yacc.c:1648 */
{
(yyval.symbol) = (yyvsp[-1].symbol);
symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
sprintf(gram_piece_temp, "<PYACC_TerminalRef user_token=\"%d\">", (yyvsp[0].integer));
insert_before(0, gram_piece_temp);
}
-#line 2626 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2645 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 61:
-#line 668 "src/parse-gram.y" /* yacc.c:1648 */
+#line 687 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); /*}*/
insert_after(0, "</PYACC_TerminalRef>");
insert_before(0, "<PYACC_TerminalRef>");
}
-#line 2635 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2654 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 62:
-#line 673 "src/parse-gram.y" /* yacc.c:1648 */
+#line 692 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = symbol_list_append ((yyvsp[-1].list), symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0]))); /*}*/
insert_after(1, "</PYACC_TerminalRef>");
insert_before(1, "<PYACC_TerminalRef>");
}
-#line 2644 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2663 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 63:
-#line 680 "src/parse-gram.y" /* yacc.c:1648 */
+#line 699 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = (yyvsp[0].list); }
-#line 2650 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2669 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 64:
-#line 681 "src/parse-gram.y" /* yacc.c:1648 */
+#line 700 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = symbol_list_append ((yyvsp[-1].list), (yyvsp[0].list)); }
-#line 2656 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2675 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 65:
-#line 685 "src/parse-gram.y" /* yacc.c:1648 */
+#line 704 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); /*}*/
insert_after(0, "</PYACC_TerminalRef>");
insert_before(0, "<PYACC_TerminalRef>");
}
-#line 2665 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2684 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 66:
-#line 689 "src/parse-gram.y" /* yacc.c:1648 */
+#line 708 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.list) = symbol_list_type_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2671 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2690 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 68:
-#line 694 "src/parse-gram.y" /* yacc.c:1648 */
+#line 713 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.uniqstr) = uniqstr_new ("*"); }
-#line 2677 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2696 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 69:
-#line 695 "src/parse-gram.y" /* yacc.c:1648 */
+#line 714 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.uniqstr) = uniqstr_new (""); }
-#line 2683 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2702 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 70:
-#line 701 "src/parse-gram.y" /* yacc.c:1648 */
+#line 720 "src/parse-gram.y" /* yacc.c:1648 */
{
current_type = (yyvsp[0].uniqstr);
tag_seen = true;
}
-#line 2692 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2711 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 71:
-#line 706 "src/parse-gram.y" /* yacc.c:1648 */
+#line 725 "src/parse-gram.y" /* yacc.c:1648 */
{
symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]), true);
symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
insert_before(0, "<PYACC_TerminalRef>");
}
}
-#line 2709 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2728 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 72:
-#line 719 "src/parse-gram.y" /* yacc.c:1648 */
+#line 738 "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]));
insert_before(0, gram_piece_temp);
}
}
-#line 2729 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2748 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 73:
-#line 735 "src/parse-gram.y" /* yacc.c:1648 */
+#line 754 "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]));
insert_before(0, "<PYACC_TerminalRef>");
}
}
-#line 2747 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2766 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 74:
-#line 749 "src/parse-gram.y" /* yacc.c:1648 */
+#line 768 "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]));
insert_before(0, gram_piece_temp);
}
}
-#line 2768 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2787 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 81:
-#line 789 "src/parse-gram.y" /* yacc.c:1648 */
+#line 808 "src/parse-gram.y" /* yacc.c:1648 */
{
yyerrok;
}
-#line 2776 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2795 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 82:
-#line 795 "src/parse-gram.y" /* yacc.c:1648 */
+#line 814 "src/parse-gram.y" /* yacc.c:1648 */
{ current_lhs ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); }
-#line 2782 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2801 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 83:
-#line 796 "src/parse-gram.y" /* yacc.c:1648 */
+#line 815 "src/parse-gram.y" /* yacc.c:1648 */
{
/* Free the current lhs. */
current_lhs (0, (yylsp[-3]), 0);
insert_before(0, "<PYACC_NonterminalRef>");
insert_before(0, "<PYACC_Section2_Rules>");
}
-#line 2796 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2815 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 84:
-#line 808 "src/parse-gram.y" /* yacc.c:1648 */
+#line 827 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_end ((yylsp[0])); /*}*/
insert_after(0, "</PYACC_Production>");
insert_before(0, "<PYACC_Production>");
}
-#line 2805 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2824 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 85:
-#line 812 "src/parse-gram.y" /* yacc.c:1648 */
+#line 831 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_end ((yylsp[0])); /*}*/
insert_after(2, "</PYACC_Production>");
insert_before(2, "<PYACC_Production>");
}
-#line 2814 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2833 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 87:
-#line 822 "src/parse-gram.y" /* yacc.c:1648 */
+#line 841 "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 */
gram_piece[gram_piece2] = gram_piece[gram_piece2 - 1]; /* empty */
gram_piece[gram_piece2 - 1] = temp;
}
-#line 2830 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2849 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 88:
-#line 834 "src/parse-gram.y" /* yacc.c:1648 */
+#line 853 "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 2839 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2858 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 89:
-#line 839 "src/parse-gram.y" /* yacc.c:1648 */
+#line 858 "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();
insert_after(2, "</PYACC_Production_Action>");
insert_before(1, "<PYACC_Production_Action>");
}
-#line 2852 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2871 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 90:
-#line 848 "src/parse-gram.y" /* yacc.c:1648 */
+#line 867 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
-#line 2858 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2877 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 91:
-#line 850 "src/parse-gram.y" /* yacc.c:1648 */
+#line 869 "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 2867 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2886 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 92:
-#line 855 "src/parse-gram.y" /* yacc.c:1648 */
+#line 874 "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_before(1, "<PYACC_Production_Prec>");
}
-#line 2878 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2897 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 93:
-#line 862 "src/parse-gram.y" /* yacc.c:1648 */
+#line 881 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); /*}*/
insert_after(2, "</PYACC_Production_DPrec>");
insert_after(2, "</PYACC_Int>");
insert_before(2, "<PYACC_Int>");
insert_before(1, "<PYACC_Production_DPrec>");
}
-#line 2889 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2908 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 94:
-#line 869 "src/parse-gram.y" /* yacc.c:1648 */
+#line 888 "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 2898 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2917 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 95:
-#line 876 "src/parse-gram.y" /* yacc.c:1648 */
+#line 895 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.named_ref) = 0; }
-#line 2904 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2923 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 96:
-#line 877 "src/parse-gram.y" /* yacc.c:1648 */
+#line 896 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.named_ref) = named_ref_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2910 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2929 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 98:
-#line 888 "src/parse-gram.y" /* yacc.c:1648 */
+#line 907 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.uniqstr) = uniqstr_new ((yyvsp[0].code)); }
-#line 2916 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2935 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 99:
-#line 913 "src/parse-gram.y" /* yacc.c:1648 */
+#line 932 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_keyword; (yyval.value).chars = ""; }
-#line 2922 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2941 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 100:
-#line 914 "src/parse-gram.y" /* yacc.c:1648 */
+#line 933 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_keyword; (yyval.value).chars = (yyvsp[0].uniqstr); }
-#line 2928 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2947 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 101:
-#line 915 "src/parse-gram.y" /* yacc.c:1648 */
+#line 934 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_string; (yyval.value).chars = (yyvsp[0].code); }
-#line 2934 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2953 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 102:
-#line 916 "src/parse-gram.y" /* yacc.c:1648 */
+#line 935 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.value).kind = muscle_code; (yyval.value).chars = strip_braces ((yyvsp[0].code)); }
-#line 2940 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2959 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 103:
-#line 929 "src/parse-gram.y" /* yacc.c:1648 */
+#line 948 "src/parse-gram.y" /* yacc.c:1648 */
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2946 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2965 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 104:
-#line 931 "src/parse-gram.y" /* yacc.c:1648 */
+#line 950 "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 2956 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2975 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 105:
-#line 939 "src/parse-gram.y" /* yacc.c:1648 */
+#line 958 "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 2981 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 108:
-#line 951 "src/parse-gram.y" /* yacc.c:1648 */
+#line 970 "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 2971 "src/parse-gram.c" /* yacc.c:1648 */
+#line 2990 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 110:
-#line 960 "src/parse-gram.y" /* yacc.c:1648 */
+#line 979 "src/parse-gram.y" /* yacc.c:1648 */
{
#if 0
int gram_piece0_save = gram_piece0, gram_piece1_save = gram_piece1;
insert_after(1, "</PYACC_Section3>");
insert_after(0, "<PYACC_Section3>");
}
-#line 2996 "src/parse-gram.c" /* yacc.c:1648 */
+#line 3015 "src/parse-gram.c" /* yacc.c:1648 */
break;
-#line 3000 "src/parse-gram.c" /* yacc.c:1648 */
+#line 3019 "src/parse-gram.c" /* yacc.c:1648 */
default: break;
}
if (yychar_backup != yychar)
#endif
return yyresult;
}
-#line 982 "src/parse-gram.y" /* yacc.c:1907 */
+#line 1001 "src/parse-gram.y" /* yacc.c:1907 */
/* Return the location of the left-hand side of a rule whose
--- parse-gram.c.orig 2018-07-03 16:27:55.712903479 +1000
+++ parse-gram.c 2018-07-06 09:54:49.562630748 +1000
-@@ -1742,6 +1742,28 @@
- | yyparse. |
- `----------*/
-
-+extern char gram_piece_temp[];
-+extern char *gram_piece[];
-+extern int gram_piece0, gram_piece1;
-+void gram_piece_append(const char *str);
-+void gram_piece_insert(int n, const char *str);
-+void gram_piece_esc(const char *p, size_t n);
-+void gram_piece_pack();
-+int gram_piece2, gram_piece3;
-+static void peek(int *yychar_p, YYSTYPE *yylval_p, YYLTYPE *yylloc_p) {
-+ if (*yychar_p == YYEMPTY)
-+ *yychar_p = yylex(yylval_p, yylloc_p);
-+ memmove(gram_piece + gram_piece3 + 3, gram_piece + gram_piece3 + 1, (gram_piece1 - gram_piece3 - 1) * sizeof(char *));
-+ gram_piece[gram_piece3 + 1] = strdup("");
-+ gram_piece[gram_piece3 + 2] = strdup("");
-+ gram_piece3 += 2;
-+ gram_piece0 += 2;
-+ gram_piece1 += 2;
-+}
-+#define insert_before(n, str) \
-+ do { gram_piece_insert(gram_piece2 + (n) * 2, (str)); ++gram_piece0; ++gram_piece3; } while (0)
-+#define insert_after(n, str) \
-+ do { gram_piece_insert(gram_piece2 + (n) * 2 + 1, (str)); ++gram_piece0; ++gram_piece3; } while (0)
- int
- yyparse (void)
- {
@@ -2026,6 +2048,17 @@
yyreduce:
/* yyn is the number of a rule to reduce with. */
#include "symlist.h"
#include "symtab.h"
-#line 227 "src/parse-gram.y" /* yacc.c:1910 */
+#line 246 "src/parse-gram.y" /* yacc.c:1910 */
typedef enum
{
param_parse = 1 << 1,
param_both = param_lex | param_parse
} param_type;
-#line 892 "src/parse-gram.y" /* yacc.c:1910 */
+#line 911 "src/parse-gram.y" /* yacc.c:1910 */
#include "muscle-tab.h"
#line 68 "src/parse-gram.h" /* yacc.c:1910 */
union GRAM_STYPE
{
-#line 188 "src/parse-gram.y" /* yacc.c:1910 */
+#line 207 "src/parse-gram.y" /* yacc.c:1910 */
unsigned char character;
-#line 192 "src/parse-gram.y" /* yacc.c:1910 */
+#line 211 "src/parse-gram.y" /* yacc.c:1910 */
char *code;
-#line 197 "src/parse-gram.y" /* yacc.c:1910 */
+#line 216 "src/parse-gram.y" /* yacc.c:1910 */
uniqstr uniqstr;
-#line 205 "src/parse-gram.y" /* yacc.c:1910 */
+#line 224 "src/parse-gram.y" /* yacc.c:1910 */
int integer;
-#line 209 "src/parse-gram.y" /* yacc.c:1910 */
+#line 228 "src/parse-gram.y" /* yacc.c:1910 */
symbol *symbol;
-#line 214 "src/parse-gram.y" /* yacc.c:1910 */
+#line 233 "src/parse-gram.y" /* yacc.c:1910 */
assoc assoc;
-#line 217 "src/parse-gram.y" /* yacc.c:1910 */
+#line 236 "src/parse-gram.y" /* yacc.c:1910 */
symbol_list *list;
-#line 220 "src/parse-gram.y" /* yacc.c:1910 */
+#line 239 "src/parse-gram.y" /* yacc.c:1910 */
named_ref *named_ref;
-#line 247 "src/parse-gram.y" /* yacc.c:1910 */
+#line 266 "src/parse-gram.y" /* yacc.c:1910 */
param_type param;
-#line 534 "src/parse-gram.y" /* yacc.c:1910 */
+#line 553 "src/parse-gram.y" /* yacc.c:1910 */
code_props_type code_type;
-#line 894 "src/parse-gram.y" /* yacc.c:1910 */
+#line 913 "src/parse-gram.y" /* yacc.c:1910 */
struct
{
extern int code_piece0;
void code_piece_append(const char *str);
void code_piece_pack();
+
+ extern char gram_piece_temp[], *gram_piece[];
+ extern int gram_piece0, gram_piece1;
+ int gram_piece2, gram_piece3;
+ void gram_piece_insert(int n, const void *str);
+
+ #define insert_before(n, str) \
+ do { \
+ gram_piece_insert(gram_piece2 + (n) * 2, (str)); \
+ ++gram_piece0; \
+ ++gram_piece3; \
+ } while (0)
+ #define insert_after(n, str) \
+ do { \
+ gram_piece_insert(gram_piece2 + (n) * 2 + 1, (str)); \
+ ++gram_piece0; \
+ ++gram_piece3; \
+ } while (0)
+
}
%define api.prefix {gram_}
/* %endif */
/* end standard C headers. */
-char code_piece_temp[100];
-char *code_piece[10000];
-int code_piece0, code_piece1;
-void code_piece_append(const char *str) {
- code_piece[code_piece1++] = strdup(str);
-}
-void code_piece_insert(int n, const char *str) {
- memmove(code_piece + n + 1, code_piece + n, (code_piece1 - n) * sizeof(char *));
- code_piece[n] = strdup(str);
- ++code_piece1;
-}
-void code_piece_esc(const char *p, size_t n) {
- size_t i, j = 0;
- for (i = 0; i < n; ++i)
- switch (p[i]) {
- case '<':
- case '>':
- j += 4;
- break;
- case '&':
- j += 5;
- break;
- default:
- ++j;
- break;
- }
- char *q = malloc(j + 1);
- j = 0;
- for (i = 0; i < n; ++i)
- switch (p[i]) {
- case '<':
- memcpy(q + j, "<", 4);
- j += 4;
- break;
- case '>':
- memcpy(q + j, ">", 4);
- j += 4;
- break;
- case '&':
- memcpy(q + j, "&", 5);
- j += 5;
- break;
- default:
- q[j++] = p[i];
- break;
- }
- q[j] = 0;
- code_piece[code_piece1++] = q;
-}
-void code_piece_pack() {
- int i;
- size_t j = 0;
- for (i = code_piece0; i < code_piece1; ++i)
- j += strlen(code_piece[i]);
- char *q = malloc(j + 1);
- j = 0;
- for (i = code_piece0; i < code_piece1; ++i) {
- int k = strlen(code_piece[i]);
- memcpy(q + j, code_piece[i], k);
- free(code_piece[i]);
- j += k;
- }
- q[j] = 0;
- code_piece[code_piece0++] = q;
- code_piece1 = code_piece0;
-}
-
/* %if-c-or-c++ */
/* flex integer type definitions */
while ( 0 )
#if 1
-#define flush() \
- do { \
- code_piece_esc(yytext, yy_c_buf_p - yytext); \
- yytext = yy_c_buf_p; \
- } while (0)
#define unput(c) \
do { \
- code_piece_esc(yytext, yy_c_buf_p - yytext); \
+ code_piece_escape(yytext, yy_c_buf_p - yytext); \
yyunput(c, (yytext_ptr)); \
yytext = yy_c_buf_p; \
} while (0)
static yyconst flex_int16_t yy_rule_linenum[18] =
{ 0,
- 117, 127, 128, 138, 143, 148, 154, 155, 156, 157,
- 159, 167, 174, 185, 202, 215, 218
+ 125, 135, 136, 146, 151, 156, 162, 163, 164, 165,
+ 167, 175, 181, 191, 209, 222, 225
} ;
/* The intent behind this definition is that it'll catch
static bool untyped_var_seen;
/* Nick */
+char code_piece_temp[100], *code_piece[10000];
+int code_piece0, code_piece1;
+
+void code_piece_append(const char *str);
+void code_piece_escape(const char *p, size_t n);
+void code_piece_flush(size_t n);
+void code_piece_pack();
+
int no_handle_action;
/* C and C++ comments in code. */
/* C style identifier. Must start with letter. Will be used for
named symbol references. Shall be kept synchronized with
scan-gram.l "letter" and "id". */
-#line 724 "src/scan-code.c"
+#line 732 "src/scan-code.c"
#define INITIAL 0
#define SC_COMMENT 1
register int yy_act;
/* %% [7.0] user's declarations go here */
-#line 99 "src/scan-code.l"
+#line 107 "src/scan-code.l"
| Scanning a C comment. The initial '/ *' is already eaten. |
`------------------------------------------------------------*/
-#line 992 "src/scan-code.c"
+#line 1000 "src/scan-code.c"
if ( !(yy_init) )
{
#if 1
/* we do this so that "continue;" in an action works correctly */
- for (; ; code_piece_esc(yytext, yy_c_buf_p - yytext))
+ for (; ; code_piece_escape(yytext, yy_c_buf_p - yytext))
#else
while ( 1 ) /* loops until end-of-file is reached */
#endif
case 1:
/* rule 1 can match eol */
YY_RULE_SETUP
-#line 117 "src/scan-code.l"
+#line 125 "src/scan-code.l"
STRING_GROW; BEGIN sc_context;
YY_BREAK
case 2:
/* rule 2 can match eol */
YY_RULE_SETUP
-#line 127 "src/scan-code.l"
+#line 135 "src/scan-code.l"
STRING_GROW; BEGIN sc_context;
YY_BREAK
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
-#line 128 "src/scan-code.l"
+#line 136 "src/scan-code.l"
STRING_GROW;
YY_BREAK
case 4:
/* rule 4 can match eol */
YY_RULE_SETUP
-#line 138 "src/scan-code.l"
+#line 146 "src/scan-code.l"
STRING_GROW;
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 143 "src/scan-code.l"
+#line 151 "src/scan-code.l"
STRING_GROW; BEGIN sc_context;
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 148 "src/scan-code.l"
+#line 156 "src/scan-code.l"
STRING_GROW; BEGIN sc_context;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 154 "src/scan-code.l"
+#line 162 "src/scan-code.l"
STRING_GROW; BEGIN SC_CHARACTER;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 155 "src/scan-code.l"
+#line 163 "src/scan-code.l"
STRING_GROW; BEGIN SC_STRING;
YY_BREAK
case 9:
/* rule 9 can match eol */
YY_RULE_SETUP
-#line 156 "src/scan-code.l"
+#line 164 "src/scan-code.l"
STRING_GROW; BEGIN SC_COMMENT;
YY_BREAK
case 10:
/* rule 10 can match eol */
YY_RULE_SETUP
-#line 157 "src/scan-code.l"
+#line 165 "src/scan-code.l"
STRING_GROW; BEGIN SC_LINE_COMMENT;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 159 "src/scan-code.l"
+#line 167 "src/scan-code.l"
{
complain (loc, Wother, _("stray '%s'"), code_text);
obstack_escape (&obstack_for_string, code_text);
case 12:
YY_RULE_SETUP
-#line 167 "src/scan-code.l"
+#line 175 "src/scan-code.l"
{
ref_tail_fields = NULL;
handle_action_dollar (self->rule, code_text, *loc);
- code_text = yy_c_buf_p;
if (ref_tail_fields)
obstack_sgrow (&obstack_for_string, ref_tail_fields);
}
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 174 "src/scan-code.l"
+#line 181 "src/scan-code.l"
{
ref_tail_fields = NULL;
handle_action_at (self->rule, code_text, *loc);
- code_text = yy_c_buf_p;
if (ref_tail_fields)
obstack_sgrow (&obstack_for_string, ref_tail_fields);
}
case 14:
YY_RULE_SETUP
-#line 185 "src/scan-code.l"
+#line 191 "src/scan-code.l"
{
int i = sprintf(code_piece_temp, "<PYACC_Text_ValueReference tag_name=\"");
int j = i + sprintf(code_piece_temp + i, "%s", code_text + 2);
;
sprintf(code_piece_temp + j, "\">");
code_piece_append(code_piece_temp);
- code_piece_esc(code_text, strlen(code_text));
+ i = strlen(code_text);
+ code_piece_escape(code_text, i);
code_piece_append("</PYACC_Text_ValueReference>");
const char *type_name = NULL;
fetch_type_name (code_text + 1, &type_name, *loc)[-1] = 0;
obstack_quote (&obstack_for_string, type_name);
obstack_sgrow (&obstack_for_string, ")[");
self->is_value_used = true;
- code_text = yy_c_buf_p;
+ code_text += i;
}
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 202 "src/scan-code.l"
+#line 209 "src/scan-code.l"
{
obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
muscle_percent_define_ensure("locations", the_location, true);
code_piece_append("<PYACC_Text_ValueLocation>");
- flush();
+ code_piece_flush(strlen(code_text));
code_piece_append("</PYACC_Text_ValueLocation>");
}
YY_BREAK
/* Escape M4 quoting characters in C code. */
case 16:
YY_RULE_SETUP
-#line 215 "src/scan-code.l"
+#line 222 "src/scan-code.l"
obstack_escape (&obstack_for_string, code_text);
YY_BREAK
/* By default, grow the string obstack with the input. */
case 17:
/* rule 17 can match eol */
YY_RULE_SETUP
-#line 218 "src/scan-code.l"
+#line 225 "src/scan-code.l"
STRING_GROW;
YY_BREAK
/* End of processing. */
case YY_STATE_EOF(SC_CHARACTER):
case YY_STATE_EOF(SC_RULE_ACTION):
case YY_STATE_EOF(SC_SYMBOL_ACTION):
-#line 221 "src/scan-code.l"
+#line 228 "src/scan-code.l"
STRING_FINISH; /*code_piece_pack(); --code_piece0;*/ return last_string;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 224 "src/scan-code.l"
+#line 231 "src/scan-code.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 1280 "src/scan-code.c"
+#line 1287 "src/scan-code.c"
case YY_END_OF_BUFFER:
{
/* %ok-for-header */
-#line 224 "src/scan-code.l"
+#line 231 "src/scan-code.l"
;
sprintf(code_piece_temp + j, "\">");
code_piece_append(code_piece_temp);
- code_piece_esc(code_text, code_leng);
+ code_piece_flush(strlen(code_text));
code_piece_append("</PYACC_Text_ValueReference>");
}
else {
;
sprintf(code_piece_temp + j, "\" index=\"%d\">", n);
code_piece_append(code_piece_temp);
- code_piece_esc(code_text, code_leng);
+ code_piece_flush(strlen(code_text));
code_piece_append("</PYACC_Text_StackReference>");
}
if (no_handle_action)
#if 1
if (n == LHS_REF) {
code_piece_append("<PYACC_Text_ValueLocation>");
- code_piece_esc(code_text, strlen(code_text));
+ code_piece_flush(strlen(code_text));
code_piece_append("</PYACC_Text_ValueLocation>");
}
else {
sprintf(code_piece_temp, "<PYACC_Text_StackLocation index=\"%d\">", n);
code_piece_append(code_piece_temp);
- code_piece_esc(code_text, strlen(code_text));
+ code_piece_flush(strlen(code_text));
code_piece_append("</PYACC_Text_StackLocation>");
}
if (no_handle_action)
code_lex_destroy ();
}
+/* Nick */
+void code_piece_append(const char *str) {
+ code_piece[code_piece1++] = strdup(str);
+}
+
+void code_piece_escape(const char *p, size_t n) {
+ size_t i, j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ case '>':
+ j += 4;
+ break;
+ case '&':
+ j += 5;
+ break;
+ default:
+ ++j;
+ break;
+ }
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ memcpy(q + j, "<", 4);
+ j += 4;
+ break;
+ case '>':
+ memcpy(q + j, ">", 4);
+ j += 4;
+ break;
+ case '&':
+ memcpy(q + j, "&", 5);
+ j += 5;
+ break;
+ default:
+ q[j++] = p[i];
+ break;
+ }
+ q[j] = 0;
+ code_piece[code_piece1++] = q;
+}
+
+void code_piece_flush(size_t n) {
+ code_piece_escape(code_text, n);
+ code_text += n;
+}
+
+void code_piece_pack() {
+ int i;
+ size_t j = 0;
+ for (i = code_piece0; i < code_piece1; ++i)
+ j += strlen(code_piece[i]);
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = code_piece0; i < code_piece1; ++i) {
+ int k = strlen(code_piece[i]);
+ memcpy(q + j, code_piece[i], k);
+ free(code_piece[i]);
+ j += k;
+ }
+ q[j] = 0;
+ code_piece[code_piece0++] = q;
+ code_piece1 = code_piece0;
+}
+
---- scan-gram.c.orig 2018-07-06 09:26:27.790569234 +1000
-+++ scan-gram.c 2018-07-06 09:54:48.426630707 +1000
-@@ -66,6 +66,73 @@
- /* %endif */
- /* end standard C headers. */
-
-+char code_piece_temp[100];
-+char *code_piece[10000];
-+int code_piece0, code_piece1;
-+void code_piece_append(const char *str) {
-+ code_piece[code_piece1++] = strdup(str);
-+}
-+void code_piece_insert(int n, const char *str) {
-+ memmove(code_piece + n + 1, code_piece + n, (code_piece1 - n) * sizeof(char *));
-+ code_piece[n] = strdup(str);
-+ ++code_piece1;
-+}
-+void code_piece_esc(const char *p, size_t n) {
-+ size_t i, j = 0;
-+ for (i = 0; i < n; ++i)
-+ switch (p[i]) {
-+ case '<':
-+ case '>':
-+ j += 4;
-+ break;
-+ case '&':
-+ j += 5;
-+ break;
-+ default:
-+ ++j;
-+ break;
-+ }
-+ char *q = malloc(j + 1);
-+ j = 0;
-+ for (i = 0; i < n; ++i)
-+ switch (p[i]) {
-+ case '<':
-+ memcpy(q + j, "<", 4);
-+ j += 4;
-+ break;
-+ case '>':
-+ memcpy(q + j, ">", 4);
-+ j += 4;
-+ break;
-+ case '&':
-+ memcpy(q + j, "&", 5);
-+ j += 5;
-+ break;
-+ default:
-+ q[j++] = p[i];
-+ break;
-+ }
-+ q[j] = 0;
-+ code_piece[code_piece1++] = q;
-+}
-+void code_piece_pack() {
-+ int i;
-+ size_t j = 0;
-+ for (i = code_piece0; i < code_piece1; ++i)
-+ j += strlen(code_piece[i]);
-+ char *q = malloc(j + 1);
-+ j = 0;
-+ for (i = code_piece0; i < code_piece1; ++i) {
-+ int k = strlen(code_piece[i]);
-+ memcpy(q + j, code_piece[i], k);
-+ free(code_piece[i]);
-+ j += k;
-+ }
-+ q[j] = 0;
-+ code_piece[code_piece0++] = q;
-+ code_piece1 = code_piece0;
-+}
-+
- /* %if-c-or-c++ */
- /* flex integer type definitions */
-
-@@ -253,7 +320,21 @@
+--- scan-code.c.orig 2018-07-26 20:25:29.798247742 +1000
++++ scan-code.c 2018-07-26 20:28:18.702255077 +1000
+@@ -253,7 +253,16 @@
} \
while ( 0 )
+#if 1
-+#define flush() \
-+ do { \
-+ code_piece_esc(yytext, yy_c_buf_p - yytext); \
-+ yytext = yy_c_buf_p; \
-+ } while (0)
+#define unput(c) \
+ do { \
-+ code_piece_esc(yytext, yy_c_buf_p - yytext); \
++ code_piece_escape(yytext, yy_c_buf_p - yytext); \
+ yyunput(c, (yytext_ptr)); \
+ yytext = yy_c_buf_p; \
+ } while (0)
#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
-@@ -1480,7 +1586,12 @@
- gram__load_buffer_state( );
+@@ -1024,7 +1033,12 @@
+ code__load_buffer_state( );
}
+#if 1
+ /* we do this so that "continue;" in an action works correctly */
-+ for (; ; code_piece_esc(yytext, yy_c_buf_p - yytext))
++ for (; ; code_piece_escape(yytext, yy_c_buf_p - yytext))
+#else
while ( 1 ) /* loops until end-of-file is reached */
+#endif
static bool untyped_var_seen;
/* Nick */
+char code_piece_temp[100], *code_piece[10000];
+int code_piece0, code_piece1;
+
+void code_piece_append(const char *str);
+void code_piece_escape(const char *p, size_t n);
+void code_piece_flush(size_t n);
+void code_piece_pack();
+
int no_handle_action;
%}
"$"("<"{tag}">")?{ref} {
ref_tail_fields = NULL;
handle_action_dollar (self->rule, yytext, *loc);
- yytext = yy_c_buf_p;
if (ref_tail_fields)
obstack_sgrow (&obstack_for_string, ref_tail_fields);
}
"@"{ref} {
ref_tail_fields = NULL;
handle_action_at (self->rule, yytext, *loc);
- yytext = yy_c_buf_p;
if (ref_tail_fields)
obstack_sgrow (&obstack_for_string, ref_tail_fields);
}
;
sprintf(code_piece_temp + j, "\">");
code_piece_append(code_piece_temp);
- code_piece_esc(yytext, strlen(yytext));
+ i = strlen(yytext);
+ code_piece_escape(yytext, i);
code_piece_append("</PYACC_Text_ValueReference>");
const char *type_name = NULL;
fetch_type_name (yytext + 1, &type_name, *loc)[-1] = 0;
obstack_quote (&obstack_for_string, type_name);
obstack_sgrow (&obstack_for_string, ")[");
self->is_value_used = true;
- yytext = yy_c_buf_p;
+ yytext += i;
}
"@$" {
obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
muscle_percent_define_ensure("locations", the_location, true);
code_piece_append("<PYACC_Text_ValueLocation>");
- flush();
+ code_piece_flush(strlen(yytext));
code_piece_append("</PYACC_Text_ValueLocation>");
}
}
;
sprintf(code_piece_temp + j, "\">");
code_piece_append(code_piece_temp);
- code_piece_esc(yytext, yyleng);
+ code_piece_flush(strlen(yytext));
code_piece_append("</PYACC_Text_ValueReference>");
}
else {
;
sprintf(code_piece_temp + j, "\" index=\"%d\">", n);
code_piece_append(code_piece_temp);
- code_piece_esc(yytext, yyleng);
+ code_piece_flush(strlen(yytext));
code_piece_append("</PYACC_Text_StackReference>");
}
if (no_handle_action)
#if 1
if (n == LHS_REF) {
code_piece_append("<PYACC_Text_ValueLocation>");
- code_piece_esc(yytext, strlen(yytext));
+ code_piece_flush(strlen(yytext));
code_piece_append("</PYACC_Text_ValueLocation>");
}
else {
sprintf(code_piece_temp, "<PYACC_Text_StackLocation index=\"%d\">", n);
code_piece_append(code_piece_temp);
- code_piece_esc(yytext, strlen(yytext));
+ code_piece_flush(strlen(yytext));
code_piece_append("</PYACC_Text_StackLocation>");
}
if (no_handle_action)
/* Reclaim Flex's buffers. */
yylex_destroy ();
}
+
+/* Nick */
+void code_piece_append(const char *str) {
+ code_piece[code_piece1++] = strdup(str);
+}
+
+void code_piece_escape(const char *p, size_t n) {
+ size_t i, j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ case '>':
+ j += 4;
+ break;
+ case '&':
+ j += 5;
+ break;
+ default:
+ ++j;
+ break;
+ }
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ memcpy(q + j, "<", 4);
+ j += 4;
+ break;
+ case '>':
+ memcpy(q + j, ">", 4);
+ j += 4;
+ break;
+ case '&':
+ memcpy(q + j, "&", 5);
+ j += 5;
+ break;
+ default:
+ q[j++] = p[i];
+ break;
+ }
+ q[j] = 0;
+ code_piece[code_piece1++] = q;
+}
+
+void code_piece_flush(size_t n) {
+ code_piece_escape(yytext, n);
+ yytext += n;
+}
+
+void code_piece_pack() {
+ int i;
+ size_t j = 0;
+ for (i = code_piece0; i < code_piece1; ++i)
+ j += strlen(code_piece[i]);
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = code_piece0; i < code_piece1; ++i) {
+ int k = strlen(code_piece[i]);
+ memcpy(q + j, code_piece[i], k);
+ free(code_piece[i]);
+ j += k;
+ }
+ q[j] = 0;
+ code_piece[code_piece0++] = q;
+ code_piece1 = code_piece0;
+}
/* %endif */
/* end standard C headers. */
-char gram_piece_temp[100];
-char *gram_piece[10000];
-int gram_piece0, gram_piece1;
-void gram_piece_append(const char *str) {
- gram_piece[gram_piece1++] = strdup(str);
-}
-void gram_piece_insert(int n, const char *str) {
- memmove(gram_piece + n + 1, gram_piece + n, (gram_piece1 - n) * sizeof(char *));
- gram_piece[n] = strdup(str);
- ++gram_piece1;
-}
-void gram_piece_esc(const char *p, size_t n) {
- size_t i, j = 0;
- for (i = 0; i < n; ++i)
- switch (p[i]) {
- case '<':
- case '>':
- j += 4;
- break;
- case '&':
- j += 5;
- break;
- default:
- ++j;
- break;
- }
- char *q = malloc(j + 1);
- j = 0;
- for (i = 0; i < n; ++i)
- switch (p[i]) {
- case '<':
- memcpy(q + j, "<", 4);
- j += 4;
- break;
- case '>':
- memcpy(q + j, ">", 4);
- j += 4;
- break;
- case '&':
- memcpy(q + j, "&", 5);
- j += 5;
- break;
- default:
- q[j++] = p[i];
- break;
- }
- q[j] = 0;
- gram_piece[gram_piece1++] = q;
-}
-void gram_piece_pack() {
- int i;
- size_t j = 0;
- for (i = gram_piece0; i < gram_piece1; ++i)
- j += strlen(gram_piece[i]);
- char *q = malloc(j + 1);
- j = 0;
- for (i = gram_piece0; i < gram_piece1; ++i) {
- int k = strlen(gram_piece[i]);
- memcpy(q + j, gram_piece[i], k);
- free(gram_piece[i]);
- j += k;
- }
- q[j] = 0;
- gram_piece[gram_piece0++] = q;
- gram_piece1 = gram_piece0;
-}
-
/* %if-c-or-c++ */
/* flex integer type definitions */
while ( 0 )
#if 1
-#define flush() \
- do { \
- gram_piece_esc(yytext, yy_c_buf_p - yytext); \
- yytext = yy_c_buf_p; \
- } while (0)
#define unput(c) \
do { \
- gram_piece_esc(yytext, yy_c_buf_p - yytext); \
+ gram_piece_escape(yytext, yy_c_buf_p - yytext); \
yyunput(c, (yytext_ptr)); \
yytext = yy_c_buf_p; \
} while (0)
static yyconst flex_int16_t yy_rule_linenum[130] =
{ 0,
- 185, 188, 189, 190, 198, 216, 217, 218, 219, 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,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 275, 279, 280, 281, 283, 295, 309, 326, 331,
- 334, 337, 340, 350, 363, 364, 365, 375, 389, 396,
- 416, 426, 441, 451, 478, 491, 507, 522, 539, 540,
- 551, 562, 563, 575, 591, 601, 628, 640, 662, 663,
-
- 674, 689, 705, 706, 707, 708, 709, 710, 711, 714,
- 716, 730, 748, 753, 754, 760, 761, 772, 778, 784,
- 790, 806, 807, 811, 818, 842, 870, 916, 917
+ 199, 202, 203, 204, 212, 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, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 289, 293, 294, 295, 297, 309, 323, 340, 345,
+ 348, 351, 354, 364, 375, 376, 377, 387, 401, 408,
+ 428, 438, 453, 463, 490, 503, 519, 534, 551, 552,
+ 563, 574, 575, 587, 603, 613, 640, 652, 674, 675,
+
+ 686, 701, 717, 718, 719, 720, 721, 722, 723, 726,
+ 728, 742, 760, 765, 766, 772, 773, 784, 790, 796,
+ 802, 818, 819, 823, 830, 854, 882, 928, 929
} ;
/* The intent behind this definition is that it'll catch
#include <src/scan-gram.h>
+#if 1
+#define YY_DECL static int real_gram_lex (GRAM_STYPE *val, location *loc)
+#else
#define YY_DECL GRAM_LEX_DECL
+#endif
/* Location of scanner cursor. */
static boundary scanner_cursor;
static void unexpected_eof (boundary, char const *);
static void unexpected_newline (boundary, char const *);
+/* Nick */
+char gram_piece_temp[100], *gram_piece[10000];
+int gram_piece0, gram_piece1;
+
+void gram_piece_append(const char *str);
+void gram_piece_insert(int n, const char *str);
+void gram_piece_escape(const char *p, size_t n);
+void gram_piece_flush(size_t n);
+void gram_piece_pack();
+
/* A C-like comment in directives/rules. */
/* Strings and characters 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 1141 "src/scan-gram.c"
+#line 1155 "src/scan-gram.c"
#define INITIAL 0
#define SC_YACC_COMMENT 1
/** The main scanner function which does all the work.
*/
-static int real_yylex(GRAM_STYPE *val, location *loc);
YY_DECL
-{
- int result = real_yylex(val, loc);
- if (result < 0)
- return ~result;
- gram_piece_pack();
-#if 1
- gram_piece_esc(yytext, strlen(yytext));
-#else
- size_t n = strlen(yytext);
- if (n) {
- sprintf(gram_piece_temp, "<token value=\"%d\">", result);
- gram_piece_append(gram_piece_temp);
- gram_piece_esc(yytext, n);
- gram_piece_append("</token>");
- }
- else {
- sprintf(gram_piece_temp, "<token value=\"%d\" />", result);
- gram_piece_append(gram_piece_temp);
- }
-#endif
- gram_piece_pack();
- return result;
-}
-static int real_yylex(GRAM_STYPE *val, location *loc)
{
register yy_state_type yy_current_state;
register char *yy_cp, *yy_bp;
register int yy_act;
/* %% [7.0] user's declarations go here */
-#line 146 "src/scan-gram.l"
+#line 160 "src/scan-gram.l"
/* Nesting level. Either for nested braces, or nested angle brackets
| Scanning white space. |
`-----------------------*/
-#line 1443 "src/scan-gram.c"
+#line 1457 "src/scan-gram.c"
if ( !(yy_init) )
{
#if 1
/* we do this so that "continue;" in an action works correctly */
- for (; ; gram_piece_esc(yytext, yy_c_buf_p - yytext))
+ for (; ; gram_piece_escape(yytext, yy_c_buf_p - yytext))
#else
while ( 1 ) /* loops until end-of-file is reached */
#endif
/* Comments and white space. */
case 1:
YY_RULE_SETUP
-#line 185 "src/scan-gram.l"
+#line 199 "src/scan-gram.l"
{
complain (loc, Wother, _("stray ',' treated as white space"));
}
YY_BREAK
case 2:
/* rule 2 can match eol */
-#line 189 "src/scan-gram.l"
+#line 203 "src/scan-gram.l"
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
-#line 189 "src/scan-gram.l"
+#line 203 "src/scan-gram.l"
continue;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 190 "src/scan-gram.l"
+#line 204 "src/scan-gram.l"
{
token_start = loc->start;
context_state = YY_START;
case 5:
/* rule 5 can match eol */
YY_RULE_SETUP
-#line 198 "src/scan-gram.l"
+#line 212 "src/scan-gram.l"
{
handle_syncline (gram_text + sizeof "#line " - 1, *loc);
}
case 6:
YY_RULE_SETUP
-#line 216 "src/scan-gram.l"
+#line 230 "src/scan-gram.l"
return PERCENT_NONASSOC;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 217 "src/scan-gram.l"
+#line 231 "src/scan-gram.l"
return PERCENT_CODE;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 218 "src/scan-gram.l"
+#line 232 "src/scan-gram.l"
RETURN_PERCENT_FLAG("parse.trace");
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 219 "src/scan-gram.l"
+#line 233 "src/scan-gram.l"
return PERCENT_DEFAULT_PREC;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 220 "src/scan-gram.l"
+#line 234 "src/scan-gram.l"
return PERCENT_DEFINE;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 221 "src/scan-gram.l"
+#line 235 "src/scan-gram.l"
return PERCENT_DEFINES;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 222 "src/scan-gram.l"
+#line 236 "src/scan-gram.l"
return PERCENT_DESTRUCTOR;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 223 "src/scan-gram.l"
+#line 237 "src/scan-gram.l"
return PERCENT_DPREC;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 224 "src/scan-gram.l"
+#line 238 "src/scan-gram.l"
return PERCENT_EMPTY;
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 225 "src/scan-gram.l"
+#line 239 "src/scan-gram.l"
return PERCENT_ERROR_VERBOSE;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 226 "src/scan-gram.l"
+#line 240 "src/scan-gram.l"
return PERCENT_EXPECT;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 227 "src/scan-gram.l"
+#line 241 "src/scan-gram.l"
return PERCENT_EXPECT_RR;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 228 "src/scan-gram.l"
+#line 242 "src/scan-gram.l"
return PERCENT_FILE_PREFIX;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 229 "src/scan-gram.l"
+#line 243 "src/scan-gram.l"
return PERCENT_YACC;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 230 "src/scan-gram.l"
+#line 244 "src/scan-gram.l"
return PERCENT_INITIAL_ACTION;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 231 "src/scan-gram.l"
+#line 245 "src/scan-gram.l"
return PERCENT_GLR_PARSER;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 232 "src/scan-gram.l"
+#line 246 "src/scan-gram.l"
return PERCENT_LANGUAGE;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 233 "src/scan-gram.l"
+#line 247 "src/scan-gram.l"
return PERCENT_LEFT;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 234 "src/scan-gram.l"
+#line 248 "src/scan-gram.l"
RETURN_PERCENT_PARAM(lex);
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 235 "src/scan-gram.l"
+#line 249 "src/scan-gram.l"
RETURN_PERCENT_FLAG("locations");
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 236 "src/scan-gram.l"
+#line 250 "src/scan-gram.l"
return PERCENT_MERGE;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 237 "src/scan-gram.l"
+#line 251 "src/scan-gram.l"
return PERCENT_NAME_PREFIX;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 238 "src/scan-gram.l"
+#line 252 "src/scan-gram.l"
return PERCENT_NO_DEFAULT_PREC;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 239 "src/scan-gram.l"
+#line 253 "src/scan-gram.l"
return PERCENT_NO_LINES;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 240 "src/scan-gram.l"
+#line 254 "src/scan-gram.l"
return PERCENT_NONASSOC;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 241 "src/scan-gram.l"
+#line 255 "src/scan-gram.l"
return PERCENT_NONDETERMINISTIC_PARSER;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 242 "src/scan-gram.l"
+#line 256 "src/scan-gram.l"
return PERCENT_NTERM;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 243 "src/scan-gram.l"
+#line 257 "src/scan-gram.l"
return PERCENT_OUTPUT;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 244 "src/scan-gram.l"
+#line 258 "src/scan-gram.l"
RETURN_PERCENT_PARAM(both);
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 245 "src/scan-gram.l"
+#line 259 "src/scan-gram.l"
RETURN_PERCENT_PARAM(parse);
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 246 "src/scan-gram.l"
+#line 260 "src/scan-gram.l"
return PERCENT_PREC;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 247 "src/scan-gram.l"
+#line 261 "src/scan-gram.l"
return PERCENT_PRECEDENCE;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 248 "src/scan-gram.l"
+#line 262 "src/scan-gram.l"
return PERCENT_PRINTER;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 249 "src/scan-gram.l"
+#line 263 "src/scan-gram.l"
RETURN_PERCENT_FLAG("api.pure");
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 250 "src/scan-gram.l"
+#line 264 "src/scan-gram.l"
return PERCENT_REQUIRE;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 251 "src/scan-gram.l"
+#line 265 "src/scan-gram.l"
return PERCENT_RIGHT;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 252 "src/scan-gram.l"
+#line 266 "src/scan-gram.l"
return PERCENT_SKELETON;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 253 "src/scan-gram.l"
+#line 267 "src/scan-gram.l"
return PERCENT_START;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 254 "src/scan-gram.l"
+#line 268 "src/scan-gram.l"
return PERCENT_TOKEN;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 255 "src/scan-gram.l"
+#line 269 "src/scan-gram.l"
return PERCENT_TOKEN;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 256 "src/scan-gram.l"
+#line 270 "src/scan-gram.l"
return PERCENT_TOKEN_TABLE;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 257 "src/scan-gram.l"
+#line 271 "src/scan-gram.l"
return PERCENT_TYPE;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 258 "src/scan-gram.l"
+#line 272 "src/scan-gram.l"
return PERCENT_UNION;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 259 "src/scan-gram.l"
+#line 273 "src/scan-gram.l"
return PERCENT_VERBOSE;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 260 "src/scan-gram.l"
+#line 274 "src/scan-gram.l"
return PERCENT_YACC;
YY_BREAK
/* deprecated */
case 51:
YY_RULE_SETUP
-#line 263 "src/scan-gram.l"
+#line 277 "src/scan-gram.l"
DEPRECATED("%default-prec");
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 264 "src/scan-gram.l"
+#line 278 "src/scan-gram.l"
DEPRECATED("%define parse.error verbose");
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 265 "src/scan-gram.l"
+#line 279 "src/scan-gram.l"
DEPRECATED("%expect-rr");
YY_BREAK
case 54:
/* rule 54 can match eol */
YY_RULE_SETUP
-#line 266 "src/scan-gram.l"
+#line 280 "src/scan-gram.l"
DEPRECATED("%file-prefix");
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 267 "src/scan-gram.l"
+#line 281 "src/scan-gram.l"
DEPRECATED("%fixed-output-files");
YY_BREAK
case 56:
/* rule 56 can match eol */
YY_RULE_SETUP
-#line 268 "src/scan-gram.l"
+#line 282 "src/scan-gram.l"
DEPRECATED("%name-prefix");
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 269 "src/scan-gram.l"
+#line 283 "src/scan-gram.l"
DEPRECATED("%no-default-prec");
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 270 "src/scan-gram.l"
+#line 284 "src/scan-gram.l"
DEPRECATED("%no-lines");
YY_BREAK
case 59:
/* rule 59 can match eol */
YY_RULE_SETUP
-#line 271 "src/scan-gram.l"
+#line 285 "src/scan-gram.l"
DEPRECATED("%output");
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 272 "src/scan-gram.l"
+#line 286 "src/scan-gram.l"
DEPRECATED("%pure-parser");
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 273 "src/scan-gram.l"
+#line 287 "src/scan-gram.l"
DEPRECATED("%token-table");
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 275 "src/scan-gram.l"
+#line 289 "src/scan-gram.l"
{
complain (loc, complaint, _("invalid directive: %s"), quote (gram_text));
}
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 279 "src/scan-gram.l"
+#line 293 "src/scan-gram.l"
return EQUAL;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 280 "src/scan-gram.l"
+#line 294 "src/scan-gram.l"
return PIPE;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 281 "src/scan-gram.l"
+#line 295 "src/scan-gram.l"
return SEMICOLON;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 283 "src/scan-gram.l"
+#line 297 "src/scan-gram.l"
{
val->uniqstr = uniqstr_new (gram_text);
id_loc = *loc;
BEGIN SC_AFTER_IDENTIFIER;
gram_piece_pack();
gram_piece_append("<PYACC_ID>");
- flush();
+ gram_piece_flush(strlen(gram_text));
gram_piece_append("</PYACC_ID>");
gram_piece_pack();
}
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 295 "src/scan-gram.l"
+#line 309 "src/scan-gram.l"
{
val->integer = scan_integer (gram_text, 10, *loc);
#if 0
gram_piece_pack();
sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
gram_piece_append(gram_piece_temp);
- gram_piece_esc(gram_text, yy_c_buf_p - gram_text);
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_Int>");
gram_piece_pack();
return ~INT;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 309 "src/scan-gram.l"
+#line 323 "src/scan-gram.l"
{
val->integer = scan_integer (gram_text, 16, *loc);
#if 0
gram_piece_pack();
sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
gram_piece_append(gram_piece_temp);
- gram_piece_esc(gram_text, yy_c_buf_p - gram_text);
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_Int>");
gram_piece_pack();
return ~INT;
accept "1FOO" as "1 FOO". */
case 69:
YY_RULE_SETUP
-#line 326 "src/scan-gram.l"
+#line 340 "src/scan-gram.l"
{
complain (loc, complaint, _("invalid identifier: %s"), quote (gram_text));
}
/* Characters. */
case 70:
YY_RULE_SETUP
-#line 331 "src/scan-gram.l"
-token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; gram_piece_pack(); gram_piece_append("<PYACC_Char>"); flush(); gram_piece_append("<PYACC_Text>");
+#line 345 "src/scan-gram.l"
+token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; gram_piece_pack(); gram_piece_append("<PYACC_Char>"); gram_piece_flush(strlen(gram_text)); gram_piece_append("<PYACC_Text>");
YY_BREAK
/* Strings. */
case 71:
YY_RULE_SETUP
-#line 334 "src/scan-gram.l"
-token_start = loc->start; BEGIN SC_ESCAPED_STRING; gram_piece_pack(); gram_piece_append("<PYACC_String>"); flush(); gram_piece_append("<PYACC_Text>");
+#line 348 "src/scan-gram.l"
+token_start = loc->start; BEGIN SC_ESCAPED_STRING; gram_piece_pack(); gram_piece_append("<PYACC_String>"); gram_piece_flush(strlen(gram_text)); gram_piece_append("<PYACC_Text>");
YY_BREAK
/* Prologue. */
case 72:
YY_RULE_SETUP
-#line 337 "src/scan-gram.l"
-code_start = loc->start; BEGIN SC_PROLOGUE; gram_piece_pack(); gram_piece_append("<PYACC_Section1_Prologue>"); flush(); gram_piece_append("<PYACC_Text>");
+#line 351 "src/scan-gram.l"
+code_start = loc->start; BEGIN SC_PROLOGUE; gram_piece_pack(); gram_piece_append("<PYACC_Section1_Prologue>"); gram_piece_flush(strlen(gram_text)); gram_piece_append("<PYACC_Text>");
YY_BREAK
/* Code in between braces. */
case 73:
YY_RULE_SETUP
-#line 340 "src/scan-gram.l"
+#line 354 "src/scan-gram.l"
{
STRING_GROW;
nesting = 0;
case 74:
/* rule 74 can match eol */
YY_RULE_SETUP
-#line 350 "src/scan-gram.l"
+#line 364 "src/scan-gram.l"
{
nesting = 0;
code_start = loc->start;
gram_piece_pack();
gram_piece_append("<PYACC_BracedPredicate>");
- /* flush all but the opening brace */
- gram_piece_esc(gram_text, yy_c_buf_p - 1 - gram_text);
- gram_text = yy_c_buf_p - 1;
+ gram_piece_flush(strlen(gram_text) - 1);
gram_piece_append("<PYACC_Text>");
BEGIN SC_PREDICATE;
}
/* A type. */
case 75:
YY_RULE_SETUP
-#line 363 "src/scan-gram.l"
+#line 375 "src/scan-gram.l"
gram_piece_pack(); gram_piece_append("<PYACC_Tag><<PYACC_Text>*</PYACC_Text>></PYACC_Tag>"); return ~TAG_ANY; /*return TAG_ANY;*/
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 364 "src/scan-gram.l"
+#line 376 "src/scan-gram.l"
gram_piece_pack(); gram_piece_append("<PYACC_Tag><<PYACC_Text />></PYACC_Tag>"); return ~TAG_NONE; /*return TAG_NONE;*/
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 365 "src/scan-gram.l"
+#line 377 "src/scan-gram.l"
{
nesting = 0;
token_start = loc->start;
BEGIN SC_TAG;
gram_piece_pack();
gram_piece_append("<PYACC_Tag>");
- flush();
+ gram_piece_flush(strlen(gram_text));
gram_piece_append("<PYACC_Text>");
}
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 375 "src/scan-gram.l"
+#line 387 "src/scan-gram.l"
{
static int percent_percent_count;
if (++percent_percent_count == 2)
{
BEGIN SC_EPILOGUE;
gram_piece_pack();
- gram_piece_esc(gram_text, strlen(gram_text));
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_pack();
gram_piece_pack();
return ~PERCENT_PERCENT;
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 389 "src/scan-gram.l"
+#line 401 "src/scan-gram.l"
{
bracketed_id_str = NULL;
bracketed_id_start = loc->start;
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 396 "src/scan-gram.l"
+#line 408 "src/scan-gram.l"
{
complain (loc, complaint, "%s: %s",
ngettext ("invalid character", "invalid characters", gram_leng),
}
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 402 "src/scan-gram.l"
+#line 414 "src/scan-gram.l"
{
loc->start = loc->end = scanner_cursor;
yyterminate ();
case 81:
YY_RULE_SETUP
-#line 416 "src/scan-gram.l"
+#line 428 "src/scan-gram.l"
complain (loc, complaint, _("invalid null character"));
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 426 "src/scan-gram.l"
+#line 438 "src/scan-gram.l"
{
if (bracketed_id_str)
{
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 441 "src/scan-gram.l"
+#line 453 "src/scan-gram.l"
{
BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
*loc = id_loc;
#if 1
- gram_piece_esc(gram_text, yy_c_buf_p - gram_text);
+ gram_piece_escape(gram_text, strlen(gram_text));
return ~ID_COLON;
#else
return ID_COLON;
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 451 "src/scan-gram.l"
+#line 463 "src/scan-gram.l"
{
ROLLBACK_CURRENT_TOKEN;
BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
}
YY_BREAK
case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
-#line 461 "src/scan-gram.l"
+#line 473 "src/scan-gram.l"
{
BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
*loc = id_loc;
case 85:
YY_RULE_SETUP
-#line 478 "src/scan-gram.l"
+#line 490 "src/scan-gram.l"
{
if (bracketed_id_str)
{
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 491 "src/scan-gram.l"
+#line 503 "src/scan-gram.l"
{
BEGIN bracketed_id_context_state;
if (bracketed_id_str)
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 507 "src/scan-gram.l"
+#line 519 "src/scan-gram.l"
{
complain (loc, complaint, "%s: %s",
ngettext ("invalid character in bracketed name",
}
YY_BREAK
case YY_STATE_EOF(SC_BRACKETED_ID):
-#line 514 "src/scan-gram.l"
+#line 526 "src/scan-gram.l"
{
BEGIN bracketed_id_context_state;
unexpected_eof (bracketed_id_start, "]");
case 88:
YY_RULE_SETUP
-#line 522 "src/scan-gram.l"
+#line 534 "src/scan-gram.l"
{
ROLLBACK_CURRENT_TOKEN;
val->uniqstr = bracketed_id_str;
case 89:
YY_RULE_SETUP
-#line 539 "src/scan-gram.l"
+#line 551 "src/scan-gram.l"
BEGIN context_state;
YY_BREAK
case 90:
/* rule 90 can match eol */
YY_RULE_SETUP
-#line 540 "src/scan-gram.l"
+#line 552 "src/scan-gram.l"
continue;
YY_BREAK
case YY_STATE_EOF(SC_YACC_COMMENT):
-#line 541 "src/scan-gram.l"
+#line 553 "src/scan-gram.l"
unexpected_eof (token_start, "*/"); BEGIN context_state;
YY_BREAK
case 91:
/* rule 91 can match eol */
YY_RULE_SETUP
-#line 551 "src/scan-gram.l"
+#line 563 "src/scan-gram.l"
STRING_GROW; BEGIN context_state;
YY_BREAK
case YY_STATE_EOF(SC_COMMENT):
-#line 552 "src/scan-gram.l"
+#line 564 "src/scan-gram.l"
unexpected_eof (token_start, "*/"); BEGIN context_state;
YY_BREAK
case 92:
/* rule 92 can match eol */
YY_RULE_SETUP
-#line 562 "src/scan-gram.l"
+#line 574 "src/scan-gram.l"
STRING_GROW; BEGIN context_state;
YY_BREAK
case 93:
/* rule 93 can match eol */
YY_RULE_SETUP
-#line 563 "src/scan-gram.l"
+#line 575 "src/scan-gram.l"
STRING_GROW;
YY_BREAK
case YY_STATE_EOF(SC_LINE_COMMENT):
-#line 564 "src/scan-gram.l"
+#line 576 "src/scan-gram.l"
BEGIN context_state;
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 575 "src/scan-gram.l"
+#line 587 "src/scan-gram.l"
{
STRING_FINISH;
loc->start = token_start;
BEGIN INITIAL;
#if 1
gram_piece_append("</PYACC_Text>");
- gram_piece_esc(gram_text, strlen(gram_text));
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_String>");
gram_piece_pack();
return ~STRING;
}
YY_BREAK
case YY_STATE_EOF(SC_ESCAPED_STRING):
-#line 590 "src/scan-gram.l"
+#line 602 "src/scan-gram.l"
unexpected_eof (token_start, "\"");
YY_BREAK
case 95:
/* rule 95 can match eol */
YY_RULE_SETUP
-#line 591 "src/scan-gram.l"
+#line 603 "src/scan-gram.l"
unexpected_newline (token_start, "\"");
YY_BREAK
case 96:
YY_RULE_SETUP
-#line 601 "src/scan-gram.l"
+#line 613 "src/scan-gram.l"
{
STRING_FINISH;
loc->start = token_start;
BEGIN INITIAL;
#if 1
gram_piece_append("</PYACC_Text>");
- gram_piece_esc(gram_text, strlen(gram_text));
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_Char>");
gram_piece_pack();
return ~CHAR;
case 97:
/* rule 97 can match eol */
YY_RULE_SETUP
-#line 628 "src/scan-gram.l"
+#line 640 "src/scan-gram.l"
unexpected_newline (token_start, "'");
YY_BREAK
case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
-#line 629 "src/scan-gram.l"
+#line 641 "src/scan-gram.l"
unexpected_eof (token_start, "'");
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 640 "src/scan-gram.l"
+#line 652 "src/scan-gram.l"
{
--nesting;
if (nesting < 0)
STRING_FREE;
BEGIN INITIAL;
#if 1
- gram_piece_append("</PYACC_Text>");
- gram_piece_esc(gram_text, strlen(gram_text));
+ gram_piece_append("</PYACC_Text");
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_Tag>");
gram_piece_pack();
return ~TAG;
case 99:
/* rule 99 can match eol */
YY_RULE_SETUP
-#line 662 "src/scan-gram.l"
+#line 674 "src/scan-gram.l"
STRING_GROW;
YY_BREAK
case 100:
YY_RULE_SETUP
-#line 663 "src/scan-gram.l"
+#line 675 "src/scan-gram.l"
STRING_GROW; nesting += gram_leng;
YY_BREAK
case YY_STATE_EOF(SC_TAG):
-#line 665 "src/scan-gram.l"
+#line 677 "src/scan-gram.l"
unexpected_eof (token_start, ">");
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 674 "src/scan-gram.l"
+#line 686 "src/scan-gram.l"
{
unsigned long int c = strtoul (gram_text + 1, NULL, 8);
if (!c || UCHAR_MAX < c)
obstack_1grow (&obstack_for_string, c);
sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", (int)c);
gram_piece_append(gram_piece_temp);
- flush();
+ gram_piece_flush(strlen(gram_text));
gram_piece_append("</PYACC_Text_Escape>");
}
}
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 689 "src/scan-gram.l"
+#line 701 "src/scan-gram.l"
{
verify (UCHAR_MAX < ULONG_MAX);
unsigned long int c = strtoul (gram_text + 2, NULL, 16);
obstack_1grow (&obstack_for_string, c);
sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", (int)c);
gram_piece_append(gram_piece_temp);
- flush();
+ gram_piece_flush(strlen(gram_text));
gram_piece_append("</PYACC_Text_Escape>");
}
}
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 705 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\a'); gram_piece_append("<PYACC_Text_Escape character=\"7\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 717 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, '\a'); gram_piece_append("<PYACC_Text_Escape character=\"7\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
case 104:
YY_RULE_SETUP
-#line 706 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\b'); gram_piece_append("<PYACC_Text_Escape character=\"8\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 718 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, '\b'); gram_piece_append("<PYACC_Text_Escape character=\"8\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
case 105:
YY_RULE_SETUP
-#line 707 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\f'); gram_piece_append("<PYACC_Text_Escape character=\"12\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 719 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, '\f'); gram_piece_append("<PYACC_Text_Escape character=\"12\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
case 106:
YY_RULE_SETUP
-#line 708 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\n'); gram_piece_append("<PYACC_Text_Escape character=\"10\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 720 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, '\n'); gram_piece_append("<PYACC_Text_Escape character=\"10\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
case 107:
YY_RULE_SETUP
-#line 709 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\r'); gram_piece_append("<PYACC_Text_Escape character=\"13\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 721 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, '\r'); gram_piece_append("<PYACC_Text_Escape character=\"13\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
case 108:
YY_RULE_SETUP
-#line 710 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\t'); gram_piece_append("<PYACC_Text_Escape character=\"9\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 722 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, '\t'); gram_piece_append("<PYACC_Text_Escape character=\"9\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
case 109:
YY_RULE_SETUP
-#line 711 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, '\v'); gram_piece_append("<PYACC_Text_Escape character=\"11\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 723 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, '\v'); gram_piece_append("<PYACC_Text_Escape character=\"11\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
/* \\[\"\'?\\] would be shorter, but it confuses xgettext. */
case 110:
YY_RULE_SETUP
-#line 714 "src/scan-gram.l"
-obstack_1grow (&obstack_for_string, gram_text[1]); sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", gram_text[1]); gram_piece_append(gram_piece_temp); flush(); gram_piece_append("</PYACC_Text_Escape>");
+#line 726 "src/scan-gram.l"
+obstack_1grow (&obstack_for_string, gram_text[1]); sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", gram_text[1]); gram_piece_append(gram_piece_temp); gram_piece_flush(strlen(gram_text)); gram_piece_append("</PYACC_Text_Escape>");
YY_BREAK
case 111:
YY_RULE_SETUP
-#line 716 "src/scan-gram.l"
+#line 728 "src/scan-gram.l"
{
int c = convert_ucn_to_byte (gram_text);
if (c <= 0)
obstack_1grow (&obstack_for_string, c);
sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", c);
gram_piece_append(gram_piece_temp);
- flush();
+ gram_piece_flush(strlen(gram_text));
gram_piece_append("</PYACC_Text_Escape>");
}
}
case 112:
/* rule 112 can match eol */
YY_RULE_SETUP
-#line 730 "src/scan-gram.l"
+#line 742 "src/scan-gram.l"
{
char const *p = gram_text + 1;
/* Quote only if escaping won't make the character visible. */
case 113:
/* rule 113 can match eol */
YY_RULE_SETUP
-#line 748 "src/scan-gram.l"
+#line 760 "src/scan-gram.l"
STRING_GROW;
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 753 "src/scan-gram.l"
+#line 765 "src/scan-gram.l"
STRING_GROW; BEGIN context_state;
YY_BREAK
case 115:
/* rule 115 can match eol */
YY_RULE_SETUP
-#line 754 "src/scan-gram.l"
+#line 766 "src/scan-gram.l"
unexpected_newline (token_start, "'");
YY_BREAK
case YY_STATE_EOF(SC_CHARACTER):
-#line 755 "src/scan-gram.l"
+#line 767 "src/scan-gram.l"
unexpected_eof (token_start, "'");
YY_BREAK
case 116:
YY_RULE_SETUP
-#line 760 "src/scan-gram.l"
+#line 772 "src/scan-gram.l"
STRING_GROW; BEGIN context_state;
YY_BREAK
case 117:
/* rule 117 can match eol */
YY_RULE_SETUP
-#line 761 "src/scan-gram.l"
+#line 773 "src/scan-gram.l"
unexpected_newline (token_start, "\"");
YY_BREAK
case YY_STATE_EOF(SC_STRING):
-#line 762 "src/scan-gram.l"
+#line 774 "src/scan-gram.l"
unexpected_eof (token_start, "\"");
YY_BREAK
case 118:
YY_RULE_SETUP
-#line 772 "src/scan-gram.l"
+#line 784 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
YY_BREAK
case 119:
YY_RULE_SETUP
-#line 778 "src/scan-gram.l"
+#line 790 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
case 120:
/* rule 120 can match eol */
YY_RULE_SETUP
-#line 784 "src/scan-gram.l"
+#line 796 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
case 121:
/* rule 121 can match eol */
YY_RULE_SETUP
-#line 790 "src/scan-gram.l"
+#line 802 "src/scan-gram.l"
{
STRING_GROW;
context_state = YY_START;
case 122:
/* rule 122 can match eol */
YY_RULE_SETUP
-#line 806 "src/scan-gram.l"
+#line 818 "src/scan-gram.l"
STRING_GROW; nesting++;
YY_BREAK
case 123:
/* rule 123 can match eol */
YY_RULE_SETUP
-#line 807 "src/scan-gram.l"
+#line 819 "src/scan-gram.l"
STRING_GROW; nesting--;
YY_BREAK
/* Tokenize '<<%' correctly (as '<<' '%') rather than incorrrectly
case 124:
/* rule 124 can match eol */
YY_RULE_SETUP
-#line 811 "src/scan-gram.l"
+#line 823 "src/scan-gram.l"
STRING_GROW;
YY_BREAK
case YY_STATE_EOF(SC_BRACED_CODE):
case YY_STATE_EOF(SC_PREDICATE):
-#line 813 "src/scan-gram.l"
+#line 825 "src/scan-gram.l"
unexpected_eof (code_start, "}");
YY_BREAK
case 125:
YY_RULE_SETUP
-#line 818 "src/scan-gram.l"
+#line 830 "src/scan-gram.l"
{
obstack_1grow (&obstack_for_string, '}');
val->code = last_string;
BEGIN INITIAL;
#if 1
- gram_piece_esc(gram_text, strlen(gram_text));
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_BracedCode>");
gram_piece_pack();
return ~BRACED_CODE;
case 126:
YY_RULE_SETUP
-#line 842 "src/scan-gram.l"
+#line 854 "src/scan-gram.l"
{
--nesting;
if (nesting < 0)
val->code = last_string;
BEGIN INITIAL;
#if 1
- gram_piece_esc(gram_text, strlen(gram_text));
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_Text></PYACC_BracedPredicate>");
gram_piece_pack();
return ~BRACED_PREDICATE;
case 127:
YY_RULE_SETUP
-#line 870 "src/scan-gram.l"
+#line 882 "src/scan-gram.l"
{
STRING_FINISH;
loc->start = code_start;
BEGIN INITIAL;
#if 1
gram_piece_append("</PYACC_Text>");
- gram_piece_esc(gram_text, strlen(gram_text));
+ gram_piece_escape(gram_text, strlen(gram_text));
gram_piece_append("</PYACC_Section1_Prologue>");
gram_piece_pack();
return ~PROLOGUE;
}
YY_BREAK
case YY_STATE_EOF(SC_PROLOGUE):
-#line 886 "src/scan-gram.l"
+#line 898 "src/scan-gram.l"
unexpected_eof (code_start, "%}");
YY_BREAK
case YY_STATE_EOF(SC_EPILOGUE):
-#line 897 "src/scan-gram.l"
+#line 909 "src/scan-gram.l"
{
STRING_FINISH;
loc->start = code_start;
| By default, grow the string obstack with the input. |
`-----------------------------------------------------*/
case 128:
-#line 917 "src/scan-gram.l"
+#line 929 "src/scan-gram.l"
case 129:
/* rule 129 can match eol */
YY_RULE_SETUP
-#line 917 "src/scan-gram.l"
+#line 929 "src/scan-gram.l"
STRING_GROW;
YY_BREAK
case 130:
YY_RULE_SETUP
-#line 920 "src/scan-gram.l"
+#line 932 "src/scan-gram.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 2788 "src/scan-gram.c"
+#line 2800 "src/scan-gram.c"
case YY_STATE_EOF(SC_RETURN_BRACKETED_ID):
yyterminate();
/* %ok-for-header */
-#line 920 "src/scan-gram.l"
+#line 932 "src/scan-gram.l"
gram_lex_destroy ();
}
+/* Nick */
+void gram_piece_append(const char *str) {
+ gram_piece[gram_piece1++] = strdup(str);
+}
+
+void gram_piece_insert(int n, const char *str) {
+ memmove(gram_piece + n + 1, gram_piece + n, (gram_piece1 - n) * sizeof(char *));
+ gram_piece[n] = strdup(str);
+ ++gram_piece1;
+}
+
+void gram_piece_escape(const char *p, size_t n) {
+ size_t i, j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ case '>':
+ j += 4;
+ break;
+ case '&':
+ j += 5;
+ break;
+ default:
+ ++j;
+ break;
+ }
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ memcpy(q + j, "<", 4);
+ j += 4;
+ break;
+ case '>':
+ memcpy(q + j, ">", 4);
+ j += 4;
+ break;
+ case '&':
+ memcpy(q + j, "&", 5);
+ j += 5;
+ break;
+ default:
+ q[j++] = p[i];
+ break;
+ }
+ q[j] = 0;
+ gram_piece[gram_piece1++] = q;
+}
+
+void gram_piece_flush(size_t n) {
+ gram_piece_escape(gram_text, n);
+ gram_text += n;
+}
+
+void gram_piece_pack() {
+ int i;
+ size_t j = 0;
+ for (i = gram_piece0; i < gram_piece1; ++i)
+ j += strlen(gram_piece[i]);
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = gram_piece0; i < gram_piece1; ++i) {
+ int k = strlen(gram_piece[i]);
+ memcpy(q + j, gram_piece[i], k);
+ free(gram_piece[i]);
+ j += k;
+ }
+ q[j] = 0;
+ gram_piece[gram_piece0++] = q;
+ gram_piece1 = gram_piece0;
+}
+
+GRAM_LEX_DECL {
+ int result = real_gram_lex(val, loc);
+ if (result < 0)
+ return ~result;
+ gram_piece_pack();
+ gram_piece_escape(gram_text, strlen(gram_text));
+ gram_piece_pack();
+ return result;
+}
+
---- scan-gram.c.orig 2018-07-06 09:26:27.790569234 +1000
-+++ scan-gram.c 2018-07-06 09:54:48.426630707 +1000
-@@ -66,6 +66,73 @@
- /* %endif */
- /* end standard C headers. */
-
-+char gram_piece_temp[100];
-+char *gram_piece[10000];
-+int gram_piece0, gram_piece1;
-+void gram_piece_append(const char *str) {
-+ gram_piece[gram_piece1++] = strdup(str);
-+}
-+void gram_piece_insert(int n, const char *str) {
-+ memmove(gram_piece + n + 1, gram_piece + n, (gram_piece1 - n) * sizeof(char *));
-+ gram_piece[n] = strdup(str);
-+ ++gram_piece1;
-+}
-+void gram_piece_esc(const char *p, size_t n) {
-+ size_t i, j = 0;
-+ for (i = 0; i < n; ++i)
-+ switch (p[i]) {
-+ case '<':
-+ case '>':
-+ j += 4;
-+ break;
-+ case '&':
-+ j += 5;
-+ break;
-+ default:
-+ ++j;
-+ break;
-+ }
-+ char *q = malloc(j + 1);
-+ j = 0;
-+ for (i = 0; i < n; ++i)
-+ switch (p[i]) {
-+ case '<':
-+ memcpy(q + j, "<", 4);
-+ j += 4;
-+ break;
-+ case '>':
-+ memcpy(q + j, ">", 4);
-+ j += 4;
-+ break;
-+ case '&':
-+ memcpy(q + j, "&", 5);
-+ j += 5;
-+ break;
-+ default:
-+ q[j++] = p[i];
-+ break;
-+ }
-+ q[j] = 0;
-+ gram_piece[gram_piece1++] = q;
-+}
-+void gram_piece_pack() {
-+ int i;
-+ size_t j = 0;
-+ for (i = gram_piece0; i < gram_piece1; ++i)
-+ j += strlen(gram_piece[i]);
-+ char *q = malloc(j + 1);
-+ j = 0;
-+ for (i = gram_piece0; i < gram_piece1; ++i) {
-+ int k = strlen(gram_piece[i]);
-+ memcpy(q + j, gram_piece[i], k);
-+ free(gram_piece[i]);
-+ j += k;
-+ }
-+ q[j] = 0;
-+ gram_piece[gram_piece0++] = q;
-+ gram_piece1 = gram_piece0;
-+}
-+
- /* %if-c-or-c++ */
- /* flex integer type definitions */
-
-@@ -253,7 +320,21 @@
+--- scan-gram.c.orig 2018-07-26 20:25:41.122248234 +1000
++++ scan-gram.c 2018-07-26 20:27:30.298252975 +1000
+@@ -253,7 +253,16 @@
} \
while ( 0 )
+#if 1
-+#define flush() \
-+ do { \
-+ gram_piece_esc(yytext, yy_c_buf_p - yytext); \
-+ yytext = yy_c_buf_p; \
-+ } while (0)
+#define unput(c) \
+ do { \
-+ gram_piece_esc(yytext, yy_c_buf_p - yytext); \
++ gram_piece_escape(yytext, yy_c_buf_p - yytext); \
+ yyunput(c, (yytext_ptr)); \
+ yytext = yy_c_buf_p; \
+ } while (0)
#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
-@@ -1400,8 +1481,33 @@
-
- /** The main scanner function which does all the work.
- */
-+static int real_yylex(GRAM_STYPE *val, location *loc);
- YY_DECL
- {
-+ int result = real_yylex(val, loc);
-+ if (result < 0)
-+ return ~result;
-+ gram_piece_pack();
-+#if 1
-+ gram_piece_esc(yytext, strlen(yytext));
-+#else
-+ size_t n = strlen(yytext);
-+ if (n) {
-+ sprintf(gram_piece_temp, "<token value=\"%d\">", result);
-+ gram_piece_append(gram_piece_temp);
-+ gram_piece_esc(yytext, n);
-+ gram_piece_append("</token>");
-+ }
-+ else {
-+ sprintf(gram_piece_temp, "<token value=\"%d\" />", result);
-+ gram_piece_append(gram_piece_temp);
-+ }
-+#endif
-+ gram_piece_pack();
-+ return result;
-+}
-+static int real_yylex(GRAM_STYPE *val, location *loc)
-+{
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
-@@ -1480,7 +1586,12 @@
+@@ -1475,7 +1484,12 @@
gram__load_buffer_state( );
}
+#if 1
+ /* we do this so that "continue;" in an action works correctly */
-+ for (; ; gram_piece_esc(yytext, yy_c_buf_p - yytext))
++ for (; ; gram_piece_escape(yytext, yy_c_buf_p - yytext))
+#else
while ( 1 ) /* loops until end-of-file is reached */
+#endif
#include <src/scan-gram.h>
+#if 1
+#define YY_DECL static int real_gram_lex (GRAM_STYPE *val, location *loc)
+#else
#define YY_DECL GRAM_LEX_DECL
+#endif
/* Location of scanner cursor. */
static boundary scanner_cursor;
static void unexpected_eof (boundary, char const *);
static void unexpected_newline (boundary, char const *);
+/* Nick */
+char gram_piece_temp[100], *gram_piece[10000];
+int gram_piece0, gram_piece1;
+
+void gram_piece_append(const char *str);
+void gram_piece_insert(int n, const char *str);
+void gram_piece_escape(const char *p, size_t n);
+void gram_piece_flush(size_t n);
+void gram_piece_pack();
+
%}
/* A C-like comment in directives/rules. */
%x SC_YACC_COMMENT
BEGIN SC_AFTER_IDENTIFIER;
gram_piece_pack();
gram_piece_append("<PYACC_ID>");
- flush();
+ gram_piece_flush(strlen(yytext));
gram_piece_append("</PYACC_ID>");
gram_piece_pack();
}
gram_piece_pack();
sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
gram_piece_append(gram_piece_temp);
- gram_piece_esc(yytext, yy_c_buf_p - yytext);
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_Int>");
gram_piece_pack();
return ~INT;
gram_piece_pack();
sprintf(gram_piece_temp, "<PYACC_Int value=\"%d\">", val->integer);
gram_piece_append(gram_piece_temp);
- gram_piece_esc(yytext, yy_c_buf_p - yytext);
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_Int>");
gram_piece_pack();
return ~INT;
}
/* Characters. */
- "'" token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; gram_piece_pack(); gram_piece_append("<PYACC_Char>"); flush(); gram_piece_append("<PYACC_Text>");
+ "'" token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; gram_piece_pack(); gram_piece_append("<PYACC_Char>"); gram_piece_flush(strlen(yytext)); gram_piece_append("<PYACC_Text>");
/* Strings. */
- "\"" token_start = loc->start; BEGIN SC_ESCAPED_STRING; gram_piece_pack(); gram_piece_append("<PYACC_String>"); flush(); gram_piece_append("<PYACC_Text>");
+ "\"" token_start = loc->start; BEGIN SC_ESCAPED_STRING; gram_piece_pack(); gram_piece_append("<PYACC_String>"); gram_piece_flush(strlen(yytext)); gram_piece_append("<PYACC_Text>");
/* Prologue. */
- "%{" code_start = loc->start; BEGIN SC_PROLOGUE; gram_piece_pack(); gram_piece_append("<PYACC_Section1_Prologue>"); flush(); gram_piece_append("<PYACC_Text>");
+ "%{" code_start = loc->start; BEGIN SC_PROLOGUE; gram_piece_pack(); gram_piece_append("<PYACC_Section1_Prologue>"); gram_piece_flush(strlen(yytext)); gram_piece_append("<PYACC_Text>");
/* Code in between braces. */
"{" {
code_start = loc->start;
gram_piece_pack();
gram_piece_append("<PYACC_BracedPredicate>");
- /* flush all but the opening brace */
- gram_piece_esc(yytext, yy_c_buf_p - 1 - yytext);
- yytext = yy_c_buf_p - 1;
+ gram_piece_flush(strlen(yytext) - 1);
gram_piece_append("<PYACC_Text>");
BEGIN SC_PREDICATE;
}
BEGIN SC_TAG;
gram_piece_pack();
gram_piece_append("<PYACC_Tag>");
- flush();
+ gram_piece_flush(strlen(yytext));
gram_piece_append("<PYACC_Text>");
}
{
BEGIN SC_EPILOGUE;
gram_piece_pack();
- gram_piece_esc(yytext, strlen(yytext));
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_pack();
gram_piece_pack();
return ~PERCENT_PERCENT;
BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
*loc = id_loc;
#if 1
- gram_piece_esc(yytext, yy_c_buf_p - yytext);
+ gram_piece_escape(yytext, strlen(yytext));
return ~ID_COLON;
#else
return ID_COLON;
BEGIN INITIAL;
#if 1
gram_piece_append("</PYACC_Text>");
- gram_piece_esc(yytext, strlen(yytext));
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_String>");
gram_piece_pack();
return ~STRING;
BEGIN INITIAL;
#if 1
gram_piece_append("</PYACC_Text>");
- gram_piece_esc(yytext, strlen(yytext));
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_Char>");
gram_piece_pack();
return ~CHAR;
BEGIN INITIAL;
#if 1
gram_piece_append("</PYACC_Text");
- gram_piece_esc(yytext, strlen(yytext));
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_Tag>");
gram_piece_pack();
return ~TAG;
obstack_1grow (&obstack_for_string, c);
sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", (int)c);
gram_piece_append(gram_piece_temp);
- flush();
+ gram_piece_flush(strlen(yytext));
gram_piece_append("</PYACC_Text_Escape>");
}
}
obstack_1grow (&obstack_for_string, c);
sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", (int)c);
gram_piece_append(gram_piece_temp);
- flush();
+ gram_piece_flush(strlen(yytext));
gram_piece_append("</PYACC_Text_Escape>");
}
}
- \\a obstack_1grow (&obstack_for_string, '\a'); gram_piece_append("<PYACC_Text_Escape character=\"7\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
- \\b obstack_1grow (&obstack_for_string, '\b'); gram_piece_append("<PYACC_Text_Escape character=\"8\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
- \\f obstack_1grow (&obstack_for_string, '\f'); gram_piece_append("<PYACC_Text_Escape character=\"12\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
- \\n obstack_1grow (&obstack_for_string, '\n'); gram_piece_append("<PYACC_Text_Escape character=\"10\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
- \\r obstack_1grow (&obstack_for_string, '\r'); gram_piece_append("<PYACC_Text_Escape character=\"13\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
- \\t obstack_1grow (&obstack_for_string, '\t'); gram_piece_append("<PYACC_Text_Escape character=\"9\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
- \\v obstack_1grow (&obstack_for_string, '\v'); gram_piece_append("<PYACC_Text_Escape character=\"11\">"); flush(); gram_piece_append("</PYACC_Text_Escape>");
+ \\a obstack_1grow (&obstack_for_string, '\a'); gram_piece_append("<PYACC_Text_Escape character=\"7\">"); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
+ \\b obstack_1grow (&obstack_for_string, '\b'); gram_piece_append("<PYACC_Text_Escape character=\"8\">"); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
+ \\f obstack_1grow (&obstack_for_string, '\f'); gram_piece_append("<PYACC_Text_Escape character=\"12\">"); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
+ \\n obstack_1grow (&obstack_for_string, '\n'); gram_piece_append("<PYACC_Text_Escape character=\"10\">"); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
+ \\r obstack_1grow (&obstack_for_string, '\r'); gram_piece_append("<PYACC_Text_Escape character=\"13\">"); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
+ \\t obstack_1grow (&obstack_for_string, '\t'); gram_piece_append("<PYACC_Text_Escape character=\"9\">"); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
+ \\v obstack_1grow (&obstack_for_string, '\v'); gram_piece_append("<PYACC_Text_Escape character=\"11\">"); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
/* \\[\"\'?\\] would be shorter, but it confuses xgettext. */
- \\("\""|"'"|"?"|"\\") obstack_1grow (&obstack_for_string, yytext[1]); sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", yytext[1]); gram_piece_append(gram_piece_temp); flush(); gram_piece_append("</PYACC_Text_Escape>");
+ \\("\""|"'"|"?"|"\\") obstack_1grow (&obstack_for_string, yytext[1]); sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", yytext[1]); gram_piece_append(gram_piece_temp); gram_piece_flush(strlen(yytext)); gram_piece_append("</PYACC_Text_Escape>");
\\(u|U[0-9abcdefABCDEF]{4})[0-9abcdefABCDEF]{4} {
int c = convert_ucn_to_byte (yytext);
obstack_1grow (&obstack_for_string, c);
sprintf(gram_piece_temp, "<PYACC_Text_Escape character=\"%d\">", c);
gram_piece_append(gram_piece_temp);
- flush();
+ gram_piece_flush(strlen(yytext));
gram_piece_append("</PYACC_Text_Escape>");
}
}
val->code = last_string;
BEGIN INITIAL;
#if 1
- gram_piece_esc(yytext, strlen(yytext));
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_BracedCode>");
gram_piece_pack();
return ~BRACED_CODE;
val->code = last_string;
BEGIN INITIAL;
#if 1
- gram_piece_esc(yytext, strlen(yytext));
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_Text></PYACC_BracedPredicate>");
gram_piece_pack();
return ~BRACED_PREDICATE;
BEGIN INITIAL;
#if 1
gram_piece_append("</PYACC_Text>");
- gram_piece_esc(yytext, strlen(yytext));
+ gram_piece_escape(yytext, strlen(yytext));
gram_piece_append("</PYACC_Section1_Prologue>");
gram_piece_pack();
return ~PROLOGUE;
/* Reclaim Flex's buffers. */
yylex_destroy ();
}
+
+/* Nick */
+void gram_piece_append(const char *str) {
+ gram_piece[gram_piece1++] = strdup(str);
+}
+
+void gram_piece_insert(int n, const char *str) {
+ memmove(gram_piece + n + 1, gram_piece + n, (gram_piece1 - n) * sizeof(char *));
+ gram_piece[n] = strdup(str);
+ ++gram_piece1;
+}
+
+void gram_piece_escape(const char *p, size_t n) {
+ size_t i, j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ case '>':
+ j += 4;
+ break;
+ case '&':
+ j += 5;
+ break;
+ default:
+ ++j;
+ break;
+ }
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = 0; i < n; ++i)
+ switch (p[i]) {
+ case '<':
+ memcpy(q + j, "<", 4);
+ j += 4;
+ break;
+ case '>':
+ memcpy(q + j, ">", 4);
+ j += 4;
+ break;
+ case '&':
+ memcpy(q + j, "&", 5);
+ j += 5;
+ break;
+ default:
+ q[j++] = p[i];
+ break;
+ }
+ q[j] = 0;
+ gram_piece[gram_piece1++] = q;
+}
+
+void gram_piece_flush(size_t n) {
+ gram_piece_escape(yytext, n);
+ yytext += n;
+}
+
+void gram_piece_pack() {
+ int i;
+ size_t j = 0;
+ for (i = gram_piece0; i < gram_piece1; ++i)
+ j += strlen(gram_piece[i]);
+ char *q = malloc(j + 1);
+ j = 0;
+ for (i = gram_piece0; i < gram_piece1; ++i) {
+ int k = strlen(gram_piece[i]);
+ memcpy(q + j, gram_piece[i], k);
+ free(gram_piece[i]);
+ j += k;
+ }
+ q[j] = 0;
+ gram_piece[gram_piece0++] = q;
+ gram_piece1 = gram_piece0;
+}
+
+GRAM_LEX_DECL {
+ int result = real_gram_lex(val, loc);
+ if (result < 0)
+ return ~result;
+ gram_piece_pack();
+ gram_piece_escape(yytext, strlen(yytext));
+ gram_piece_pack();
+ return result;
+}
--- /dev/null
+--- scan-skel.c.orig 2018-07-26 20:25:29.798247742 +1000
++++ scan-skel.c 2018-07-26 20:28:18.702255077 +1000