YYFAIL: deprecate.

* NEWS (2.4.2): Document deprecation and the phase-out plan.
* data/lalr1.java (parser::YYStack::YYFAIL): Add comment about
deprecation.
* data/yacc.c (YYFAIL): Likewise, and suppress warnings about
YYFAIL from GCC cpp's -Wunused-macros.
* doc/bison.texinfo (Java Action Features): Remove YYFAIL
documentation.
(cherry picked from commit 1625df5b18)

Conflicts:

	doc/bison.texinfo
	src/parse-gram.c
	src/parse-gram.h
This commit is contained in:
Joel E. Denny
2009-12-21 14:51:40 -05:00
parent 3d04b5673d
commit 43dc3c8bc4
7 changed files with 218 additions and 154 deletions

View File

@@ -1,3 +1,14 @@
2009-12-21 Joel E. Denny <jdenny@clemson.edu>
YYFAIL: deprecate.
* NEWS (2.4.2): Document deprecation and the phase-out plan.
* data/lalr1.java (parser::YYStack::YYFAIL): Add comment about
deprecation.
* data/yacc.c (YYFAIL): Likewise, and suppress warnings about
YYFAIL from GCC cpp's -Wunused-macros.
* doc/bison.texinfo (Java Action Features): Remove YYFAIL
documentation.
2009-12-16 Joel E. Denny <jdenny@clemson.edu>
Add gcc's -Wundef to test suite and fix another warning from it.

39
NEWS
View File

