Don't let --report affect XML output; always print all information.

Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
* src/conflicts.c (log_resolution): Implement.
* src/print-xml.c (print_core): Implement.
(print_state): Implement.
(print_xml): Implement.

* NEWS (2.3a+): Fix quotes.
* src/parse-gram.y (prologue_declaration): For consistency with -v,
don't let %verbose clear the list specified by --report.
This commit is contained in:
Joel E. Denny
2007-12-01 19:44:36 +00:00
parent 0f6cd9e3f8
commit ef1b427325
7 changed files with 210 additions and 202 deletions

View File

@@ -1,3 +1,17 @@
2007-12-01 Joel E. Denny <jdenny@ces.clemson.edu>
Don't let --report affect XML output; always print all information.
Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
* src/conflicts.c (log_resolution): Implement.
* src/print-xml.c (print_core): Implement.
(print_state): Implement.
(print_xml): Implement.
* NEWS (2.3a+): Fix quotes.
* src/parse-gram.y (prologue_declaration): For consistency with -v,
don't let %verbose clear the list specified by --report.
2007-11-26 Akim Demaille <akim@epita.fr> 2007-11-26 Akim Demaille <akim@epita.fr>
* data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl. * data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.

2
NEWS
View File

@@ -18,7 +18,7 @@ Changes in version 2.3a+ (????-??-??):
* Push Parsing * Push Parsing
Bison can now generate an LALR(1) parser in C with a push interface. That Bison can now generate an LALR(1) parser in C with a push interface. That
is, instead of invoking yyparse, which pulls tokens from `yylex', you can is, instead of invoking `yyparse', which pulls tokens from `yylex', you can
push one token at a time to the parser using `yypush_parse', which will push one token at a time to the parser using `yypush_parse', which will
return to the caller after processing each token. By default, the push return to the caller after processing each token. By default, the push
interface is disabled. Either of the following directives will enable it: interface is disabled. Either of the following directives will enable it:

View File

