mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-11 21:33:04 +00:00
Rename "default rule" to "default reduction".
This includes changing variable names in code, changing comments, and renaming %define lr.default_rules to %define lr.default_reductions. * NEWS (2.5): Update IELR documentation. * data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Adjust YYDEFACT and yydefact_ documentation. * doc/bison.texinfo (Decl Summary): Adjust lr.default_reductions and lr.type documentation. Make some other wording improvements. (Glossary): Adjust cross-references and Default Reduction definition. * src/lalr.c (state_lookahead_tokens_count): Adjust code. Remove a confusing comment pointed out by Akim Demaille. (initialize_LA): Adjust code. * src/print-xml.c (print_reductions): Adjust code. * src/print.c (print_reductions): Adjust code. * src/reader.c (reader): Adjust code. * src/tables.c (action_row): Adjust code. (token_actions): Adjust code. * src/tables.h: Adjust YYDEFACT documentation. * tests/input.at (%define lr.default_rules invalid values): Rename test group to... (%define lr.default_reductions invalid values): ... this, and update grammar file and expected output. * tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): Rename to... (AT_TEST_LR_DEFAULT_REDUCTIONS): ... this, and update.
This commit is contained in:
28
src/lalr.c
28
src/lalr.c
@@ -328,7 +328,7 @@ compute_lookahead_tokens (void)
|
||||
`----------------------------------------------------*/
|
||||
|
||||
static int
|
||||
state_lookahead_tokens_count (state *s, bool default_rule_only_for_accept)
|
||||
state_lookahead_tokens_count (state *s, bool default_reduction_only_for_accept)
|
||||
{
|
||||
int n_lookahead_tokens = 0;
|
||||
reductions *rp = s->reductions;
|
||||
@@ -344,14 +344,14 @@ state_lookahead_tokens_count (state *s, bool default_rule_only_for_accept)
|
||||
/* We need a lookahead either to distinguish different reductions
|
||||
(i.e., there are two or more), or to distinguish a reduction from a
|
||||
shift. Otherwise, it is straightforward, and the state is
|
||||
`consistent'. However, for states that have any rules, treat only
|
||||
the accepting state as consistent (since there is never a lookahead
|
||||
token that makes sense there, and so no lookahead token should be
|
||||
read) if the user has otherwise disabled default rules. */
|
||||
`consistent'. However, treat only the accepting state as
|
||||
consistent (because there is never a lookahead token that makes
|
||||
sense there, and so no lookahead token should be read) if the user
|
||||
has otherwise disabled default reductions. */
|
||||
if (rp->num > 1
|
||||
|| (rp->num == 1 && sp->num && TRANSITION_IS_SHIFT (sp, 0))
|
||||
|| (rp->num == 1 && rp->rules[0]->number != 0
|
||||
&& default_rule_only_for_accept))
|
||||
&& default_reduction_only_for_accept))
|
||||
n_lookahead_tokens += rp->num;
|
||||
else
|
||||
s->consistent = 1;
|
||||
@@ -369,18 +369,21 @@ initialize_LA (void)
|
||||
{
|
||||
state_number i;
|
||||
bitsetv pLA;
|
||||
bool default_rule_only_for_accept;
|
||||
bool default_reduction_only_for_accept;
|
||||
{
|
||||
char *default_rules = muscle_percent_define_get ("lr.default_rules");
|
||||
default_rule_only_for_accept = 0 == strcmp (default_rules, "accepting");
|
||||
free (default_rules);
|
||||
char *default_reductions =
|
||||
muscle_percent_define_get ("lr.default_reductions");
|
||||
default_reduction_only_for_accept =
|
||||
0 == strcmp (default_reductions, "accepting");
|
||||
free (default_reductions);
|
||||
}
|
||||
|
||||
/* Compute the total number of reductions requiring a lookahead. */
|
||||
nLA = 0;
|
||||
for (i = 0; i < nstates; i++)
|
||||
nLA +=
|
||||
state_lookahead_tokens_count (states[i], default_rule_only_for_accept);
|
||||
state_lookahead_tokens_count (states[i],
|
||||
default_reduction_only_for_accept);
|
||||
/* Avoid having to special case 0. */
|
||||
if (!nLA)
|
||||
nLA = 1;
|
||||
@@ -392,7 +395,8 @@ initialize_LA (void)
|
||||
for (i = 0; i < nstates; i++)
|
||||
{
|
||||
int count =
|
||||
state_lookahead_tokens_count (states[i], default_rule_only_for_accept);
|
||||
state_lookahead_tokens_count (states[i],
|
||||
default_reduction_only_for_accept);
|
||||
if (count)
|
||||
{
|
||||
states[i]->reductions->lookahead_tokens = pLA;
|
||||
|
||||
308
src/parse-gram.c
308
src/parse-gram.c
@@ -1,10 +1,9 @@
|
||||
|
||||
/* A Bison parser, made by GNU Bison 2.4.4-738cd. */
|
||||
/* A Bison parser, made by GNU Bison 2.4.1.49-783b. */
|
||||
|
||||
/* Skeleton implementation for Bison's Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
||||
2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -46,7 +45,7 @@
|
||||
#define YYBISON 1
|
||||
|
||||
/* Bison version. */
|
||||
#define YYBISON_VERSION "2.4.4-738cd"
|
||||
#define YYBISON_VERSION "2.4.1.49-783b"
|
||||
|
||||
/* Skeleton name. */
|
||||
#define YYSKELETON_NAME "yacc.c"
|
||||
@@ -75,7 +74,7 @@
|
||||
|
||||
/* Copy the first part of user declarations. */
|
||||
|
||||
/* Line 189 of yacc.c */
|
||||
/* Line 190 of yacc.c */
|
||||
#line 1 "parse-gram.y"
|
||||
/* Bison Grammar Parser -*- C -*-
|
||||
|
||||
@@ -150,8 +149,8 @@ static int current_prec = 0;
|
||||
#define YYTYPE_UINT8 uint_fast8_t
|
||||
|
||||
|
||||
/* Line 189 of yacc.c */
|
||||
#line 155 "parse-gram.c"
|
||||
/* Line 190 of yacc.c */
|
||||
#line 154 "parse-gram.c"
|
||||
|
||||
/* Enabling traces. */
|
||||
#ifndef YYDEBUG
|
||||
@@ -299,7 +298,7 @@ static int current_prec = 0;
|
||||
typedef union YYSTYPE
|
||||
{
|
||||
|
||||
/* Line 222 of yacc.c */
|
||||
/* Line 223 of yacc.c */
|
||||
#line 92 "parse-gram.y"
|
||||
|
||||
symbol *symbol;
|
||||
@@ -313,8 +312,8 @@ typedef union YYSTYPE
|
||||
|
||||
|
||||
|
||||
/* Line 222 of yacc.c */
|
||||
#line 318 "parse-gram.c"
|
||||
/* Line 223 of yacc.c */
|
||||
#line 317 "parse-gram.c"
|
||||
} YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
@@ -338,8 +337,8 @@ typedef struct YYLTYPE
|
||||
/* Copy the second part of user declarations. */
|
||||
|
||||
|
||||
/* Line 264 of yacc.c */
|
||||
#line 343 "parse-gram.c"
|
||||
/* Line 265 of yacc.c */
|
||||
#line 342 "parse-gram.c"
|
||||
|
||||
#ifdef short
|
||||
# undef short
|
||||
@@ -754,8 +753,8 @@ static const yytype_uint8 yyr2[] =
|
||||
1, 1, 1, 1, 0, 2
|
||||
};
|
||||
|
||||
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
|
||||
STATE-NUM when YYTABLE doesn't specify something else to do. Zero
|
||||
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
|
||||
Performed when YYTABLE doesn't specify something else to do. Zero
|
||||
means the default is an error. */
|
||||
static const yytype_uint8 yydefact[] =
|
||||
{
|
||||
@@ -1029,147 +1028,147 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
|
||||
{
|
||||
case 3: /* "\"string\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 180 "parse-gram.y"
|
||||
{ fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1038 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1037 "parse-gram.c"
|
||||
break;
|
||||
case 4: /* "\"integer\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 191 "parse-gram.y"
|
||||
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1047 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1046 "parse-gram.c"
|
||||
break;
|
||||
case 43: /* "\"{...}\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 182 "parse-gram.y"
|
||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1056 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1055 "parse-gram.c"
|
||||
break;
|
||||
case 44: /* "\"char\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 174 "parse-gram.y"
|
||||
{ fputs (char_name ((yyvaluep->character)), stderr); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1065 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1064 "parse-gram.c"
|
||||
break;
|
||||
case 45: /* "\"epilogue\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 182 "parse-gram.y"
|
||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1074 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1073 "parse-gram.c"
|
||||
break;
|
||||
case 47: /* "\"identifier\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 187 "parse-gram.y"
|
||||
{ fputs ((yyvaluep->uniqstr), stderr); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1083 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1082 "parse-gram.c"
|
||||
break;
|
||||
case 48: /* "\"identifier:\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 188 "parse-gram.y"
|
||||
{ fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1092 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1091 "parse-gram.c"
|
||||
break;
|
||||
case 51: /* "\"%{...%}\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 182 "parse-gram.y"
|
||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1101 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1100 "parse-gram.c"
|
||||
break;
|
||||
case 53: /* "\"type\"" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 186 "parse-gram.y"
|
||||
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1110 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1109 "parse-gram.c"
|
||||
break;
|
||||
case 82: /* "variable" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 187 "parse-gram.y"
|
||||
{ fputs ((yyvaluep->uniqstr), stderr); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1119 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1118 "parse-gram.c"
|
||||
break;
|
||||
case 83: /* "content.opt" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 182 "parse-gram.y"
|
||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1128 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1127 "parse-gram.c"
|
||||
break;
|
||||
case 84: /* "braceless" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 182 "parse-gram.y"
|
||||
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1137 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1136 "parse-gram.c"
|
||||
break;
|
||||
case 85: /* "id" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 194 "parse-gram.y"
|
||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1146 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1145 "parse-gram.c"
|
||||
break;
|
||||
case 86: /* "id_colon" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 195 "parse-gram.y"
|
||||
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1155 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1154 "parse-gram.c"
|
||||
break;
|
||||
case 87: /* "symbol" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 194 "parse-gram.y"
|
||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1164 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1163 "parse-gram.c"
|
||||
break;
|
||||
case 88: /* "string_as_id" */
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
/* Line 716 of yacc.c */
|
||||
#line 194 "parse-gram.y"
|
||||
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
|
||||
|
||||
/* Line 715 of yacc.c */
|
||||
#line 1173 "parse-gram.c"
|
||||
/* Line 716 of yacc.c */
|
||||
#line 1172 "parse-gram.c"
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1688,7 +1687,7 @@ YYLTYPE yylloc;
|
||||
|
||||
/* User initialization code. */
|
||||
|
||||
/* Line 1248 of yacc.c */
|
||||
/* Line 1249 of yacc.c */
|
||||
#line 84 "parse-gram.y"
|
||||
{
|
||||
/* Bison's grammar can initial empty locations, hence a default
|
||||
@@ -1697,8 +1696,8 @@ YYLTYPE yylloc;
|
||||
boundary_set (&yylloc.end, current_file, 1, 1);
|
||||
}
|
||||
|
||||
/* Line 1248 of yacc.c */
|
||||
#line 1702 "parse-gram.c"
|
||||
/* Line 1249 of yacc.c */
|
||||
#line 1701 "parse-gram.c"
|
||||
yylsp[0] = yylloc;
|
||||
|
||||
goto yysetstate;
|
||||
@@ -1885,7 +1884,7 @@ yyreduce:
|
||||
{
|
||||
case 6:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 218 "parse-gram.y"
|
||||
{
|
||||
code_props plain_code;
|
||||
@@ -1900,14 +1899,14 @@ yyreduce:
|
||||
|
||||
case 7:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 227 "parse-gram.y"
|
||||
{ debug_flag = true; }
|
||||
break;
|
||||
|
||||
case 8:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 229 "parse-gram.y"
|
||||
{
|
||||
muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars));
|
||||
@@ -1916,14 +1915,14 @@ yyreduce:
|
||||
|
||||
case 9:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 232 "parse-gram.y"
|
||||
{ defines_flag = true; }
|
||||
break;
|
||||
|
||||
case 10:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 234 "parse-gram.y"
|
||||
{
|
||||
defines_flag = true;
|
||||
@@ -1933,42 +1932,42 @@ yyreduce:
|
||||
|
||||
case 11:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 238 "parse-gram.y"
|
||||
{ error_verbose = true; }
|
||||
break;
|
||||
|
||||
case 12:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 239 "parse-gram.y"
|
||||
{ expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
|
||||
break;
|
||||
|
||||
case 13:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 240 "parse-gram.y"
|
||||
{ expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
|
||||
break;
|
||||
|
||||
case 14:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 241 "parse-gram.y"
|
||||
{ spec_file_prefix = (yyvsp[(2) - (2)].chars); }
|
||||
break;
|
||||
|
||||
case 15:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 242 "parse-gram.y"
|
||||
{ spec_file_prefix = (yyvsp[(3) - (3)].chars); }
|
||||
break;
|
||||
|
||||
case 16:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 244 "parse-gram.y"
|
||||
{
|
||||
nondeterministic_parser = true;
|
||||
@@ -1978,7 +1977,7 @@ yyreduce:
|
||||
|
||||
case 17:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 249 "parse-gram.y"
|
||||
{
|
||||
code_props action;
|
||||
@@ -1992,80 +1991,77 @@ yyreduce:
|
||||
|
||||
case 18:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 257 "parse-gram.y"
|
||||
{ language_argmatch ((yyvsp[(2) - (2)].chars), grammar_prio, (yylsp[(1) - (2)])); }
|
||||
|
||||
/* Line 1457 of yacc.c */
|
||||
#line 2036 "../../../src/parse-gram.c"
|
||||
break;
|
||||
|
||||
case 19:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 258 "parse-gram.y"
|
||||
{ add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 20:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 259 "parse-gram.y"
|
||||
{ locations_flag = true; }
|
||||
break;
|
||||
|
||||
case 21:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 260 "parse-gram.y"
|
||||
{ spec_name_prefix = (yyvsp[(2) - (2)].chars); }
|
||||
break;
|
||||
|
||||
case 22:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 261 "parse-gram.y"
|
||||
{ spec_name_prefix = (yyvsp[(3) - (3)].chars); }
|
||||
break;
|
||||
|
||||
case 23:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 262 "parse-gram.y"
|
||||
{ no_lines_flag = true; }
|
||||
break;
|
||||
|
||||
case 24:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 263 "parse-gram.y"
|
||||
{ nondeterministic_parser = true; }
|
||||
break;
|
||||
|
||||
case 25:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 264 "parse-gram.y"
|
||||
{ spec_outfile = (yyvsp[(2) - (2)].chars); }
|
||||
break;
|
||||
|
||||
case 26:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 265 "parse-gram.y"
|
||||
{ spec_outfile = (yyvsp[(3) - (3)].chars); }
|
||||
break;
|
||||
|
||||
case 27:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 266 "parse-gram.y"
|
||||
{ add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 28:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 268 "parse-gram.y"
|
||||
{
|
||||
/* %pure-parser is deprecated in favor of `%define api.pure', so use
|
||||
@@ -2083,14 +2079,14 @@ yyreduce:
|
||||
|
||||
case 29:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 280 "parse-gram.y"
|
||||
{ version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
|
||||
break;
|
||||
|
||||
case 30:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 282 "parse-gram.y"
|
||||
{
|
||||
char const *skeleton_user = (yyvsp[(2) - (2)].chars);
|
||||
@@ -2119,28 +2115,28 @@ yyreduce:
|
||||
|
||||
case 31:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 305 "parse-gram.y"
|
||||
{ token_table_flag = true; }
|
||||
break;
|
||||
|
||||
case 32:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 306 "parse-gram.y"
|
||||
{ report_flag |= report_states; }
|
||||
break;
|
||||
|
||||
case 33:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 307 "parse-gram.y"
|
||||
{ yacc_flag = true; }
|
||||
break;
|
||||
|
||||
case 37:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 315 "parse-gram.y"
|
||||
{
|
||||
grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
|
||||
@@ -2149,7 +2145,7 @@ yyreduce:
|
||||
|
||||
case 38:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 319 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
@@ -2161,7 +2157,7 @@ yyreduce:
|
||||
|
||||
case 39:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 326 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
@@ -2173,7 +2169,7 @@ yyreduce:
|
||||
|
||||
case 40:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 333 "parse-gram.y"
|
||||
{
|
||||
default_prec = true;
|
||||
@@ -2182,7 +2178,7 @@ yyreduce:
|
||||
|
||||
case 41:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 337 "parse-gram.y"
|
||||
{
|
||||
default_prec = false;
|
||||
@@ -2191,7 +2187,7 @@ yyreduce:
|
||||
|
||||
case 42:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 341 "parse-gram.y"
|
||||
{
|
||||
/* Do not invoke muscle_percent_code_grow here since it invokes
|
||||
@@ -2203,7 +2199,7 @@ yyreduce:
|
||||
|
||||
case 43:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 348 "parse-gram.y"
|
||||
{
|
||||
muscle_percent_code_grow ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
|
||||
@@ -2213,21 +2209,21 @@ yyreduce:
|
||||
|
||||
case 44:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 362 "parse-gram.y"
|
||||
{}
|
||||
break;
|
||||
|
||||
case 45:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 363 "parse-gram.y"
|
||||
{ muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 46:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 368 "parse-gram.y"
|
||||
{
|
||||
union_seen = true;
|
||||
@@ -2238,14 +2234,14 @@ yyreduce:
|
||||
|
||||
case 47:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 379 "parse-gram.y"
|
||||
{ current_class = nterm_sym; }
|
||||
break;
|
||||
|
||||
case 48:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 380 "parse-gram.y"
|
||||
{
|
||||
current_class = unknown_sym;
|
||||
@@ -2255,14 +2251,14 @@ yyreduce:
|
||||
|
||||
case 49:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 384 "parse-gram.y"
|
||||
{ current_class = token_sym; }
|
||||
break;
|
||||
|
||||
case 50:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 385 "parse-gram.y"
|
||||
{
|
||||
current_class = unknown_sym;
|
||||
@@ -2272,7 +2268,7 @@ yyreduce:
|
||||
|
||||
case 51:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 390 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
@@ -2285,7 +2281,7 @@ yyreduce:
|
||||
|
||||
case 52:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 401 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
@@ -2302,126 +2298,126 @@ yyreduce:
|
||||
|
||||
case 53:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 415 "parse-gram.y"
|
||||
{ (yyval.assoc) = left_assoc; }
|
||||
break;
|
||||
|
||||
case 54:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 416 "parse-gram.y"
|
||||
{ (yyval.assoc) = right_assoc; }
|
||||
break;
|
||||
|
||||
case 55:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 417 "parse-gram.y"
|
||||
{ (yyval.assoc) = non_assoc; }
|
||||
break;
|
||||
|
||||
case 56:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 421 "parse-gram.y"
|
||||
{ current_type = NULL; }
|
||||
break;
|
||||
|
||||
case 57:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 422 "parse-gram.y"
|
||||
{ current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
|
||||
break;
|
||||
|
||||
case 58:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 428 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 59:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 430 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
|
||||
break;
|
||||
|
||||
case 60:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 434 "parse-gram.y"
|
||||
{ (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
|
||||
break;
|
||||
|
||||
case 61:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 435 "parse-gram.y"
|
||||
{ (yyval.symbol) = (yyvsp[(1) - (2)].symbol); symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 62:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 441 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 63:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 443 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
|
||||
break;
|
||||
|
||||
case 64:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 447 "parse-gram.y"
|
||||
{ (yyval.list) = (yyvsp[(1) - (1)].list); }
|
||||
break;
|
||||
|
||||
case 65:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 448 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
|
||||
break;
|
||||
|
||||
case 66:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 452 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 67:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 453 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 68:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 454 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 69:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 455 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 70:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 461 "parse-gram.y"
|
||||
{
|
||||
current_type = (yyvsp[(1) - (1)].uniqstr);
|
||||
@@ -2431,7 +2427,7 @@ yyreduce:
|
||||
|
||||
case 71:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 466 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
|
||||
@@ -2441,7 +2437,7 @@ yyreduce:
|
||||
|
||||
case 72:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 471 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
||||
@@ -2452,7 +2448,7 @@ yyreduce:
|
||||
|
||||
case 73:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 477 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
||||
@@ -2463,7 +2459,7 @@ yyreduce:
|
||||
|
||||
case 74:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 483 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
|
||||
@@ -2475,7 +2471,7 @@ yyreduce:
|
||||
|
||||
case 81:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 513 "parse-gram.y"
|
||||
{
|
||||
yyerrok;
|
||||
@@ -2484,77 +2480,77 @@ yyreduce:
|
||||
|
||||
case 82:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 519 "parse-gram.y"
|
||||
{ current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 84:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 523 "parse-gram.y"
|
||||
{ grammar_current_rule_end ((yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 85:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 524 "parse-gram.y"
|
||||
{ grammar_current_rule_end ((yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 87:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 530 "parse-gram.y"
|
||||
{ grammar_current_rule_begin (current_lhs, current_lhs_location); }
|
||||
break;
|
||||
|
||||
case 88:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 532 "parse-gram.y"
|
||||
{ grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 89:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 534 "parse-gram.y"
|
||||
{ grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 90:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 536 "parse-gram.y"
|
||||
{ grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 91:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 538 "parse-gram.y"
|
||||
{ grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 92:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 540 "parse-gram.y"
|
||||
{ grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 94:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 550 "parse-gram.y"
|
||||
{ (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
|
||||
break;
|
||||
|
||||
case 95:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 556 "parse-gram.y"
|
||||
{
|
||||
(yyval.chars) = "";
|
||||
@@ -2563,7 +2559,7 @@ yyreduce:
|
||||
|
||||
case 97:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 569 "parse-gram.y"
|
||||
{
|
||||
code_props plain_code;
|
||||
@@ -2577,14 +2573,14 @@ yyreduce:
|
||||
|
||||
case 98:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 589 "parse-gram.y"
|
||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 99:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 591 "parse-gram.y"
|
||||
{
|
||||
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
|
||||
@@ -2595,14 +2591,14 @@ yyreduce:
|
||||
|
||||
case 100:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 599 "parse-gram.y"
|
||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 103:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 611 "parse-gram.y"
|
||||
{
|
||||
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
|
||||
@@ -2612,7 +2608,7 @@ yyreduce:
|
||||
|
||||
case 105:
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 620 "parse-gram.y"
|
||||
{
|
||||
code_props plain_code;
|
||||
@@ -2626,8 +2622,8 @@ yyreduce:
|
||||
|
||||
|
||||
|
||||
/* Line 1455 of yacc.c */
|
||||
#line 2628 "parse-gram.c"
|
||||
/* Line 1456 of yacc.c */
|
||||
#line 2627 "parse-gram.c"
|
||||
default: break;
|
||||
}
|
||||
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
||||
@@ -2845,7 +2841,7 @@ yyreturn:
|
||||
|
||||
|
||||
|
||||
/* Line 1675 of yacc.c */
|
||||
/* Line 1676 of yacc.c */
|
||||
#line 630 "parse-gram.y"
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
|
||||
/* A Bison parser, made by GNU Bison 2.4.4-738cd. */
|
||||
/* A Bison parser, made by GNU Bison 2.4.1.49-783b. */
|
||||
|
||||
/* Skeleton interface for Bison's Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
||||
2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -160,7 +159,7 @@
|
||||
typedef union YYSTYPE
|
||||
{
|
||||
|
||||
/* Line 1740 of yacc.c */
|
||||
/* Line 1742 of yacc.c */
|
||||
#line 92 "parse-gram.y"
|
||||
|
||||
symbol *symbol;
|
||||
@@ -174,8 +173,8 @@ typedef union YYSTYPE
|
||||
|
||||
|
||||
|
||||
/* Line 1740 of yacc.c */
|
||||
#line 179 "parse-gram.h"
|
||||
/* Line 1742 of yacc.c */
|
||||
#line 178 "parse-gram.h"
|
||||
} YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Print an xml on generated parser, for Bison,
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2007, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of Bison, the GNU Compiler Compiler.
|
||||
|
||||
@@ -244,7 +244,7 @@ print_reductions (FILE *out, int level, state *s)
|
||||
{
|
||||
transitions *trans = s->transitions;
|
||||
reductions *reds = s->reductions;
|
||||
rule *default_rule = NULL;
|
||||
rule *default_reduction = NULL;
|
||||
int report = false;
|
||||
int i, j;
|
||||
|
||||
@@ -254,7 +254,7 @@ print_reductions (FILE *out, int level, state *s)
|
||||
}
|
||||
|
||||
if (yydefact[s->number] != 0)
|
||||
default_rule = &rules[yydefact[s->number] - 1];
|
||||
default_reduction = &rules[yydefact[s->number] - 1];
|
||||
|
||||
bitset_zero (no_reduce_set);
|
||||
FOR_EACH_SHIFT (trans, i)
|
||||
@@ -263,7 +263,7 @@ print_reductions (FILE *out, int level, state *s)
|
||||
if (s->errs->symbols[i])
|
||||
bitset_set (no_reduce_set, s->errs->symbols[i]->number);
|
||||
|
||||
if (default_rule)
|
||||
if (default_reduction)
|
||||
report = true;
|
||||
|
||||
if (reds->lookahead_tokens)
|
||||
@@ -276,7 +276,7 @@ print_reductions (FILE *out, int level, state *s)
|
||||
{
|
||||
if (! count)
|
||||
{
|
||||
if (reds->rules[j] != default_rule)
|
||||
if (reds->rules[j] != default_reduction)
|
||||
report = true;
|
||||
count = true;
|
||||
}
|
||||
@@ -307,7 +307,7 @@ print_reductions (FILE *out, int level, state *s)
|
||||
{
|
||||
if (! count)
|
||||
{
|
||||
if (reds->rules[j] != default_rule)
|
||||
if (reds->rules[j] != default_reduction)
|
||||
print_reduction (out, level + 1, symbols[i]->tag,
|
||||
reds->rules[j], true);
|
||||
else
|
||||
@@ -318,7 +318,7 @@ print_reductions (FILE *out, int level, state *s)
|
||||
{
|
||||
if (defaulted)
|
||||
print_reduction (out, level + 1, symbols[i]->tag,
|
||||
default_rule, true);
|
||||
default_reduction, true);
|
||||
defaulted = false;
|
||||
print_reduction (out, level + 1, symbols[i]->tag,
|
||||
reds->rules[j], false);
|
||||
@@ -326,9 +326,9 @@ print_reductions (FILE *out, int level, state *s)
|
||||
}
|
||||
}
|
||||
|
||||
if (default_rule)
|
||||
if (default_reduction)
|
||||
print_reduction (out, level + 1,
|
||||
"$default", default_rule, true);
|
||||
"$default", default_reduction, true);
|
||||
|
||||
xml_puts (out, level, "</reductions>");
|
||||
}
|
||||
|
||||
25
src/print.c
25
src/print.c
@@ -242,7 +242,7 @@ print_reductions (FILE *out, state *s)
|
||||
{
|
||||
transitions *trans = s->transitions;
|
||||
reductions *reds = s->reductions;
|
||||
rule *default_rule = NULL;
|
||||
rule *default_reduction = NULL;
|
||||
size_t width = 0;
|
||||
int i, j;
|
||||
bool non_default_action = false;
|
||||
@@ -251,7 +251,7 @@ print_reductions (FILE *out, state *s)
|
||||
return;
|
||||
|
||||
if (yydefact[s->number] != 0)
|
||||
default_rule = &rules[yydefact[s->number] - 1];
|
||||
default_reduction = &rules[yydefact[s->number] - 1];
|
||||
|
||||
bitset_zero (no_reduce_set);
|
||||
FOR_EACH_SHIFT (trans, i)
|
||||
@@ -261,7 +261,7 @@ print_reductions (FILE *out, state *s)
|
||||
bitset_set (no_reduce_set, s->errs->symbols[i]->number);
|
||||
|
||||
/* Compute the width of the lookahead token column. */
|
||||
if (default_rule)
|
||||
if (default_reduction)
|
||||
width = strlen (_("$default"));
|
||||
|
||||
if (reds->lookahead_tokens)
|
||||
@@ -274,7 +274,7 @@ print_reductions (FILE *out, state *s)
|
||||
{
|
||||
if (! count)
|
||||
{
|
||||
if (reds->rules[j] != default_rule)
|
||||
if (reds->rules[j] != default_reduction)
|
||||
max_length (&width, symbols[i]->tag);
|
||||
count = true;
|
||||
}
|
||||
@@ -306,7 +306,7 @@ print_reductions (FILE *out, state *s)
|
||||
{
|
||||
if (! count)
|
||||
{
|
||||
if (reds->rules[j] != default_rule)
|
||||
if (reds->rules[j] != default_reduction)
|
||||
{
|
||||
non_default_action = true;
|
||||
print_reduction (out, width,
|
||||
@@ -323,7 +323,7 @@ print_reductions (FILE *out, state *s)
|
||||
if (defaulted)
|
||||
print_reduction (out, width,
|
||||
symbols[i]->tag,
|
||||
default_rule, true);
|
||||
default_reduction, true);
|
||||
defaulted = false;
|
||||
print_reduction (out, width,
|
||||
symbols[i]->tag,
|
||||
@@ -332,15 +332,16 @@ print_reductions (FILE *out, state *s)
|
||||
}
|
||||
}
|
||||
|
||||
if (default_rule)
|
||||
if (default_reduction)
|
||||
{
|
||||
char *default_rules = muscle_percent_define_get ("lr.default_rules");
|
||||
print_reduction (out, width, _("$default"), default_rule, true);
|
||||
aver (0 == strcmp (default_rules, "all")
|
||||
|| (0 == strcmp (default_rules, "consistent")
|
||||
char *default_reductions =
|
||||
muscle_percent_define_get ("lr.default_reductions");
|
||||
print_reduction (out, width, _("$default"), default_reduction, true);
|
||||
aver (0 == strcmp (default_reductions, "all")
|
||||
|| (0 == strcmp (default_reductions, "consistent")
|
||||
&& !non_default_action)
|
||||
|| (reds->num == 1 && reds->rules[0]->number == 0));
|
||||
free (default_rules);
|
||||
free (default_reductions);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -561,9 +561,9 @@ reader (void)
|
||||
muscle_percent_define_default ("lr.type", "LALR");
|
||||
lr_type = muscle_percent_define_get ("lr.type");
|
||||
if (0 != strcmp (lr_type, "canonical LR"))
|
||||
muscle_percent_define_default ("lr.default_rules", "all");
|
||||
muscle_percent_define_default ("lr.default_reductions", "all");
|
||||
else
|
||||
muscle_percent_define_default ("lr.default_rules", "accepting");
|
||||
muscle_percent_define_default ("lr.default_reductions", "accepting");
|
||||
free (lr_type);
|
||||
}
|
||||
|
||||
@@ -571,7 +571,7 @@ reader (void)
|
||||
{
|
||||
static char const * const values[] = {
|
||||
"lr.type", "LALR", "IELR", "canonical LR", NULL,
|
||||
"lr.default_rules", "all", "consistent", "accepting", NULL,
|
||||
"lr.default_reductions", "all", "consistent", "accepting", NULL,
|
||||
NULL
|
||||
};
|
||||
muscle_percent_define_check_values (values);
|
||||
|
||||
28
src/tables.c
28
src/tables.c
@@ -240,7 +240,7 @@ static rule *
|
||||
action_row (state *s)
|
||||
{
|
||||
int i;
|
||||
rule *default_rule = NULL;
|
||||
rule *default_reduction = NULL;
|
||||
reductions *reds = s->reductions;
|
||||
transitions *trans = s->transitions;
|
||||
errs *errp = s->errs;
|
||||
@@ -304,14 +304,15 @@ action_row (state *s)
|
||||
actrow[sym->number] = ACTION_NUMBER_MINIMUM;
|
||||
}
|
||||
|
||||
/* Turn off default rules where requested by the user. See
|
||||
/* Turn off default reductions where requested by the user. See
|
||||
state_lookahead_tokens_count in lalr.c to understand when states are
|
||||
labeled as consistent. */
|
||||
{
|
||||
char *default_rules = muscle_percent_define_get ("lr.default_rules");
|
||||
if (0 != strcmp (default_rules, "all") && !s->consistent)
|
||||
char *default_reductions =
|
||||
muscle_percent_define_get ("lr.default_reductions");
|
||||
if (0 != strcmp (default_reductions, "all") && !s->consistent)
|
||||
nodefault = true;
|
||||
free (default_rules);
|
||||
free (default_reductions);
|
||||
}
|
||||
|
||||
/* Now find the most common reduction and make it the default action
|
||||
@@ -320,7 +321,7 @@ action_row (state *s)
|
||||
if (reds->num >= 1 && !nodefault)
|
||||
{
|
||||
if (s->consistent)
|
||||
default_rule = reds->rules[0];
|
||||
default_reduction = reds->rules[0];
|
||||
else
|
||||
{
|
||||
int max = 0;
|
||||
@@ -337,7 +338,7 @@ action_row (state *s)
|
||||
if (count > max)
|
||||
{
|
||||
max = count;
|
||||
default_rule = r;
|
||||
default_reduction = r;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,17 +352,18 @@ action_row (state *s)
|
||||
{
|
||||
int j;
|
||||
for (j = 0; j < ntokens; j++)
|
||||
if (actrow[j] == rule_number_as_item_number (default_rule->number)
|
||||
if (actrow[j]
|
||||
== rule_number_as_item_number (default_reduction->number)
|
||||
&& ! (nondeterministic_parser && conflrow[j]))
|
||||
actrow[j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If have no default rule, the default is an error.
|
||||
/* If have no default reduction, the default is an error.
|
||||
So replace any action which says "error" with "use default". */
|
||||
|
||||
if (!default_rule)
|
||||
if (!default_reduction)
|
||||
for (i = 0; i < ntokens; i++)
|
||||
if (actrow[i] == ACTION_NUMBER_MINIMUM)
|
||||
actrow[i] = 0;
|
||||
@@ -369,7 +371,7 @@ action_row (state *s)
|
||||
if (conflicted)
|
||||
conflict_row (s);
|
||||
|
||||
return default_rule;
|
||||
return default_reduction;
|
||||
}
|
||||
|
||||
|
||||
@@ -450,8 +452,8 @@ token_actions (void)
|
||||
|
||||
for (i = 0; i < nstates; ++i)
|
||||
{
|
||||
rule *default_rule = action_row (states[i]);
|
||||
yydefact[i] = default_rule ? default_rule->number + 1 : 0;
|
||||
rule *default_reduction = action_row (states[i]);
|
||||
yydefact[i] = default_reduction ? default_reduction->number + 1 : 0;
|
||||
save_row (i);
|
||||
|
||||
/* Now that the parser was computed, we can find which rules are
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Prepare the LALR and GLR parser tables.
|
||||
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2004, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of Bison, the GNU Compiler Compiler.
|
||||
|
||||
@@ -45,9 +45,9 @@
|
||||
|
||||
YYSTOS[S] = the symbol number of the symbol that leads to state S.
|
||||
|
||||
YYDEFACT[S] = default rule to reduce with in state s, when YYTABLE
|
||||
doesn't specify something else to do. Zero means the default is an
|
||||
error.
|
||||
YYDEFACT[S] = default reduction number in state s. Performed when
|
||||
YYTABLE doesn't specify something else to do. Zero means the default
|
||||
is an error.
|
||||
|
||||
YYDEFGOTO[I] = default state to go to after a reduction of a rule
|
||||
that generates variable NTOKENS + I, except when YYTABLE specifies
|
||||
|
||||
Reference in New Issue
Block a user