@@ -32,6 +32,45 @@ Bison News
Bison's Java feature as a whole including its current usage of %code
is still considered experimental.
** YYFAIL is deprecated and will eventually be removed.
YYFAIL has existed for many years as an undocumented feature of
deterministic parsers in C generated by Bison. Previously, it was
documented for Bison's experimental Java parsers. YYFAIL is no longer
documented for Java parsers and is formally deprecated in both cases.
Users are strongly encouraged to migrate to YYERROR, which is
specified by POSIX.
Like YYERROR, you can invoke YYFAIL from a semantic action in order to
induce a syntax error. The most obvious difference from YYERROR is
that YYFAIL will automatically invoke yyerror to report the syntax
error so that you don't have to. However, there are several other
subtle differences between YYERROR and YYFAIL, and YYFAIL suffers from
inherent flaws when %error-verbose or `#define YYERROR_VERBOSE' is
used. For a more detailed discussion, see:
http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html
The upcoming Bison 2.5 will remove YYFAIL from Java parsers, but
deterministic parsers in C will continue to implement it. However,
because YYFAIL is already flawed, it seems futile to try to make new
Bison features compatible with it. Thus, during parser generation,
Bison 2.5 will produce a warning whenever it discovers YYFAIL in a
rule action. In a later release, YYFAIL will be disabled for
%error-verbose and `#define YYERROR_VERBOSE'. Eventually, YYFAIL will
be removed altogether.
There exists at least one case where Bison 2.5's YYFAIL warning will
be a false positive. Some projects add phony uses of YYFAIL and other
Bison-defined macros for the sole purpose of suppressing C
preprocessor warnings (from GCC cpp's -Wunused-macros, for example).
To avoid Bison's future warning, such YYFAIL uses can be moved to the
epilogue (that is, after the second `%%') in the Bison input file. In
this release (2.4.2), Bison already generates its own code to suppress
C preprocessor warnings for YYFAIL, so projects can remove their own
phony uses of YYFAIL if compatibility with Bison releases prior to
2.4.2 is not necessary.
** Internationalization.
Fix a regression introduced in Bison 2.4: Under some circumstances,

View File

@@ -310,7 +310,8 @@ b4_lexer_if([[
/**
* Returned by a Bison action in order to print an error message and start
* error recovery. */
* error recovery. Formally deprecated in Bison 2.4.2's NEWS entry, where
* a plan to phase it out is discussed. */
public static final int YYFAIL = 3;
private static final int YYNEWSTATE = 4;

View File

@@ -610,9 +610,18 @@ static const ]b4_int_type_for([b4_stos])[ yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
Once GCC version 2 has supplanted version 1, this can go. However,
YYFAIL appears to be in use. Nevertheless, it is formally deprecated
in Bison 2.4.2's NEWS entry, where a plan to phase it out is
discussed. */
#define YYFAIL goto yyerrlab
#if defined YYFAIL
/* This is here to suppress warnings from the GCC cpp's
-Wunused-macros. Normally we don't worry about that warning, but
some users do, and we want to make it easy for users to remove
YYFAIL uses, which will produce warnings from Bison 2.5. */
#endif
#define YYRECOVERING() (!!yyerrstatus)

View File

@@ -9069,11 +9069,6 @@ Start error recovery without printing an error message.
@xref{Error Recovery}.
@end deffn
@deffn {Statement} {return YYFAIL;}
Print an error message and start error recovery.
@xref{Error Recovery}.
@end deffn
@deftypefn {Function} {boolean} recovering ()
Return whether error recovery is being done. In this state, the parser
reads token until it reaches a known state, and then restarts normal

View File

@@ -1,4 +1,4 @@
/* A Bison parser, made by GNU Bison 2.4.1.50-3249. */
/* A Bison parser, made by GNU Bison 2.4.1.58-3d04. */
/* Skeleton implementation for Bison's Yacc-like parsers in C
@@ -45,7 +45,7 @@
#define YYBISON 1
/* Bison version. */
#define YYBISON_VERSION "2.4.1.50-3249"
#define YYBISON_VERSION "2.4.1.58-3d04"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -388,7 +388,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
# if YYENABLE_NLS
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -893,9 +893,18 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
Once GCC version 2 has supplanted version 1, this can go. However,
YYFAIL appears to be in use. Nevertheless, it is formally deprecated
in Bison 2.4.2's NEWS entry, where a plan to phase it out is
discussed. */
#define YYFAIL goto yyerrlab
#if defined YYFAIL
/* This is here to suppress warnings from the GCC cpp's
-Wunused-macros. Normally we don't worry about that warning, but
some users do, and we want to make it easy for users to remove
YYFAIL uses, which will produce warnings from Bison 2.5. */
#endif
#define YYRECOVERING() (!!yyerrstatus)
@@ -952,7 +961,7 @@ while (YYID (0))
we won't break user code: when these are the locations we know. */
#ifndef YY_LOCATION_PRINT
# if YYLTYPE_IS_TRIVIAL
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
# define YY_LOCATION_PRINT(File, Loc) \
fprintf (File, "%d.%d-%d.%d", \
(Loc).first_line, (Loc).first_column, \
@@ -1028,147 +1037,147 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
{
case 3: /* "\"string\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 180 "parse-gram.y"
{ fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
/* Line 716 of yacc.c */
#line 1037 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1046 "parse-gram.c"
break;
case 4: /* "\"integer\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 191 "parse-gram.y"
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
/* Line 716 of yacc.c */
#line 1046 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1055 "parse-gram.c"
break;
case 43: /* "\"{...}\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 182 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
/* Line 716 of yacc.c */
#line 1055 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1064 "parse-gram.c"
break;
case 44: /* "\"char\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 174 "parse-gram.y"
{ fputs (char_name ((yyvaluep->character)), stderr); };
/* Line 716 of yacc.c */
#line 1064 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1073 "parse-gram.c"
break;
case 45: /* "\"epilogue\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 182 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 716 of yacc.c */
#line 1073 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1082 "parse-gram.c"
break;
case 47: /* "\"identifier\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 187 "parse-gram.y"
{ fputs ((yyvaluep->uniqstr), stderr); };
/* Line 716 of yacc.c */
#line 1082 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1091 "parse-gram.c"
break;
case 48: /* "\"identifier:\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 188 "parse-gram.y"
{ fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
/* Line 716 of yacc.c */
#line 1091 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1100 "parse-gram.c"
break;
case 51: /* "\"%{...%}\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 182 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 716 of yacc.c */
#line 1100 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1109 "parse-gram.c"
break;
case 53: /* "\"type\"" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 186 "parse-gram.y"
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
/* Line 716 of yacc.c */
#line 1109 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1118 "parse-gram.c"
break;
case 82: /* "variable" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 187 "parse-gram.y"
{ fputs ((yyvaluep->uniqstr), stderr); };
/* Line 716 of yacc.c */
#line 1118 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1127 "parse-gram.c"
break;
case 83: /* "content.opt" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 182 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 716 of yacc.c */
#line 1127 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1136 "parse-gram.c"
break;
case 84: /* "braceless" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 182 "parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
/* Line 716 of yacc.c */
#line 1136 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1145 "parse-gram.c"
break;
case 85: /* "id" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 194 "parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
/* Line 716 of yacc.c */
#line 1145 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1154 "parse-gram.c"
break;
case 86: /* "id_colon" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 195 "parse-gram.y"
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
/* Line 716 of yacc.c */
#line 1154 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1163 "parse-gram.c"
break;
case 87: /* "symbol" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 194 "parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
/* Line 716 of yacc.c */
#line 1163 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1172 "parse-gram.c"
break;
case 88: /* "string_as_id" */
/* Line 716 of yacc.c */
/* Line 725 of yacc.c */
#line 194 "parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
/* Line 716 of yacc.c */
#line 1172 "parse-gram.c"
/* Line 725 of yacc.c */
#line 1181 "parse-gram.c"
break;
default:
break;
@@ -1679,7 +1688,7 @@ YYLTYPE yylloc;
yyvsp = yyvs;
yylsp = yyls;
#if YYLTYPE_IS_TRIVIAL
#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
/* Initialize the default location before parsing starts. */
yylloc.first_line = yylloc.last_line = 1;
yylloc.first_column = yylloc.last_column = 1;
@@ -1687,7 +1696,7 @@ YYLTYPE yylloc;
/* User initialization code. */
/* Line 1243 of yacc.c */
/* Line 1252 of yacc.c */
#line 84 "parse-gram.y"
{
/* Bison's grammar can initial empty locations, hence a default
@@ -1696,8 +1705,8 @@ YYLTYPE yylloc;
boundary_set (&yylloc.end, current_file, 1, 1);
}
/* Line 1243 of yacc.c */
#line 1701 "parse-gram.c"
/* Line 1252 of yacc.c */
#line 1710 "parse-gram.c"
yylsp[0] = yylloc;
goto yysetstate;
@@ -1884,7 +1893,7 @@ yyreduce:
{
case 6:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 218 "parse-gram.y"
{
code_props plain_code;
@@ -1899,14 +1908,14 @@ yyreduce:
case 7:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 227 "parse-gram.y"
{ debug_flag = true; }
break;
case 8:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 229 "parse-gram.y"
{
muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars));
@@ -1915,14 +1924,14 @@ yyreduce:
case 9:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 232 "parse-gram.y"
{ defines_flag = true; }
break;
case 10:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 234 "parse-gram.y"
{
defines_flag = true;
@@ -1932,42 +1941,42 @@ yyreduce:
case 11:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 238 "parse-gram.y"
{ error_verbose = true; }
break;
case 12:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 239 "parse-gram.y"
{ expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
break;
case 13:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 240 "parse-gram.y"
{ expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
break;
case 14:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 241 "parse-gram.y"
{ spec_file_prefix = (yyvsp[(2) - (2)].chars); }
break;
case 15:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 242 "parse-gram.y"
{ spec_file_prefix = (yyvsp[(3) - (3)].chars); }
break;
case 16:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 244 "parse-gram.y"
{
nondeterministic_parser = true;
@@ -1977,7 +1986,7 @@ yyreduce:
case 17:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 249 "parse-gram.y"
{
code_props action;
@@ -1991,77 +2000,77 @@ yyreduce:
case 18:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 257 "parse-gram.y"
{ language_argmatch ((yyvsp[(2) - (2)].chars), grammar_prio, &(yylsp[(1) - (2)])); }
break;
case 19:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 258 "parse-gram.y"
{ add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
break;
case 20:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 259 "parse-gram.y"
{ locations_flag = true; }
break;
case 21:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 260 "parse-gram.y"
{ spec_name_prefix = (yyvsp[(2) - (2)].chars); }
break;
case 22:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 261 "parse-gram.y"
{ spec_name_prefix = (yyvsp[(3) - (3)].chars); }
break;
case 23:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 262 "parse-gram.y"
{ no_lines_flag = true; }
break;
case 24:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 263 "parse-gram.y"
{ nondeterministic_parser = true; }
break;
case 25:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 264 "parse-gram.y"
{ spec_outfile = (yyvsp[(2) - (2)].chars); }
break;
case 26:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 265 "parse-gram.y"
{ spec_outfile = (yyvsp[(3) - (3)].chars); }
break;
case 27:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 266 "parse-gram.y"
{ add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
break;
case 28:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 268 "parse-gram.y"
{
/* %pure-parser is deprecated in favor of `%define api.pure', so use
@@ -2079,14 +2088,14 @@ yyreduce:
case 29:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 280 "parse-gram.y"
{ version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
break;
case 30:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 282 "parse-gram.y"
{
char const *skeleton_user = (yyvsp[(2) - (2)].chars);
@@ -2115,28 +2124,28 @@ yyreduce:
case 31:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 305 "parse-gram.y"
{ token_table_flag = true; }
break;
case 32:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 306 "parse-gram.y"
{ report_flag |= report_states; }
break;
case 33:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 307 "parse-gram.y"
{ yacc_flag = true; }
break;
case 37:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 315 "parse-gram.y"
{
grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
@@ -2145,7 +2154,7 @@ yyreduce:
case 38:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 319 "parse-gram.y"
{
symbol_list *list;
@@ -2157,7 +2166,7 @@ yyreduce:
case 39:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 326 "parse-gram.y"
{
symbol_list *list;
@@ -2169,7 +2178,7 @@ yyreduce:
case 40:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 333 "parse-gram.y"
{
default_prec = true;
@@ -2178,7 +2187,7 @@ yyreduce:
case 41:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 337 "parse-gram.y"
{
default_prec = false;
@@ -2187,7 +2196,7 @@ yyreduce:
case 42:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 341 "parse-gram.y"
{
/* Do not invoke muscle_percent_code_grow here since it invokes
@@ -2199,7 +2208,7 @@ yyreduce:
case 43:
/* Line 1456 of yacc.c */
/* Line 1465 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)]));
@@ -2209,21 +2218,21 @@ yyreduce:
case 44:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 362 "parse-gram.y"
{}
break;
case 45:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 363 "parse-gram.y"
{ muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
break;
case 46:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 368 "parse-gram.y"
{
union_seen = true;
@@ -2234,14 +2243,14 @@ yyreduce:
case 47:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 379 "parse-gram.y"
{ current_class = nterm_sym; }
break;
case 48:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 380 "parse-gram.y"
{
current_class = unknown_sym;
@@ -2251,14 +2260,14 @@ yyreduce:
case 49:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 384 "parse-gram.y"
{ current_class = token_sym; }
break;
case 50:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 385 "parse-gram.y"
{
current_class = unknown_sym;
@@ -2268,7 +2277,7 @@ yyreduce:
case 51:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 390 "parse-gram.y"
{
symbol_list *list;
@@ -2281,7 +2290,7 @@ yyreduce:
case 52:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 401 "parse-gram.y"
{
symbol_list *list;
@@ -2298,126 +2307,126 @@ yyreduce:
case 53:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 415 "parse-gram.y"
{ (yyval.assoc) = left_assoc; }
break;
case 54:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 416 "parse-gram.y"
{ (yyval.assoc) = right_assoc; }
break;
case 55:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 417 "parse-gram.y"
{ (yyval.assoc) = non_assoc; }
break;
case 56:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 421 "parse-gram.y"
{ current_type = NULL; }
break;
case 57:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 422 "parse-gram.y"
{ current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
break;
case 58:
/* Line 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 434 "parse-gram.y"
{ (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
break;
case 61:
/* Line 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 447 "parse-gram.y"
{ (yyval.list) = (yyvsp[(1) - (1)].list); }
break;
case 65:
/* Line 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 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 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 454 "parse-gram.y"
{ (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
break;
case 69:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 455 "parse-gram.y"
{ (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
break;
case 70:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 461 "parse-gram.y"
{
current_type = (yyvsp[(1) - (1)].uniqstr);
@@ -2427,7 +2436,7 @@ yyreduce:
case 71:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 466 "parse-gram.y"
{
symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
@@ -2437,7 +2446,7 @@ yyreduce:
case 72:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 471 "parse-gram.y"
{
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
@@ -2448,7 +2457,7 @@ yyreduce:
case 73:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 477 "parse-gram.y"
{
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
@@ -2459,7 +2468,7 @@ yyreduce:
case 74:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 483 "parse-gram.y"
{
symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
@@ -2471,7 +2480,7 @@ yyreduce:
case 81:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 513 "parse-gram.y"
{
yyerrok;
@@ -2480,77 +2489,77 @@ yyreduce:
case 82:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 519 "parse-gram.y"
{ current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
break;
case 84:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 523 "parse-gram.y"
{ grammar_current_rule_end ((yylsp[(1) - (1)])); }
break;
case 85:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 524 "parse-gram.y"
{ grammar_current_rule_end ((yylsp[(3) - (3)])); }
break;
case 87:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 530 "parse-gram.y"
{ grammar_current_rule_begin (current_lhs, current_lhs_location); }
break;
case 88:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 532 "parse-gram.y"
{ grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
break;
case 89:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 534 "parse-gram.y"
{ grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
break;
case 90:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 536 "parse-gram.y"
{ grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
break;
case 91:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 538 "parse-gram.y"
{ grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
break;
case 92:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 540 "parse-gram.y"
{ grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
break;
case 94:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 550 "parse-gram.y"
{ (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
break;
case 95:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 556 "parse-gram.y"
{
(yyval.chars) = "";
@@ -2559,7 +2568,7 @@ yyreduce:
case 97:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 569 "parse-gram.y"
{
code_props plain_code;
@@ -2573,14 +2582,14 @@ yyreduce:
case 98:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 589 "parse-gram.y"
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
break;
case 99:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 591 "parse-gram.y"
{
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
@@ -2591,14 +2600,14 @@ yyreduce:
case 100:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 599 "parse-gram.y"
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
break;
case 103:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 611 "parse-gram.y"
{
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
@@ -2608,7 +2617,7 @@ yyreduce:
case 105:
/* Line 1456 of yacc.c */
/* Line 1465 of yacc.c */
#line 620 "parse-gram.y"
{
code_props plain_code;
@@ -2622,8 +2631,8 @@ yyreduce:
/* Line 1456 of yacc.c */
#line 2627 "parse-gram.c"
/* Line 1465 of yacc.c */
#line 2636 "parse-gram.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2841,7 +2850,7 @@ yyreturn:
/* Line 1676 of yacc.c */
/* Line 1685 of yacc.c */
#line 630 "parse-gram.y"

View File

@@ -1,4 +1,4 @@
/* A Bison parser, made by GNU Bison 2.4.1.50-3249. */
/* A Bison parser, made by GNU Bison 2.4.1.58-3d04. */
/* Skeleton interface for Bison's Yacc-like parsers in C
@@ -159,7 +159,7 @@
typedef union YYSTYPE
{
/* Line 1677 of yacc.c */
/* Line 1686 of yacc.c */
#line 92 "parse-gram.y"
symbol *symbol;
@@ -173,7 +173,7 @@ typedef union YYSTYPE
/* Line 1677 of yacc.c */
/* Line 1686 of yacc.c */
#line 178 "parse-gram.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1