@@ -135,78 +135,78 @@ log_resolution (rule *r, symbol_number token,
} }
obstack_sgrow (&solved_conflicts_obstack, ".\n"); obstack_sgrow (&solved_conflicts_obstack, ".\n");
}
/* XML report */ /* XML report */
if (xml_flag) if (xml_flag)
{ {
/* The description of the resolution. */ /* The description of the resolution. */
switch (resolution) switch (resolution)
{ {
case shift_resolution: case shift_resolution:
case right_resolution: case right_resolution:
obstack_fgrow2 (&solved_conflicts_xml_obstack, obstack_fgrow2 (&solved_conflicts_xml_obstack,
" <resolution rule=\"%d\" symbol=\"%s\"" " <resolution rule=\"%d\" symbol=\"%s\""
" type=\"shift\">", " type=\"shift\">",
r->number, r->number,
xml_escape (symbols[token]->tag)); xml_escape (symbols[token]->tag));
break; break;
case reduce_resolution: case reduce_resolution:
case left_resolution: case left_resolution:
obstack_fgrow2 (&solved_conflicts_xml_obstack, obstack_fgrow2 (&solved_conflicts_xml_obstack,
" <resolution rule=\"%d\" symbol=\"%s\"" " <resolution rule=\"%d\" symbol=\"%s\""
" type=\"reduce\">", " type=\"reduce\">",
r->number, r->number,
xml_escape (symbols[token]->tag)); xml_escape (symbols[token]->tag));
break; break;
case nonassoc_resolution: case nonassoc_resolution:
obstack_fgrow2 (&solved_conflicts_xml_obstack, obstack_fgrow2 (&solved_conflicts_xml_obstack,
" <resolution rule=\"%d\" symbol=\"%s\"" " <resolution rule=\"%d\" symbol=\"%s\""
" type=\"error\">", " type=\"error\">",
r->number, r->number,
xml_escape (symbols[token]->tag)); xml_escape (symbols[token]->tag));
break; break;
} }
/* The reason. */ /* The reason. */
switch (resolution) switch (resolution)
{ {
case shift_resolution: case shift_resolution:
obstack_fgrow2 (&solved_conflicts_xml_obstack, obstack_fgrow2 (&solved_conflicts_xml_obstack,
"%s &lt; %s", "%s &lt; %s",
xml_escape_n (0, r->prec->tag), xml_escape_n (0, r->prec->tag),
xml_escape_n (1, symbols[token]->tag)); xml_escape_n (1, symbols[token]->tag));
break; break;
case reduce_resolution: case reduce_resolution:
obstack_fgrow2 (&solved_conflicts_xml_obstack, obstack_fgrow2 (&solved_conflicts_xml_obstack,
"%s &lt; %s", "%s &lt; %s",
xml_escape_n (0, symbols[token]->tag), xml_escape_n (0, symbols[token]->tag),
xml_escape_n (1, r->prec->tag)); xml_escape_n (1, r->prec->tag));
break; break;
case left_resolution: case left_resolution:
obstack_fgrow1 (&solved_conflicts_xml_obstack, obstack_fgrow1 (&solved_conflicts_xml_obstack,
"%%left %s", "%%left %s",
xml_escape (symbols[token]->tag)); xml_escape (symbols[token]->tag));
break; break;
case right_resolution: case right_resolution:
obstack_fgrow1 (&solved_conflicts_xml_obstack, obstack_fgrow1 (&solved_conflicts_xml_obstack,
"%%right %s", "%%right %s",
xml_escape (symbols[token]->tag)); xml_escape (symbols[token]->tag));
break; break;
case nonassoc_resolution: case nonassoc_resolution:
obstack_fgrow1 (&solved_conflicts_xml_obstack, obstack_fgrow1 (&solved_conflicts_xml_obstack,
"%%nonassoc %s", "%%nonassoc %s",
xml_escape (symbols[token]->tag)); xml_escape (symbols[token]->tag));
break; break;
} }
obstack_sgrow (&solved_conflicts_xml_obstack, "</resolution>\n"); obstack_sgrow (&solved_conflicts_xml_obstack, "</resolution>\n");
}
} }
} }

View File

@@ -69,7 +69,7 @@
/* Copy the first part of user declarations. */ /* Copy the first part of user declarations. */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1 "parse-gram.y" #line 1 "parse-gram.y"
/* Bison Grammar Parser -*- C -*- /* Bison Grammar Parser -*- C -*-
@@ -146,7 +146,7 @@ static int current_prec = 0;
#define YYTYPE_UINT8 uint_fast8_t #define YYTYPE_UINT8 uint_fast8_t
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 151 "parse-gram.c" #line 151 "parse-gram.c"
/* Enabling traces. */ /* Enabling traces. */
@@ -295,7 +295,7 @@ static int current_prec = 0;
typedef union YYSTYPE typedef union YYSTYPE
{ {
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 94 "parse-gram.y" #line 94 "parse-gram.y"
symbol *symbol; symbol *symbol;
@@ -309,7 +309,7 @@ typedef union YYSTYPE
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 314 "parse-gram.c" #line 314 "parse-gram.c"
} YYSTYPE; } YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
@@ -334,7 +334,7 @@ typedef struct YYLTYPE
/* Copy the second part of user declarations. */ /* Copy the second part of user declarations. */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 339 "parse-gram.c" #line 339 "parse-gram.c"
#ifdef short #ifdef short
@@ -1020,146 +1020,146 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
{ {
case 3: /* "\"string\"" */ case 3: /* "\"string\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 182 "parse-gram.y" #line 182 "parse-gram.y"
{ fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); }; { fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1029 "parse-gram.c" #line 1029 "parse-gram.c"
break; break;
case 4: /* "\"integer\"" */ case 4: /* "\"integer\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 193 "parse-gram.y" #line 193 "parse-gram.y"
{ fprintf (stderr, "%d", (yyvaluep->integer)); }; { fprintf (stderr, "%d", (yyvaluep->integer)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1038 "parse-gram.c" #line 1038 "parse-gram.c"
break; break;
case 43: /* "\"{...}\"" */ case 43: /* "\"{...}\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 184 "parse-gram.y" #line 184 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); }; { fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1047 "parse-gram.c" #line 1047 "parse-gram.c"
break; break;
case 44: /* "\"char\"" */ case 44: /* "\"char\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 176 "parse-gram.y" #line 176 "parse-gram.y"
{ fputs (char_name ((yyvaluep->character)), stderr); }; { fputs (char_name ((yyvaluep->character)), stderr); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1056 "parse-gram.c" #line 1056 "parse-gram.c"
break; break;
case 45: /* "\"epilogue\"" */ case 45: /* "\"epilogue\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 184 "parse-gram.y" #line 184 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1065 "parse-gram.c" #line 1065 "parse-gram.c"
break; break;
case 47: /* "\"identifier\"" */ case 47: /* "\"identifier\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 189 "parse-gram.y" #line 189 "parse-gram.y"
{ fputs ((yyvaluep->uniqstr), stderr); }; { fputs ((yyvaluep->uniqstr), stderr); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1074 "parse-gram.c" #line 1074 "parse-gram.c"
break; break;
case 48: /* "\"identifier:\"" */ case 48: /* "\"identifier:\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 190 "parse-gram.y" #line 190 "parse-gram.y"
{ fprintf (stderr, "%s:", (yyvaluep->uniqstr)); }; { fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1083 "parse-gram.c" #line 1083 "parse-gram.c"
break; break;
case 51: /* "\"%{...%}\"" */ case 51: /* "\"%{...%}\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 184 "parse-gram.y" #line 184 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1092 "parse-gram.c" #line 1092 "parse-gram.c"
break; break;
case 53: /* "\"type\"" */ case 53: /* "\"type\"" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 188 "parse-gram.y" #line 188 "parse-gram.y"
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); }; { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1101 "parse-gram.c" #line 1101 "parse-gram.c"
break; break;
case 80: /* "variable" */ case 80: /* "variable" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 189 "parse-gram.y" #line 189 "parse-gram.y"
{ fputs ((yyvaluep->uniqstr), stderr); }; { fputs ((yyvaluep->uniqstr), stderr); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1110 "parse-gram.c" #line 1110 "parse-gram.c"
break; break;
case 81: /* "content.opt" */ case 81: /* "content.opt" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 184 "parse-gram.y" #line 184 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1119 "parse-gram.c" #line 1119 "parse-gram.c"
break; break;
case 82: /* "braceless" */ case 82: /* "braceless" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 184 "parse-gram.y" #line 184 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1128 "parse-gram.c" #line 1128 "parse-gram.c"
break; break;
case 83: /* "id" */ case 83: /* "id" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 196 "parse-gram.y" #line 196 "parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); }; { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1137 "parse-gram.c" #line 1137 "parse-gram.c"
break; break;
case 84: /* "id_colon" */ case 84: /* "id_colon" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 197 "parse-gram.y" #line 197 "parse-gram.y"
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); }; { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1146 "parse-gram.c" #line 1146 "parse-gram.c"
break; break;
case 85: /* "symbol" */ case 85: /* "symbol" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 196 "parse-gram.y" #line 196 "parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); }; { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1155 "parse-gram.c" #line 1155 "parse-gram.c"
break; break;
case 86: /* "string_as_id" */ case 86: /* "string_as_id" */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 196 "parse-gram.y" #line 196 "parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); }; { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1164 "parse-gram.c" #line 1164 "parse-gram.c"
break; break;
default: default:
@@ -1674,7 +1674,7 @@ YYLTYPE yylloc;
/* User initialization code. */ /* User initialization code. */
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 86 "parse-gram.y" #line 86 "parse-gram.y"
{ {
/* Bison's grammar can initial empty locations, hence a default /* Bison's grammar can initial empty locations, hence a default
@@ -1683,7 +1683,7 @@ YYLTYPE yylloc;
boundary_set (&yylloc.end, current_file, 1, 1); boundary_set (&yylloc.end, current_file, 1, 1);
} }
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 1688 "parse-gram.c" #line 1688 "parse-gram.c"
yylsp[0] = yylloc; yylsp[0] = yylloc;
goto yysetstate; goto yysetstate;
@@ -1869,7 +1869,7 @@ yyreduce:
{ {
case 6: case 6:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 220 "parse-gram.y" #line 220 "parse-gram.y"
{ {
code_props plain_code; code_props plain_code;
@@ -1884,14 +1884,14 @@ yyreduce:
case 7: case 7:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 229 "parse-gram.y" #line 229 "parse-gram.y"
{ debug_flag = true; } { debug_flag = true; }
break; break;
case 8: case 8:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 231 "parse-gram.y" #line 231 "parse-gram.y"
{ {
muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars)); muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars));
@@ -1900,14 +1900,14 @@ yyreduce:
case 9: case 9:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 234 "parse-gram.y" #line 234 "parse-gram.y"
{ defines_flag = true; } { defines_flag = true; }
break; break;
case 10: case 10:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 236 "parse-gram.y" #line 236 "parse-gram.y"
{ {
defines_flag = true; defines_flag = true;
@@ -1917,42 +1917,42 @@ yyreduce:
case 11: case 11:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 240 "parse-gram.y" #line 240 "parse-gram.y"
{ error_verbose = true; } { error_verbose = true; }
break; break;
case 12: case 12:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 241 "parse-gram.y" #line 241 "parse-gram.y"
{ expected_sr_conflicts = (yyvsp[(2) - (2)].integer); } { expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
break; break;
case 13: case 13:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 242 "parse-gram.y" #line 242 "parse-gram.y"
{ expected_rr_conflicts = (yyvsp[(2) - (2)].integer); } { expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
break; break;
case 14: case 14:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 243 "parse-gram.y" #line 243 "parse-gram.y"
{ spec_file_prefix = (yyvsp[(2) - (2)].chars); } { spec_file_prefix = (yyvsp[(2) - (2)].chars); }
break; break;
case 15: case 15:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 244 "parse-gram.y" #line 244 "parse-gram.y"
{ spec_file_prefix = (yyvsp[(3) - (3)].chars); } { spec_file_prefix = (yyvsp[(3) - (3)].chars); }
break; break;
case 16: case 16:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 246 "parse-gram.y" #line 246 "parse-gram.y"
{ {
nondeterministic_parser = true; nondeterministic_parser = true;
@@ -1962,7 +1962,7 @@ yyreduce:
case 17: case 17:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 251 "parse-gram.y" #line 251 "parse-gram.y"
{ {
code_props action; code_props action;
@@ -1976,77 +1976,77 @@ yyreduce:
case 18: case 18:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 259 "parse-gram.y" #line 259 "parse-gram.y"
{ language_argmatch ((yyvsp[(2) - (2)].chars), 1, &(yylsp[(1) - (2)])); } { language_argmatch ((yyvsp[(2) - (2)].chars), 1, &(yylsp[(1) - (2)])); }
break; break;
case 19: case 19:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 260 "parse-gram.y" #line 260 "parse-gram.y"
{ add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); } { add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
break; break;
case 20: case 20:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 261 "parse-gram.y" #line 261 "parse-gram.y"
{ locations_flag = true; } { locations_flag = true; }
break; break;
case 21: case 21:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 262 "parse-gram.y" #line 262 "parse-gram.y"
{ spec_name_prefix = (yyvsp[(2) - (2)].chars); } { spec_name_prefix = (yyvsp[(2) - (2)].chars); }
break; break;
case 22: case 22:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 263 "parse-gram.y" #line 263 "parse-gram.y"
{ spec_name_prefix = (yyvsp[(3) - (3)].chars); } { spec_name_prefix = (yyvsp[(3) - (3)].chars); }
break; break;
case 23: case 23:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 264 "parse-gram.y" #line 264 "parse-gram.y"
{ no_lines_flag = true; } { no_lines_flag = true; }
break; break;
case 24: case 24:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 265 "parse-gram.y" #line 265 "parse-gram.y"
{ nondeterministic_parser = true; } { nondeterministic_parser = true; }
break; break;
case 25: case 25:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 266 "parse-gram.y" #line 266 "parse-gram.y"
{ spec_outfile = (yyvsp[(2) - (2)].chars); } { spec_outfile = (yyvsp[(2) - (2)].chars); }
break; break;
case 26: case 26:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 267 "parse-gram.y" #line 267 "parse-gram.y"
{ spec_outfile = (yyvsp[(3) - (3)].chars); } { spec_outfile = (yyvsp[(3) - (3)].chars); }
break; break;
case 27: case 27:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 268 "parse-gram.y" #line 268 "parse-gram.y"
{ add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); } { add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
break; break;
case 28: case 28:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 270 "parse-gram.y" #line 270 "parse-gram.y"
{ {
/* %pure-parser is deprecated in favor of `%define api.pure', so use /* %pure-parser is deprecated in favor of `%define api.pure', so use
@@ -2064,14 +2064,14 @@ yyreduce:
case 29: case 29:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 282 "parse-gram.y" #line 282 "parse-gram.y"
{ version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); } { version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
break; break;
case 30: case 30:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 284 "parse-gram.y" #line 284 "parse-gram.y"
{ {
char const *skeleton_user = (yyvsp[(2) - (2)].chars); char const *skeleton_user = (yyvsp[(2) - (2)].chars);
@@ -2100,28 +2100,28 @@ yyreduce:
case 31: case 31:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 307 "parse-gram.y" #line 307 "parse-gram.y"
{ token_table_flag = true; } { token_table_flag = true; }
break; break;
case 32: case 32:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 308 "parse-gram.y" #line 308 "parse-gram.y"
{ report_flag = report_states; } { report_flag |= report_states; }
break; break;
case 33: case 33:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 309 "parse-gram.y" #line 309 "parse-gram.y"
{ yacc_flag = true; } { yacc_flag = true; }
break; break;
case 37: case 37:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 317 "parse-gram.y" #line 317 "parse-gram.y"
{ {
grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
@@ -2130,7 +2130,7 @@ yyreduce:
case 38: case 38:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 321 "parse-gram.y" #line 321 "parse-gram.y"
{ {
symbol_list *list; symbol_list *list;
@@ -2142,7 +2142,7 @@ yyreduce:
case 39: case 39:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 328 "parse-gram.y" #line 328 "parse-gram.y"
{ {
symbol_list *list; symbol_list *list;
@@ -2154,7 +2154,7 @@ yyreduce:
case 40: case 40:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 335 "parse-gram.y" #line 335 "parse-gram.y"
{ {
default_prec = true; default_prec = true;
@@ -2163,7 +2163,7 @@ yyreduce:
case 41: case 41:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 339 "parse-gram.y" #line 339 "parse-gram.y"
{ {
default_prec = false; default_prec = false;
@@ -2172,7 +2172,7 @@ yyreduce:
case 42: case 42:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 343 "parse-gram.y" #line 343 "parse-gram.y"
{ {
/* Do not invoke muscle_percent_code_grow here since it invokes /* Do not invoke muscle_percent_code_grow here since it invokes
@@ -2184,7 +2184,7 @@ yyreduce:
case 43: case 43:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 350 "parse-gram.y" #line 350 "parse-gram.y"
{ {
muscle_percent_code_grow ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)])); muscle_percent_code_grow ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
@@ -2194,21 +2194,21 @@ yyreduce:
case 44: case 44:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 364 "parse-gram.y" #line 364 "parse-gram.y"
{} {}
break; break;
case 45: case 45:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 365 "parse-gram.y" #line 365 "parse-gram.y"
{ muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); } { muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
break; break;
case 46: case 46:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 370 "parse-gram.y" #line 370 "parse-gram.y"
{ {
union_seen = true; union_seen = true;
@@ -2219,14 +2219,14 @@ yyreduce:
case 47: case 47:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 381 "parse-gram.y" #line 381 "parse-gram.y"
{ current_class = nterm_sym; } { current_class = nterm_sym; }
break; break;
case 48: case 48:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 382 "parse-gram.y" #line 382 "parse-gram.y"
{ {
current_class = unknown_sym; current_class = unknown_sym;
@@ -2236,14 +2236,14 @@ yyreduce:
case 49: case 49:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 386 "parse-gram.y" #line 386 "parse-gram.y"
{ current_class = token_sym; } { current_class = token_sym; }
break; break;
case 50: case 50:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 387 "parse-gram.y" #line 387 "parse-gram.y"
{ {
current_class = unknown_sym; current_class = unknown_sym;
@@ -2253,7 +2253,7 @@ yyreduce:
case 51: case 51:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 392 "parse-gram.y" #line 392 "parse-gram.y"
{ {
symbol_list *list; symbol_list *list;
@@ -2266,7 +2266,7 @@ yyreduce:
case 52: case 52:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 403 "parse-gram.y" #line 403 "parse-gram.y"
{ {
symbol_list *list; symbol_list *list;
@@ -2283,98 +2283,98 @@ yyreduce:
case 53: case 53:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 417 "parse-gram.y" #line 417 "parse-gram.y"
{ (yyval.assoc) = left_assoc; } { (yyval.assoc) = left_assoc; }
break; break;
case 54: case 54:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 418 "parse-gram.y" #line 418 "parse-gram.y"
{ (yyval.assoc) = right_assoc; } { (yyval.assoc) = right_assoc; }
break; break;
case 55: case 55:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 419 "parse-gram.y" #line 419 "parse-gram.y"
{ (yyval.assoc) = non_assoc; } { (yyval.assoc) = non_assoc; }
break; break;
case 56: case 56:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 423 "parse-gram.y" #line 423 "parse-gram.y"
{ current_type = NULL; } { current_type = NULL; }
break; break;
case 57: case 57:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 424 "parse-gram.y" #line 424 "parse-gram.y"
{ current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; } { current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
break; break;
case 58: case 58:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 430 "parse-gram.y" #line 430 "parse-gram.y"
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); } { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
break; break;
case 59: case 59:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 432 "parse-gram.y" #line 432 "parse-gram.y"
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); } { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
break; break;
case 60: case 60:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 436 "parse-gram.y" #line 436 "parse-gram.y"
{ (yyval.list) = (yyvsp[(1) - (1)].list); } { (yyval.list) = (yyvsp[(1) - (1)].list); }
break; break;
case 61: case 61:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 437 "parse-gram.y" #line 437 "parse-gram.y"
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); } { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
break; break;
case 62: case 62:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 441 "parse-gram.y" #line 441 "parse-gram.y"
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); } { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
break; break;
case 63: case 63:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 442 "parse-gram.y" #line 442 "parse-gram.y"
{ (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); } { (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
break; break;
case 64: case 64:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 443 "parse-gram.y" #line 443 "parse-gram.y"
{ (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); } { (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
break; break;
case 65: case 65:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 444 "parse-gram.y" #line 444 "parse-gram.y"
{ (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); } { (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
break; break;
case 66: case 66:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 450 "parse-gram.y" #line 450 "parse-gram.y"
{ {
current_type = (yyvsp[(1) - (1)].uniqstr); current_type = (yyvsp[(1) - (1)].uniqstr);
@@ -2384,7 +2384,7 @@ yyreduce:
case 67: case 67:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 455 "parse-gram.y" #line 455 "parse-gram.y"
{ {
symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true); symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
@@ -2394,7 +2394,7 @@ yyreduce:
case 68: case 68:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 460 "parse-gram.y" #line 460 "parse-gram.y"
{ {
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true); symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
@@ -2405,7 +2405,7 @@ yyreduce:
case 69: case 69:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 466 "parse-gram.y" #line 466 "parse-gram.y"
{ {
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true); symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
@@ -2416,7 +2416,7 @@ yyreduce:
case 70: case 70:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 472 "parse-gram.y" #line 472 "parse-gram.y"
{ {
symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true); symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
@@ -2428,7 +2428,7 @@ yyreduce:
case 77: case 77:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 502 "parse-gram.y" #line 502 "parse-gram.y"
{ {
yyerrok; yyerrok;
@@ -2437,77 +2437,77 @@ yyreduce:
case 78: case 78:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 508 "parse-gram.y" #line 508 "parse-gram.y"
{ current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); } { current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
break; break;
case 80: case 80:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 512 "parse-gram.y" #line 512 "parse-gram.y"
{ grammar_current_rule_end ((yylsp[(1) - (1)])); } { grammar_current_rule_end ((yylsp[(1) - (1)])); }
break; break;
case 81: case 81:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 513 "parse-gram.y" #line 513 "parse-gram.y"
{ grammar_current_rule_end ((yylsp[(3) - (3)])); } { grammar_current_rule_end ((yylsp[(3) - (3)])); }
break; break;
case 83: case 83:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 519 "parse-gram.y" #line 519 "parse-gram.y"
{ grammar_current_rule_begin (current_lhs, current_lhs_location); } { grammar_current_rule_begin (current_lhs, current_lhs_location); }
break; break;
case 84: case 84:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 521 "parse-gram.y" #line 521 "parse-gram.y"
{ grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); } { grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
break; break;
case 85: case 85:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 523 "parse-gram.y" #line 523 "parse-gram.y"
{ grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); } { grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
break; break;
case 86: case 86:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 525 "parse-gram.y" #line 525 "parse-gram.y"
{ grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); } { grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
break; break;
case 87: case 87:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 527 "parse-gram.y" #line 527 "parse-gram.y"
{ grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); } { grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
break; break;
case 88: case 88:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 529 "parse-gram.y" #line 529 "parse-gram.y"
{ grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); } { grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
break; break;
case 90: case 90:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 539 "parse-gram.y" #line 539 "parse-gram.y"
{ (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); } { (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
break; break;
case 91: case 91:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 545 "parse-gram.y" #line 545 "parse-gram.y"
{ {
(yyval.chars) = ""; (yyval.chars) = "";
@@ -2516,7 +2516,7 @@ yyreduce:
case 93: case 93:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 558 "parse-gram.y" #line 558 "parse-gram.y"
{ {
code_props plain_code; code_props plain_code;
@@ -2530,14 +2530,14 @@ yyreduce:
case 94: case 94:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 578 "parse-gram.y" #line 578 "parse-gram.y"
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); } { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
break; break;
case 95: case 95:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 580 "parse-gram.y" #line 580 "parse-gram.y"
{ {
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)])); (yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
@@ -2548,14 +2548,14 @@ yyreduce:
case 96: case 96:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 588 "parse-gram.y" #line 588 "parse-gram.y"
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); } { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
break; break;
case 99: case 99:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 600 "parse-gram.y" #line 600 "parse-gram.y"
{ {
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)])); (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
@@ -2565,7 +2565,7 @@ yyreduce:
case 101: case 101:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 609 "parse-gram.y" #line 609 "parse-gram.y"
{ {
code_props plain_code; code_props plain_code;
@@ -2579,7 +2579,7 @@ yyreduce:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 2584 "parse-gram.c" #line 2584 "parse-gram.c"
default: break; default: break;
} }
@@ -2798,7 +2798,7 @@ yyreturn:
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 619 "parse-gram.y" #line 619 "parse-gram.y"

View File

@@ -160,7 +160,7 @@
typedef union YYSTYPE typedef union YYSTYPE
{ {
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 94 "parse-gram.y" #line 94 "parse-gram.y"
symbol *symbol; symbol *symbol;
@@ -174,7 +174,7 @@ typedef union YYSTYPE
/* Line 1542 of yacc.c */ /* Line 22 of yacc.c */
#line 179 "parse-gram.h" #line 179 "parse-gram.h"
} YYSTYPE; } YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1

View File

@@ -305,7 +305,7 @@ prologue_declaration:
skeleton_arg (skeleton_user, 1, &@1); skeleton_arg (skeleton_user, 1, &@1);
} }
| "%token-table" { token_table_flag = true; } | "%token-table" { token_table_flag = true; }
| "%verbose" { report_flag = report_states; } | "%verbose" { report_flag |= report_states; }
| "%yacc" { yacc_flag = true; } | "%yacc" { yacc_flag = true; }
| /*FIXME: Err? What is this horror doing here? */ ";" | /*FIXME: Err? What is this horror doing here? */ ";"
; ;

View File

@@ -63,12 +63,9 @@ print_core (FILE *out, int level, state *s)
size_t snritems = s->nitems; size_t snritems = s->nitems;
/* Output all the items of a state, not only its kernel. */ /* Output all the items of a state, not only its kernel. */
if (report_flag & report_itemsets) closure (sitems, snritems);
{ sitems = itemset;
closure (sitems, snritems); snritems = nitemset;
sitems = itemset;
snritems = nitemset;
}
if (!snritems) { if (!snritems) {
xml_puts (out, level, "<itemset/>"); xml_puts (out, level, "<itemset/>");
@@ -93,8 +90,7 @@ print_core (FILE *out, int level, state *s)
sp = rules[r].rhs; sp = rules[r].rhs;
/* Display the lookahead tokens? */ /* Display the lookahead tokens? */
if (report_flag & report_lookahead_tokens if (item_number_is_rule_number (*sp1))
&& item_number_is_rule_number (*sp1))
{ {
reductions *reds = s->reductions; reductions *reds = s->reductions;
int red = state_reduction_find (s, &rules[r]); int red = state_reduction_find (s, &rules[r]);
@@ -365,7 +361,7 @@ print_state (FILE *out, int level, state *s)
xml_printf (out, level, "<state number=\"%d\">", s->number); xml_printf (out, level, "<state number=\"%d\">", s->number);
print_core (out, level + 1, s); print_core (out, level + 1, s);
print_actions (out, level + 1, s); print_actions (out, level + 1, s);
if ((report_flag & report_solved_conflicts) && s->solved_conflicts_xml) if (s->solved_conflicts_xml)
{ {
xml_puts (out, level + 1, "<solved-conflicts>"); xml_puts (out, level + 1, "<solved-conflicts>");
fputs (s->solved_conflicts_xml, out); fputs (s->solved_conflicts_xml, out);
@@ -563,8 +559,7 @@ print_xml (void)
/* print grammar */ /* print grammar */
print_grammar (out, level + 1); print_grammar (out, level + 1);
if (report_flag & report_itemsets) new_closure (nritems);
new_closure (nritems);
no_reduce_set = bitset_create (ntokens, BITSET_FIXED); no_reduce_set = bitset_create (ntokens, BITSET_FIXED);
/* print automaton */ /* print automaton */
@@ -575,8 +570,7 @@ print_xml (void)
xml_puts (out, level + 1, "</automaton>"); xml_puts (out, level + 1, "</automaton>");
bitset_free (no_reduce_set); bitset_free (no_reduce_set);
if (report_flag & report_itemsets) free_closure ();
free_closure ();
xml_puts (out, 0, "</bison-xml-report>"); xml_puts (out, 0, "</bison-xml-report>");