]> git.saurik.com Git - bison.git/blame - data/yacc.c
Merge remote-tracking branch 'origin/maint'
[bison.git] / data / yacc.c
CommitLineData
08af01c2 1 -*- C -*-
60491a94 2# Yacc compatible skeleton for Bison
c7a65b99 3
34136e65 4# Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation,
575619af 5# Inc.
60491a94 6
639867b5 7m4_pushdef([b4_copyright_years],
34136e65 8 [1984, 1989-1990, 2000-2012])
639867b5 9
f16b0819 10# This program is free software: you can redistribute it and/or modify
60491a94 11# it under the terms of the GNU General Public License as published by
f16b0819 12# the Free Software Foundation, either version 3 of the License, or
60491a94 13# (at your option) any later version.
f16b0819 14#
60491a94
AD
15# This program is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18# GNU General Public License for more details.
f16b0819 19#
60491a94 20# You should have received a copy of the GNU General Public License
f16b0819 21# along with this program. If not, see <http://www.gnu.org/licenses/>.
60491a94 22
67212941
JD
23# Check the value of %define api.push-pull.
24b4_percent_define_default([[api.push-pull]], [[pull]])
25b4_percent_define_check_values([[[[api.push-pull]],
bb31eb56 26 [[pull]], [[push]], [[both]]]])
9ca7f077
JD
27b4_define_flag_if([pull]) m4_define([b4_pull_flag], [[1]])
28b4_define_flag_if([push]) m4_define([b4_push_flag], [[1]])
67212941 29m4_case(b4_percent_define_get([[api.push-pull]]),
9ca7f077
JD
30 [pull], [m4_define([b4_push_flag], [[0]])],
31 [push], [m4_define([b4_pull_flag], [[0]])])
32
33# Handle BISON_USE_PUSH_FOR_PULL for the test suite. So that push parsing
3c9b20ff
PE
34# tests function as written, do not let BISON_USE_PUSH_FOR_PULL modify the
35# behavior of Bison at all when push parsing is already requested.
9ca7f077
JD
36b4_define_flag_if([use_push_for_pull])
37b4_use_push_for_pull_if([
38 b4_push_if([m4_define([b4_use_push_for_pull_flag], [[0]])],
39 [m4_define([b4_push_flag], [[1]])])])
945e396c 40
107844a3
JD
41# Check the value of %define parse.lac and friends, where LAC stands for
42# lookahead correction.
bf35c71c 43b4_percent_define_default([[parse.lac]], [[none]])
107844a3
JD
44b4_percent_define_default([[parse.lac.es-capacity-initial]], [[20]])
45b4_percent_define_default([[parse.lac.memory-trace]], [[failures]])
46b4_percent_define_check_values([[[[parse.lac]], [[full]], [[none]]]],
47 [[[[parse.lac.memory-trace]],
48 [[failures]], [[full]]]])
bf35c71c
JD
49b4_define_flag_if([lac])
50m4_define([b4_lac_flag],
51 [m4_if(b4_percent_define_get([[parse.lac]]),
52 [none], [[0]], [[1]])])
53
0a96ba81 54m4_include(b4_pkgdatadir/[c.m4])
7eb8a0bc 55
66d30cd4
AD
56## ---------------- ##
57## Default values. ##
58## ---------------- ##
59
60# Stack parameters.
61m4_define_default([b4_stack_depth_max], [10000])
62m4_define_default([b4_stack_depth_init], [200])
63
2a8d363a
AD
64
65## ------------------------ ##
66## Pure/impure interfaces. ##
67## ------------------------ ##
68
d9df47b6
JD
69b4_percent_define_default([[api.pure]], [[false]])
70b4_define_flag_if([pure])
71m4_define([b4_pure_flag],
72 [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])
2a8d363a 73
4b367315
AD
74# b4_yacc_pure_if(IF-TRUE, IF-FALSE)
75# ----------------------------------
2a8d363a 76# Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
4b367315 77m4_define([b4_yacc_pure_if],
2a8d363a 78[b4_pure_if([m4_ifset([b4_parse_param],
e9690142
JD
79 [$1], [$2])],
80 [$2])])
2a8d363a
AD
81
82
93724f13
AD
83# b4_yyerror_args
84# ---------------
2a8d363a 85# Arguments passed to yyerror: user args plus yylloc.
93724f13 86m4_define([b4_yyerror_args],
327afc7c 87[b4_yacc_pure_if([b4_locations_if([&yylloc, ])])dnl
15f66669 88m4_ifset([b4_parse_param], [b4_args(b4_parse_param), ])])
2a8d363a
AD
89
90
91# b4_lex_param
92# ------------
d42f69cd 93# Accumulate in b4_lex_param all the yylex arguments.
2a8d363a 94# b4_lex_param arrives quoted twice, but we want to keep only one level.
21964f43
AD
95m4_define([b4_lex_param],
96m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl
327afc7c 97b4_locations_if([, [[YYLTYPE *], [&yylloc]]])m4_ifdef([b4_lex_param], [, ])])dnl
68cdf747 98m4_ifdef([b4_lex_param], b4_lex_param)))
66d30cd4
AD
99
100
f1886bb2
AD
101## ------------ ##
102## Data Types. ##
103## ------------ ##
104
105# b4_int_type(MIN, MAX)
106# ---------------------
107# Return the smallest int type able to handle numbers ranging from
d42cf844
PE
108# MIN to MAX (included). Overwrite the version from c.m4, which
109# uses only C89 types, so that the user can override the shorter
110# types, and so that pre-C89 compilers are handled correctly.
f1886bb2 111m4_define([b4_int_type],
d42cf844
PE
112[m4_if(b4_ints_in($@, [0], [255]), [1], [yytype_uint8],
113 b4_ints_in($@, [-128], [127]), [1], [yytype_int8],
f1886bb2 114
d42cf844
PE
115 b4_ints_in($@, [0], [65535]), [1], [yytype_uint16],
116 b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16],
f1886bb2
AD
117
118 m4_eval([0 <= $1]), [1], [unsigned int],
119
e9690142 120 [int])])
f1886bb2
AD
121
122
66d30cd4
AD
123## ----------------- ##
124## Semantic Values. ##
125## ----------------- ##
126
127
82b6cb3f
AD
128# b4_lhs_value([TYPE])
129# --------------------
130# Expansion of $<TYPE>$.
131m4_define([b4_lhs_value],
1fa5d8bb 132[b4_symbol_value(yyval, [$1])])
82b6cb3f
AD
133
134
135# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
136# --------------------------------------
137# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
138# symbols on RHS.
139m4_define([b4_rhs_value],
bd187d7b 140 [b4_symbol_value([yyvsp@{b4_subtract([$2], [$1])@}], [$3])])
82b6cb3f
AD
141
142
58612f1d
AD
143
144## ----------- ##
145## Locations. ##
146## ----------- ##
147
82b6cb3f
AD
148# b4_lhs_location()
149# -----------------
150# Expansion of @$.
151m4_define([b4_lhs_location],
bc82c5a5 152[(yyloc)])
82b6cb3f
AD
153
154
155# b4_rhs_location(RULE-LENGTH, NUM)
156# ---------------------------------
157# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
158# on RHS.
159m4_define([b4_rhs_location],
bd187d7b 160 [(yylsp@{b4_subtract([$2], [$1])@})])
be2a1a68 161
0d8bed56 162
c0828abf
AD
163## -------------- ##
164## Declarations. ##
165## -------------- ##
bb31eb56
JD
166
167# b4_declare_scanner_communication_variables
168# ------------------------------------------
169# Declare the variables that are global, or local to YYPARSE if
170# pure-parser.
171m4_define([b4_declare_scanner_communication_variables], [[
172/* The lookahead symbol. */
173int yychar;
174
e365aa4c 175]b4_pure_if([[
4f4a54ab 176#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
e365aa4c
PE
177/* Suppress an incorrect diagnostic about yylval being uninitialized. */
178# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
179 _Pragma ("GCC diagnostic push") \
63e8426a 180 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
e365aa4c
PE
181 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
182# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
183 _Pragma ("GCC diagnostic pop")
184#else
185/* Default value used for initialization, for pacifying older GCCs
186 or non-GCC compilers. */
187static YYSTYPE yyval_default;
a68b1f23 188# define YY_INITIAL_VALUE(Value) = Value
e365aa4c 189#endif]])[
e365aa4c
PE
190#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
191# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
192# define YY_IGNORE_MAYBE_UNINITIALIZED_END
193#endif
a68b1f23
AD
194#ifndef YY_INITIAL_VALUE
195# define YY_INITIAL_VALUE(Value) /* Nothing. */
196#endif
e365aa4c 197
bb31eb56 198/* The semantic value of the lookahead symbol. */
a68b1f23 199YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);]b4_locations_if([[
bb31eb56
JD
200
201/* Location data for the lookahead symbol. */
a1d1ab50
AD
202YYLTYPE yylloc][]b4_yyloc_default[;
203]])b4_pure_if([], [[
bb31eb56
JD
204
205/* Number of syntax errors so far. */
206int yynerrs;]])])
207
208
209# b4_declare_parser_state_variables
210# ---------------------------------
211# Declare all the variables that are needed to maintain the parser state
212# between calls to yypush_parse.
213m4_define([b4_declare_parser_state_variables], [b4_pure_if([[
214 /* Number of syntax errors so far. */
215 int yynerrs;
216]])[
217 int yystate;
218 /* Number of tokens to shift before error messages enabled. */
219 int yyerrstatus;
220
221 /* The stacks and their tools:
222 `yyss': related to states.
223 `yyvs': related to semantic values.]b4_locations_if([[
224 `yyls': related to locations.]])[
225
cbdb6d91 226 Refer to the stacks through separate pointers, to allow yyoverflow
bb31eb56
JD
227 to reallocate them elsewhere. */
228
229 /* The state stack. */
230 yytype_int16 yyssa[YYINITDEPTH];
231 yytype_int16 *yyss;
232 yytype_int16 *yyssp;
233
234 /* The semantic value stack. */
235 YYSTYPE yyvsa[YYINITDEPTH];
236 YYSTYPE *yyvs;
237 YYSTYPE *yyvsp;]b4_locations_if([[
238
239 /* The location stack. */
240 YYLTYPE yylsa[YYINITDEPTH];
241 YYLTYPE *yyls;
242 YYLTYPE *yylsp;
243
244 /* The locations where the error started and ended. */
44c2b42d 245 YYLTYPE yyerror_range[3];]])[
bb31eb56 246
107844a3
JD
247 YYSIZE_T yystacksize;]b4_lac_if([[
248
249 yytype_int16 yyesa@{]b4_percent_define_get([[parse.lac.es-capacity-initial]])[@};
250 yytype_int16 *yyes;
251 YYSIZE_T yyes_capacity;]])])
bb31eb56 252
ae6bdabb 253
c3e9f08f
AD
254# b4_declare_yyparse_push_
255# ------------------------
55d1006f
AD
256# Declaration of yyparse (and dependencies) when using the push parser
257# (including in pull mode).
c3e9f08f 258m4_define([b4_declare_yyparse_push_],
ad60e80f
AD
259[[#ifndef YYPUSH_MORE_DEFINED
260# define YYPUSH_MORE_DEFINED
ae6bdabb 261enum { YYPUSH_MORE = 4 };
ad60e80f
AD
262#endif
263
264typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
265
15f66669
AD
266]b4_pull_if([b4_function_declare([b4_prefix[parse]], [[int]], b4_parse_param)
267])b4_function_declare([b4_prefix[push_parse]], [[int]],
ad60e80f
AD
268 [[b4_prefix[pstate *ps]], [[ps]]]b4_pure_if([,
269 [[[int pushed_char]], [[pushed_char]]],
270 [[b4_api_PREFIX[STYPE const *pushed_val]], [[pushed_val]]]b4_locations_if([,
a1d1ab50 271 [[b4_api_PREFIX[LTYPE *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [,
ae6bdabb 272 b4_parse_param]))
15f66669 273b4_pull_if([b4_function_declare([b4_prefix[pull_parse]], [[int]],
ad60e80f 274 [[b4_prefix[pstate *ps]], [[ps]]]m4_ifset([b4_parse_param], [,
ae6bdabb 275 b4_parse_param]))])
15f66669 276b4_function_declare([b4_prefix[pstate_new]], [b4_prefix[pstate *]],
ae6bdabb 277 [[[void]], []])
15f66669 278b4_function_declare([b4_prefix[pstate_delete]], [[void]],
ad60e80f 279 [[b4_prefix[pstate *ps]], [[ps]]])dnl
c3e9f08f
AD
280])
281
282# b4_declare_yyparse_
283# -------------------
284# When not the push parser.
285m4_define([b4_declare_yyparse_],
15f66669 286[b4_function_declare(b4_prefix[parse], [int], b4_parse_param)])
c3e9f08f
AD
287
288
289# b4_declare_yyparse
290# ------------------
291m4_define([b4_declare_yyparse],
292[b4_push_if([b4_declare_yyparse_push_],
293 [b4_declare_yyparse_])[]dnl
294])
295
296
297# b4_shared_declarations
298# ----------------------
299# Declaration that might either go into the header (if --defines)
300# or open coded in the parser body.
301m4_define([b4_shared_declarations],
55d1006f
AD
302[b4_cpp_guard_open([b4_spec_defines_file])[
303]b4_declare_yydebug[
56ca3d8f 304]b4_percent_code_get([[requires]])[
6687da34 305]b4_token_enums_defines[
c3e9f08f
AD
306]b4_declare_yylstype[
307]b4_declare_yyparse[
55d1006f
AD
308]b4_percent_code_get([[provides]])[
309]b4_cpp_guard_close([b4_spec_defines_file])[]dnl
ae6bdabb
AD
310])
311
c0828abf
AD
312## -------------- ##
313## Output files. ##
314## -------------- ##
1ae72863 315
b526ee61
AD
316# We do want M4 expansion after # for CPP macros.
317m4_changecom()
08af01c2 318m4_divert_push(0)dnl
a0d4650a 319@output(b4_parser_file_name@)@
fe3cae17 320b4_copyright([Bison implementation for Yacc-like parsers in C])[
af3412cd
PE
321
322/* C LALR(1) parser skeleton written by Richard Stallman, by
323 simplifying the original so-called "semantic" parser. */
444fbf65 324
cf44a9ae
PE
325/* All symbols defined below should begin with yy or YY, to avoid
326 infringing on user name space. This should be done even for local
327 variables, as they might otherwise be expanded by user macros.
328 There are some unavoidable exceptions within include files to
329 define necessary library symbols; they are noted "INFRINGES ON
330 USER NAME SPACE" below. */
331
9c1e26bd 332]b4_identification
a4e25e1d 333b4_percent_code_get([[top]])[]dnl
4b3847c3
AD
334m4_if(b4_api_prefix, [yy], [],
335[[/* Substitute the type names. */
9104636b
AD
336#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[
337#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[
4b3847c3 338]m4_if(b4_prefix, [yy], [],
bb31eb56
JD
339[[/* Substitute the variable and function names. */]b4_pull_if([[
340#define yyparse ]b4_prefix[parse]])b4_push_if([[
341#define yypush_parse ]b4_prefix[push_parse]b4_pull_if([[
342#define yypull_parse ]b4_prefix[pull_parse]])[
343#define yypstate_new ]b4_prefix[pstate_new
9ca7f077 344#define yypstate_delete ]b4_prefix[pstate_delete
bb31eb56
JD
345#define yypstate ]b4_prefix[pstate]])[
346#define yylex ]b4_prefix[lex
9ca7f077
JD
347#define yyerror ]b4_prefix[error
348#define yylval ]b4_prefix[lval
349#define yychar ]b4_prefix[char
350#define yydebug ]b4_prefix[debug
6e2d7b09
AD
351#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[
352#define yylloc ]b4_prefix[lloc]])])[
17da6427 353
0dd1580a 354/* Copy the first part of user declarations. */
136a0f76 355]b4_user_pre_prologue[
cce71710 356
ef51bfa7
AD
357]b4_null_define[
358
d99361e6
AD
359/* Enabling verbose error messages. */
360#ifdef YYERROR_VERBOSE
361# undef YYERROR_VERBOSE
362# define YYERROR_VERBOSE 1
363#else
b3a2272a 364# define YYERROR_VERBOSE ]b4_error_verbose_if([1], [0])[
d99361e6
AD
365#endif
366
6b4cb804
AD
367]m4_ifval(m4_quote(b4_spec_defines_file),
368[[/* In a future release of Bison, this section will be replaced
55d1006f 369 by #include "@basename(]b4_spec_defines_file[@)". */
6b4cb804
AD
370]])dnl
371b4_shared_declarations[
9bc0dd67 372
ae6bdabb 373/* Copy the second part of user declarations. */
8e0a5e9e 374]b4_user_post_prologue
a4e25e1d 375b4_percent_code_get[]dnl
7093d0f5 376
8e0a5e9e 377[#ifdef short
d42cf844
PE
378# undef short
379#endif
380
381#ifdef YYTYPE_UINT8
382typedef YYTYPE_UINT8 yytype_uint8;
383#else
384typedef unsigned char yytype_uint8;
385#endif
386
387#ifdef YYTYPE_INT8
388typedef YYTYPE_INT8 yytype_int8;
d42cf844 389#else
71b56f46 390typedef signed char yytype_int8;
d42cf844
PE
391#endif
392
393#ifdef YYTYPE_UINT16
394typedef YYTYPE_UINT16 yytype_uint16;
395#else
396typedef unsigned short int yytype_uint16;
397#endif
398
399#ifdef YYTYPE_INT16
400typedef YYTYPE_INT16 yytype_int16;
401#else
402typedef short int yytype_int16;
403#endif
404
55289366 405#ifndef YYSIZE_T
02650b7f 406# ifdef __SIZE_TYPE__
55289366 407# define YYSIZE_T __SIZE_TYPE__
02650b7f 408# elif defined size_t
55289366 409# define YYSIZE_T size_t
71b56f46 410# elif ! defined YYSIZE_T
55289366
PE
411# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
412# define YYSIZE_T size_t
413# else
414# define YYSIZE_T unsigned int
415# endif
bedf57f5 416#endif
7093d0f5 417
b4c1f9d2
PE
418#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
419
30757c8c 420#ifndef YY_
ae93128c 421# if defined YYENABLE_NLS && YYENABLE_NLS
30757c8c
PE
422# if ENABLE_NLS
423# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
c5178eb7 424# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
30757c8c
PE
425# endif
426# endif
427# ifndef YY_
c5178eb7 428# define YY_(Msgid) Msgid
30757c8c
PE
429# endif
430#endif
431
2a4647a3 432/* Suppress unused-variable warnings by "using" E. */
56f8d560 433#ifdef __GNUC__
c5178eb7 434# define YYUSE(E) ((void) (E))
12ce2df6 435#else
c5178eb7 436# define YYUSE(E) /* empty */
12ce2df6
PE
437#endif
438
107844a3 439#if ]b4_lac_if([[1]], [[! defined yyoverflow || YYERROR_VERBOSE]])[
2779e383 440
107844a3
JD
441/* The parser invokes alloca or malloc; define the necessary symbols. */]dnl
442b4_push_if([], [b4_lac_if([], [[
7093d0f5 443
b929851a
PE
444# ifdef YYSTACK_USE_ALLOCA
445# if YYSTACK_USE_ALLOCA
b929851a
PE
446# ifdef __GNUC__
447# define YYSTACK_ALLOC __builtin_alloca
02650b7f 448# elif defined __BUILTIN_VA_ARG_INCR
55289366 449# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
02650b7f 450# elif defined _AIX
55289366 451# define YYSTACK_ALLOC __alloca
02650b7f 452# elif defined _MSC_VER
55289366
PE
453# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
454# define alloca _alloca
d7e14fc0
PE
455# else
456# define YYSTACK_ALLOC alloca
71b56f46 457# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
bedf57f5 458# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
db3458d6 459 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
8ff146cd
PE
460# ifndef EXIT_SUCCESS
461# define EXIT_SUCCESS 0
55289366 462# endif
bedf57f5 463# endif
7093d0f5
AD
464# endif
465# endif
107844a3 466# endif]])])[
7093d0f5 467
107844a3 468# ifdef YYSTACK_ALLOC
9d9b8b70 469 /* Pacify GCC's `empty if-body' warning. */
56f8d560 470# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
506ffb1f 471# ifndef YYSTACK_ALLOC_MAXIMUM
b9c9f761
PE
472 /* The OS might guarantee only one guard page at the bottom of the stack,
473 and a page size can be as small as 4096 bytes. So we cannot safely
474 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
475 to allow for a few compiler-allocated temporary stack slots. */
e2a21b6f 476# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
506ffb1f 477# endif
7093d0f5 478# else
2779e383
PE
479# define YYSTACK_ALLOC YYMALLOC
480# define YYSTACK_FREE YYFREE
506ffb1f 481# ifndef YYSTACK_ALLOC_MAXIMUM
b4c1f9d2 482# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
506ffb1f 483# endif
8ff146cd 484# if (defined __cplusplus && ! defined EXIT_SUCCESS \
fc3f467f 485 && ! ((defined YYMALLOC || defined malloc) \
e9690142 486 && (defined YYFREE || defined free)))
fc3f467f 487# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
8ff146cd
PE
488# ifndef EXIT_SUCCESS
489# define EXIT_SUCCESS 0
fc3f467f 490# endif
0925ebb4 491# endif
bedf57f5
PE
492# ifndef YYMALLOC
493# define YYMALLOC malloc
71b56f46 494# if ! defined malloc && ! defined EXIT_SUCCESS
bedf57f5
PE
495void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
496# endif
497# endif
498# ifndef YYFREE
499# define YYFREE free
71b56f46 500# if ! defined free && ! defined EXIT_SUCCESS
bedf57f5
PE
501void free (void *); /* INFRINGES ON USER NAME SPACE */
502# endif
503# endif
107844a3
JD
504# endif]b4_lac_if([[
505# define YYCOPY_NEEDED 1]])[
506#endif]b4_lac_if([], [[ /* ! defined yyoverflow || YYERROR_VERBOSE */]])[
cf44a9ae
PE
507
508
02650b7f
PE
509#if (! defined yyoverflow \
510 && (! defined __cplusplus \
ccdc1577
AD
511 || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \
512 && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL)))
7093d0f5 513
600f9b0c
PE
514/* A type that is properly aligned for any stack member. */
515union yyalloc
516{
9ca7f077
JD
517 yytype_int16 yyss_alloc;
518 YYSTYPE yyvs_alloc;]b4_locations_if([
519 YYLTYPE yyls_alloc;])[
520};
600f9b0c
PE
521
522/* The size of the maximum gap between one aligned stack and the next. */
17836590 523# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
600f9b0c
PE
524
525/* The size of an array large to enough to hold all stacks, each with
526 N elements. */
327afc7c 527]b4_locations_if(
58612f1d 528[# define YYSTACK_BYTES(N) \
d42cf844 529 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
17836590 530 + 2 * YYSTACK_GAP_MAXIMUM)],
58612f1d 531[# define YYSTACK_BYTES(N) \
d42cf844 532 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
17836590 533 + YYSTACK_GAP_MAXIMUM)])[
600f9b0c 534
107844a3 535# define YYCOPY_NEEDED 1
5b041382
PE
536
537/* Relocate STACK from its old location to the new one. The
7093d0f5 538 local variables YYSIZE and YYSTACKSIZE give the old and new number of
600f9b0c
PE
539 elements in the stack, and YYPTR gives the new location of the
540 stack. Advance YYPTR to a properly aligned location for the next
541 stack. */
e9690142
JD
542# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
543 do \
544 { \
545 YYSIZE_T yynewbytes; \
546 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
547 Stack = &yyptr->Stack_alloc; \
548 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
549 yyptr += yynewbytes / sizeof (*yyptr); \
550 } \
56f8d560 551 while (0)
7093d0f5 552
cf44a9ae 553#endif
8850be4b 554
107844a3 555#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
762caaf6 556/* Copy COUNT objects from SRC to DST. The source and destination do
107844a3
JD
557 not overlap. */
558# ifndef YYCOPY
559# if defined __GNUC__ && 1 < __GNUC__
762caaf6
AD
560# define YYCOPY(Dst, Src, Count) \
561 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
107844a3 562# else
762caaf6 563# define YYCOPY(Dst, Src, Count) \
e9690142
JD
564 do \
565 { \
566 YYSIZE_T yyi; \
567 for (yyi = 0; yyi < (Count); yyi++) \
762caaf6 568 (Dst)[yyi] = (Src)[yyi]; \
e9690142 569 } \
56f8d560 570 while (0)
107844a3
JD
571# endif
572# endif
573#endif /* !YYCOPY_NEEDED */
574
9d9b8b70 575/* YYFINAL -- State number of the termination state. */
9c1e26bd 576#define YYFINAL ]b4_final_state_number[
39912f52 577/* YYLAST -- Last index in YYTABLE. */
9c1e26bd 578#define YYLAST ]b4_last[
7742ddeb 579
9d9b8b70 580/* YYNTOKENS -- Number of terminals. */
9c1e26bd 581#define YYNTOKENS ]b4_tokens_number[
9d9b8b70 582/* YYNNTS -- Number of nonterminals. */
9c1e26bd 583#define YYNNTS ]b4_nterms_number[
9d9b8b70 584/* YYNRULES -- Number of rules. */
9c1e26bd 585#define YYNRULES ]b4_rules_number[
914202bd 586/* YYNSTATES -- Number of states. */
9c1e26bd 587#define YYNSTATES ]b4_states_number[
7742ddeb 588
cb0b136a
AD
589/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
590 by yylex, with out-of-bounds checking. */
9c1e26bd
AD
591#define YYUNDEFTOK ]b4_undef_token_number[
592#define YYMAXUTOK ]b4_user_token_number_max[
007a50a4 593
e9690142 594#define YYTRANSLATE(YYX) \
a20713a4 595 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
a8289c62 596
cb0b136a
AD
597/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
598 as returned by yylex, without out-of-bounds checking. */
b0400cc6 599static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
a8289c62 600{
c5e3e510 601 ]b4_translate[
a8289c62
RA
602};
603
5f108727 604#if ]b4_api_PREFIX[DEBUG
ba206cf4
AD
605]b4_integral_parser_table_define([rline], [b4_rline],
606 [YYRLINE[YYN] -- Source line where rule number YYN was defined.])[
a8289c62
RA
607#endif
608
5f108727 609#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[
9e0876fb 610/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
9d9b8b70 611 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
c5e3e510 612static const char *const yytname[] =
a8289c62 613{
c5e3e510 614 ]b4_tname[
a8289c62
RA
615};
616#endif
617
c0ad8bf3 618# ifdef YYPRINT
cb0b136a
AD
619/* YYTOKNUM[NUM] -- (External) token number corresponding to the
620 (internal) symbol number NUM (which must be that of a token). */
c5e3e510 621static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
a8289c62 622{
c5e3e510 623 ]b4_toknum[
a8289c62 624};
c0ad8bf3 625# endif
a8289c62 626
c5e3e510 627#define YYPACT_NINF ]b4_pact_ninf[
a8289c62 628
c5178eb7
AD
629#define yypact_value_is_default(Yystate) \
630 ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[
87412882 631
c5e3e510 632#define YYTABLE_NINF ]b4_table_ninf[
a8289c62 633
c5178eb7
AD
634#define yytable_value_is_error(Yytable_value) \
635 ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[
87412882 636
ba206cf4 637]b4_parser_tables_define[
7093d0f5 638
e9690142
JD
639#define yyerrok (yyerrstatus = 0)
640#define yyclearin (yychar = YYEMPTY)
641#define YYEMPTY (-2)
642#define YYEOF 0
a8289c62 643
e9690142
JD
644#define YYACCEPT goto yyacceptlab
645#define YYABORT goto yyabortlab
646#define YYERROR goto yyerrorlab
8a3eb3c8 647
a8289c62 648
10fa2066 649#define YYRECOVERING() (!!yyerrstatus)
a8289c62 650
e9690142
JD
651#define YYBACKUP(Token, Value) \
652do \
d115aad9 653 if (yychar == YYEMPTY) \
e9690142
JD
654 { \
655 yychar = (Token); \
656 yylval = (Value); \
d115aad9
AD
657 YYPOPSTACK (yylen); \
658 yystate = *yyssp; \]b4_lac_if([[
e9690142
JD
659 YY_LAC_DISCARD ("YYBACKUP"); \]])[
660 goto yybackup; \
661 } \
662 else \
663 { \
30757c8c 664 yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \
e9690142
JD
665 YYERROR; \
666 } \
56f8d560 667while (0)
10fa2066 668
3237f570 669/* Error token number */
e9690142
JD
670#define YYTERROR 1
671#define YYERRCODE 256
10fa2066 672
ccdc1577 673]b4_locations_if([[
426903aa 674]b4_yylloc_default_define[
24e0cbd0 675#define YYRHSLOC(Rhs, K) ((Rhs)[K])
3237f570
AD
676]])[
677]b4_yy_location_print_define[
3fc16193 678
3abcd459 679/* YYLEX -- calling `yylex' with the right arguments. */
ae7453f2 680#ifdef YYLEX_PARAM
327afc7c 681# define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM)
74310291 682#else
15f66669 683# define YYLEX ]b4_function_call([yylex], [int], b4_lex_param)[
ae7453f2 684#endif
553e2b22 685
5a35a6cb 686/* Enable debugging if requested. */
5f108727 687#if ]b4_api_PREFIX[DEBUG
b7575ffe 688
2f4f028d 689# ifndef YYFPRINTF
45119af1
PE
690# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
691# define YYFPRINTF fprintf
b7575ffe
PE
692# endif
693
e9690142
JD
694# define YYDPRINTF(Args) \
695do { \
696 if (yydebug) \
697 YYFPRINTF Args; \
56f8d560 698} while (0)
c5e3e510 699
e9690142
JD
700# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
701do { \
702 if (yydebug) \
703 { \
704 YYFPRINTF (stderr, "%s ", Title); \
705 yy_symbol_print (stderr, \
706 Type, Value]b4_locations_if([, Location])[]b4_user_args[); \
707 YYFPRINTF (stderr, "\n"); \
708 } \
56f8d560 709} while (0)
9c1e26bd 710
e3f12e08 711]b4_yy_symbol_print_define[
d1ff7a7c 712
b0937b22
AD
713/*------------------------------------------------------------------.
714| yy_stack_print -- Print the state stack from its BOTTOM up to its |
5348bfbe 715| TOP (included). |
b0937b22
AD
716`------------------------------------------------------------------*/
717
15f66669 718]b4_function_define([yy_stack_print], [static void],
e9690142
JD
719 [[yytype_int16 *yybottom], [yybottom]],
720 [[yytype_int16 *yytop], [yytop]])[
b0937b22 721{
2f4f028d 722 YYFPRINTF (stderr, "Stack now");
cd9e1ba2
PE
723 for (; yybottom <= yytop; yybottom++)
724 {
725 int yybot = *yybottom;
726 YYFPRINTF (stderr, " %d", yybot);
727 }
2f4f028d 728 YYFPRINTF (stderr, "\n");
b0937b22
AD
729}
730
e9690142
JD
731# define YY_STACK_PRINT(Bottom, Top) \
732do { \
733 if (yydebug) \
734 yy_stack_print ((Bottom), (Top)); \
56f8d560 735} while (0)
b0937b22
AD
736
737
738/*------------------------------------------------.
739| Report that the YYRULE is going to be reduced. |
740`------------------------------------------------*/
741
15f66669 742]b4_function_define([yy_reduce_print], [static void],
68dbdee8
AD
743 [[yytype_int16 *yyssp], [yyssp]],
744 [[YYSTYPE *yyvsp], [yyvsp]],
aefef0d6 745 b4_locations_if([[[YYLTYPE *yylsp], [yylsp]],
68dbdee8
AD
746 ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [,
747 b4_parse_param]))[
b0937b22 748{
68dbdee8 749 unsigned long int yylno = yyrline[yyrule];
d1ff7a7c 750 int yynrhs = yyr2[yyrule];
b0937b22 751 int yyi;
d1ff7a7c 752 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
68dbdee8 753 yyrule - 1, yylno);
d1ff7a7c
AD
754 /* The symbols being reduced. */
755 for (yyi = 0; yyi < yynrhs; yyi++)
756 {
f57a7536 757 YYFPRINTF (stderr, " $%d = ", yyi + 1);
68dbdee8
AD
758 yy_symbol_print (stderr,
759 yystos[yyssp[yyi + 1 - yynrhs]],
760 &]b4_rhs_value(yynrhs, yyi + 1)[
761 ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
762 b4_user_args[);
f57a7536 763 YYFPRINTF (stderr, "\n");
d1ff7a7c 764 }
b0937b22
AD
765}
766
e9690142
JD
767# define YY_REDUCE_PRINT(Rule) \
768do { \
769 if (yydebug) \
68dbdee8 770 yy_reduce_print (yyssp, yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \
56f8d560 771} while (0)
b0937b22 772
cf44a9ae
PE
773/* Nonzero means print parse trace. It is left uninitialized so that
774 multiple parsers can coexist. */
17da6427 775int yydebug;
5f108727 776#else /* !]b4_api_PREFIX[DEBUG */
5a35a6cb 777# define YYDPRINTF(Args)
284acc8b 778# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
b0937b22 779# define YY_STACK_PRINT(Bottom, Top)
d9963c85 780# define YY_REDUCE_PRINT(Rule)
5f108727 781#endif /* !]b4_api_PREFIX[DEBUG */
5a35a6cb 782
b0937b22 783
5a35a6cb 784/* YYINITDEPTH -- initial size of the parser's stacks. */
e9690142 785#ifndef YYINITDEPTH
9c1e26bd 786# define YYINITDEPTH ]b4_stack_depth_init[
10fa2066
RS
787#endif
788
5a35a6cb 789/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
600f9b0c
PE
790 if the built-in stack extension method is used).
791
792 Do not make this value too large; the results are undefined if
506ffb1f 793 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
600f9b0c
PE
794 evaluated with infinite-precision integer arithmetic. */
795
10fa2066 796#ifndef YYMAXDEPTH
9c1e26bd 797# define YYMAXDEPTH ]b4_stack_depth_max[
bf35c71c
JD
798#endif]b4_lac_if([[
799
107844a3
JD
800/* Given a state stack such that *YYBOTTOM is its bottom, such that
801 *YYTOP is either its top or is YYTOP_EMPTY to indicate an empty
802 stack, and such that *YYCAPACITY is the maximum number of elements it
803 can hold without a reallocation, make sure there is enough room to
804 store YYADD more elements. If not, allocate a new stack using
805 YYSTACK_ALLOC, copy the existing elements, and adjust *YYBOTTOM,
806 *YYTOP, and *YYCAPACITY to reflect the new capacity and memory
807 location. If *YYBOTTOM != YYBOTTOM_NO_FREE, then free the old stack
808 using YYSTACK_FREE. Return 0 if successful or if no reallocation is
809 required. Return 1 if memory is exhausted. */
810static int
811yy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd,
5f108727 812#if ]b4_api_PREFIX[DEBUG
107844a3
JD
813 char const *yydebug_prefix,
814 char const *yydebug_suffix,
815#endif
816 yytype_int16 **yybottom,
817 yytype_int16 *yybottom_no_free,
818 yytype_int16 **yytop, yytype_int16 *yytop_empty)
819{
820 YYSIZE_T yysize_old =
821 *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1;
822 YYSIZE_T yysize_new = yysize_old + yyadd;
823 if (*yycapacity < yysize_new)
824 {
825 YYSIZE_T yyalloc = 2 * yysize_new;
826 yytype_int16 *yybottom_new;
827 /* Use YYMAXDEPTH for maximum stack size given that the stack
828 should never need to grow larger than the main state stack
829 needs to grow without LAC. */
830 if (YYMAXDEPTH < yysize_new)
831 {
832 YYDPRINTF ((stderr, "%smax size exceeded%s", yydebug_prefix,
833 yydebug_suffix));
834 return 1;
835 }
836 if (YYMAXDEPTH < yyalloc)
837 yyalloc = YYMAXDEPTH;
838 yybottom_new =
839 (yytype_int16*) YYSTACK_ALLOC (yyalloc * sizeof *yybottom_new);
840 if (!yybottom_new)
841 {
842 YYDPRINTF ((stderr, "%srealloc failed%s", yydebug_prefix,
843 yydebug_suffix));
844 return 1;
845 }
846 if (*yytop != yytop_empty)
847 {
848 YYCOPY (yybottom_new, *yybottom, yysize_old);
849 *yytop = yybottom_new + (yysize_old - 1);
850 }
851 if (*yybottom != yybottom_no_free)
852 YYSTACK_FREE (*yybottom);
853 *yybottom = yybottom_new;
854 *yycapacity = yyalloc;]m4_if(b4_percent_define_get([[parse.lac.memory-trace]]),
855 [full], [[
856 YYDPRINTF ((stderr, "%srealloc to %lu%s", yydebug_prefix,
857 (unsigned long int) yyalloc, yydebug_suffix));]])[
858 }
859 return 0;
860}
861
bf35c71c
JD
862/* Establish the initial context for the current lookahead if no initial
863 context is currently established.
864
865 We define a context as a snapshot of the parser stacks. We define
866 the initial context for a lookahead as the context in which the
867 parser initially examines that lookahead in order to select a
868 syntactic action. Thus, if the lookahead eventually proves
869 syntactically unacceptable (possibly in a later context reached via a
870 series of reductions), the initial context can be used to determine
871 the exact set of tokens that would be syntactically acceptable in the
872 lookahead's place. Moreover, it is the context after which any
873 further semantic actions would be erroneous because they would be
874 determined by a syntactically unacceptable token.
875
876 YY_LAC_ESTABLISH should be invoked when a reduction is about to be
877 performed in an inconsistent state (which, for the purposes of LAC,
878 includes consistent states that don't know they're consistent because
879 their default reductions have been disabled). Iff there is a
880 lookahead token, it should also be invoked before reporting a syntax
881 error. This latter case is for the sake of the debugging output.
882
883 For parse.lac=full, the implementation of YY_LAC_ESTABLISH is as
884 follows. If no initial context is currently established for the
885 current lookahead, then check if that lookahead can eventually be
886 shifted if syntactic actions continue from the current context.
887 Report a syntax error if it cannot. */
107844a3
JD
888#define YY_LAC_ESTABLISH \
889do { \
890 if (!yy_lac_established) \
891 { \
892 YYDPRINTF ((stderr, \
893 "LAC: initial context established for %s\n", \
894 yytname[yytoken])); \
895 yy_lac_established = 1; \
896 { \
897 int yy_lac_status = \
898 yy_lac (yyesa, &yyes, &yyes_capacity, yyssp, yytoken); \
899 if (yy_lac_status == 2) \
900 goto yyexhaustedlab; \
901 if (yy_lac_status == 1) \
902 goto yyerrlab; \
903 } \
904 } \
56f8d560 905} while (0)
bf35c71c
JD
906
907/* Discard any previous initial lookahead context because of Event,
908 which may be a lookahead change or an invalidation of the currently
909 established initial context for the current lookahead.
910
911 The most common example of a lookahead change is a shift. An example
912 of both cases is syntax error recovery. That is, a syntax error
913 occurs when the lookahead is syntactically erroneous for the
914 currently established initial context, so error recovery manipulates
915 the parser stacks to try to find a new initial context in which the
916 current lookahead is syntactically acceptable. If it fails to find
917 such a context, it discards the lookahead. */
5f108727 918#if ]b4_api_PREFIX[DEBUG
bf35c71c
JD
919# define YY_LAC_DISCARD(Event) \
920do { \
921 if (yy_lac_established) \
922 { \
923 if (yydebug) \
924 YYFPRINTF (stderr, "LAC: initial context discarded due to " \
925 Event "\n"); \
926 yy_lac_established = 0; \
927 } \
56f8d560 928} while (0)
bf35c71c
JD
929#else
930# define YY_LAC_DISCARD(Event) yy_lac_established = 0
10fa2066 931#endif
a8289c62 932
bf35c71c 933/* Given the stack whose top is *YYSSP, return 0 iff YYTOKEN can
107844a3
JD
934 eventually (after perhaps some reductions) be shifted, return 1 if
935 not, or return 2 if memory is exhausted. As preconditions and
936 postconditions: *YYES_CAPACITY is the allocated size of the array to
937 which *YYES points, and either *YYES = YYESA or *YYES points to an
938 array allocated with YYSTACK_ALLOC. yy_lac may overwrite the
939 contents of either array, alter *YYES and *YYES_CAPACITY, and free
940 any old *YYES other than YYESA. */
bf35c71c 941static int
107844a3
JD
942yy_lac (yytype_int16 *yyesa, yytype_int16 **yyes,
943 YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken)
bf35c71c
JD
944{
945 yytype_int16 *yyes_prev = yyssp;
bf35c71c
JD
946 yytype_int16 *yyesp = yyes_prev;
947 YYDPRINTF ((stderr, "LAC: checking lookahead %s:", yytname[yytoken]));
948 if (yytoken == YYUNDEFTOK)
949 {
950 YYDPRINTF ((stderr, " Always Err\n"));
951 return 1;
952 }
953 while (1)
954 {
955 int yyrule = yypact[*yyesp];
956 if (yypact_value_is_default (yyrule)
957 || (yyrule += yytoken) < 0 || YYLAST < yyrule
958 || yycheck[yyrule] != yytoken)
959 {
960 yyrule = yydefact[*yyesp];
961 if (yyrule == 0)
962 {
963 YYDPRINTF ((stderr, " Err\n"));
964 return 1;
965 }
966 }
967 else
968 {
969 yyrule = yytable[yyrule];
970 if (yytable_value_is_error (yyrule))
971 {
972 YYDPRINTF ((stderr, " Err\n"));
973 return 1;
974 }
975 if (0 < yyrule)
976 {
977 YYDPRINTF ((stderr, " S%d\n", yyrule));
978 return 0;
979 }
980 yyrule = -yyrule;
981 }
982 {
983 YYSIZE_T yylen = yyr2[yyrule];
984 YYDPRINTF ((stderr, " R%d", yyrule - 1));
985 if (yyesp != yyes_prev)
986 {
107844a3 987 YYSIZE_T yysize = yyesp - *yyes + 1;
bf35c71c
JD
988 if (yylen < yysize)
989 {
990 yyesp -= yylen;
991 yylen = 0;
992 }
993 else
994 {
995 yylen -= yysize;
996 yyesp = yyes_prev;
997 }
998 }
999 if (yylen)
1000 yyesp = yyes_prev -= yylen;
1001 }
1002 {
1003 int yystate;
1004 {
1005 int yylhs = yyr1[yyrule] - YYNTOKENS;
1006 yystate = yypgoto[yylhs] + *yyesp;
1007 if (yystate < 0 || YYLAST < yystate
1008 || yycheck[yystate] != *yyesp)
1009 yystate = yydefgoto[yylhs];
1010 else
1011 yystate = yytable[yystate];
1012 }
1013 if (yyesp == yyes_prev)
1014 {
107844a3 1015 yyesp = *yyes;
bf35c71c
JD
1016 *yyesp = yystate;
1017 }
1018 else
1019 {
107844a3 1020 if (yy_lac_stack_realloc (yyes_capacity, 1,
5f108727 1021#if ]b4_api_PREFIX[DEBUG
107844a3
JD
1022 " (", ")",
1023#endif
1024 yyes, yyesa, &yyesp, yyes_prev))
bf35c71c 1025 {
107844a3 1026 YYDPRINTF ((stderr, "\n"));
bf35c71c
JD
1027 return 2;
1028 }
1029 *++yyesp = yystate;
1030 }
3c9b20ff 1031 YYDPRINTF ((stderr, " G%d", yystate));
bf35c71c
JD
1032 }
1033 }
1034}]])[
1035
a8289c62 1036
7093d0f5
AD
1037#if YYERROR_VERBOSE
1038
1039# ifndef yystrlen
02650b7f 1040# if defined __GLIBC__ && defined _STRING_H
7093d0f5
AD
1041# define yystrlen strlen
1042# else
1043/* Return the length of YYSTR. */
15f66669 1044]b4_function_define([yystrlen], [static YYSIZE_T],
1b9c21fb 1045 [[const char *yystr], [yystr]])[
7093d0f5 1046{
12ce2df6
PE
1047 YYSIZE_T yylen;
1048 for (yylen = 0; yystr[yylen]; yylen++)
7093d0f5 1049 continue;
12ce2df6 1050 return yylen;
7093d0f5
AD
1051}
1052# endif
1053# endif
1054
1055# ifndef yystpcpy
02650b7f 1056# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
7093d0f5
AD
1057# define yystpcpy stpcpy
1058# else
1059/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1060 YYDEST. */
15f66669 1061]b4_function_define([yystpcpy], [static char *],
1b9c21fb 1062 [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[
7093d0f5 1063{
cb530ce9
PE
1064 char *yyd = yydest;
1065 const char *yys = yysrc;
7093d0f5
AD
1066
1067 while ((*yyd++ = *yys++) != '\0')
1068 continue;
1069
1070 return yyd - 1;
1071}
1072# endif
1073# endif
1074
9e0876fb
PE
1075# ifndef yytnamerr
1076/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1077 quotes and backslashes, so that it's suitable for yyerror. The
1078 heuristic is that double-quoting is unnecessary unless the string
1079 contains an apostrophe, a comma, or backslash (other than
1080 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1081 null, do not copy; instead, return the length of what the result
1082 would have been. */
1083static YYSIZE_T
1084yytnamerr (char *yyres, const char *yystr)
1085{
1086 if (*yystr == '"')
1087 {
276f48df 1088 YYSIZE_T yyn = 0;
9e0876fb
PE
1089 char const *yyp = yystr;
1090
1091 for (;;)
e9690142
JD
1092 switch (*++yyp)
1093 {
1094 case '\'':
1095 case ',':
1096 goto do_not_strip_quotes;
1097
1098 case '\\':
1099 if (*++yyp != '\\')
1100 goto do_not_strip_quotes;
1101 /* Fall through. */
1102 default:
1103 if (yyres)
1104 yyres[yyn] = *yyp;
1105 yyn++;
1106 break;
1107
1108 case '"':
1109 if (yyres)
1110 yyres[yyn] = '\0';
1111 return yyn;
1112 }
9e0876fb
PE
1113 do_not_strip_quotes: ;
1114 }
1115
1116 if (! yyres)
1117 return yystrlen (yystr);
1118
1119 return yystpcpy (yyres, yystr) - yyres;
1120}
1121# endif
1122
45319f13 1123/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
bf35c71c
JD
1124 about the unexpected token YYTOKEN for the state stack whose top is
1125 YYSSP.]b4_lac_if([[ In order to see if a particular token T is a
107844a3 1126 valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).]])[
45319f13 1127
d2060f06
JD
1128 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
1129 not large enough to hold the message. In that case, also set
1130 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
bf35c71c
JD
1131 required number of bytes is too large to store]b4_lac_if([[ or if
1132 yy_lac returned 2]])[. */
45319f13
JD
1133static int
1134yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
107844a3
JD
1135 ]b4_lac_if([[yytype_int16 *yyesa, yytype_int16 **yyes,
1136 YYSIZE_T *yyes_capacity, ]])[yytype_int16 *yyssp, int yytoken)
b4bbc4a0 1137{
eeaf1dc6 1138 YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
b4bbc4a0
JD
1139 YYSIZE_T yysize = yysize0;
1140 YYSIZE_T yysize1;
1141 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1142 /* Internationalized format string. */
eeaf1dc6 1143 const char *yyformat = YY_NULL;
b4bbc4a0
JD
1144 /* Arguments of yyformat. */
1145 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
d2060f06
JD
1146 /* Number of reported tokens (one for the "unexpected", one per
1147 "expected"). */
1148 int yycount = 0;
b4bbc4a0 1149
d2060f06 1150 /* There are many possibilities here to consider:
d2060f06
JD
1151 - If this state is a consistent state with a default action, then
1152 the only way this function was invoked is if the default action
1153 is an error action. In that case, don't check for expected
1154 tokens because there are none.
1155 - The only way there can be no lookahead present (in yychar) is if
1156 this state is a consistent state with a default action. Thus,
1157 detecting the absence of a lookahead is sufficient to determine
1158 that there is no unexpected or expected token to report. In that
1159 case, just report a simple "syntax error".
1160 - Don't assume there isn't a lookahead just because this state is a
1161 consistent state with a default action. There might have been a
1162 previous inconsistent state, consistent state with a non-default
bf35c71c
JD
1163 action, or user semantic action that manipulated yychar.]b4_lac_if([[
1164 In the first two cases, it might appear that the current syntax
1165 error should have been detected in the previous state when yy_lac
1166 was invoked. However, at that time, there might have been a
1167 different syntax error that discarded a different initial context
1168 during error recovery, leaving behind the current lookahead.]], [[
d2060f06
JD
1169 - Of course, the expected token list depends on states to have
1170 correct lookahead information, and it depends on the parser not
1171 to perform extra reductions after fetching a lookahead from the
1172 scanner and before detecting a syntax error. Thus, state merging
1173 (from LALR or IELR) and default reductions corrupt the expected
1174 token list. However, the list is correct for canonical LR with
1175 one exception: it will still contain any token that will not be
bf35c71c 1176 accepted due to an error action in a later state.]])[
d2060f06
JD
1177 */
1178 if (yytoken != YYEMPTY)
1179 {
bf35c71c
JD
1180 int yyn = yypact[*yyssp];]b4_lac_if([[
1181 YYDPRINTF ((stderr, "Constructing syntax error message\n"));]])[
d2060f06
JD
1182 yyarg[yycount++] = yytname[yytoken];
1183 if (!yypact_value_is_default (yyn))
bf35c71c 1184 {]b4_lac_if([], [[
b4bbc4a0
JD
1185 /* Start YYX at -YYN if negative to avoid negative indexes in
1186 YYCHECK. In other words, skip the first -YYN actions for
1187 this state because they are default actions. */
1188 int yyxbegin = yyn < 0 ? -yyn : 0;
b4bbc4a0
JD
1189 /* Stay within bounds of both yycheck and yytname. */
1190 int yychecklim = YYLAST - yyn + 1;
bf35c71c
JD
1191 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;]])[
1192 int yyx;]b4_lac_if([[
1193
1194 for (yyx = 0; yyx < YYNTOKENS; ++yyx)
1195 if (yyx != YYTERROR && yyx != YYUNDEFTOK)
1196 {
1197 {
107844a3
JD
1198 int yy_lac_status = yy_lac (yyesa, yyes, yyes_capacity,
1199 yyssp, yyx);
bf35c71c
JD
1200 if (yy_lac_status == 2)
1201 return 2;
1202 if (yy_lac_status == 1)
1203 continue;
1204 }]], [[
1205
b4bbc4a0
JD
1206 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1207 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1208 && !yytable_value_is_error (yytable[yyx + yyn]))
bf35c71c 1209 {]])[
b4bbc4a0
JD
1210 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1211 {
1212 yycount = 1;
1213 yysize = yysize0;
1214 break;
1215 }
1216 yyarg[yycount++] = yytname[yyx];
eeaf1dc6 1217 yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
d2060f06
JD
1218 if (! (yysize <= yysize1
1219 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1220 return 2;
b4bbc4a0
JD
1221 yysize = yysize1;
1222 }
bf35c71c 1223 }]b4_lac_if([[
5f108727 1224# if ]b4_api_PREFIX[DEBUG
bf35c71c
JD
1225 else if (yydebug)
1226 YYFPRINTF (stderr, "No expected tokens.\n");
1227# endif]])[
d2060f06 1228 }
b4bbc4a0
JD
1229
1230 switch (yycount)
b4c1f9d2 1231 {
bf35c71c 1232# define YYCASE_(N, S) \
b4bbc4a0
JD
1233 case N: \
1234 yyformat = S; \
1235 break
d2060f06 1236 YYCASE_(0, YY_("syntax error"));
b4bbc4a0
JD
1237 YYCASE_(1, YY_("syntax error, unexpected %s"));
1238 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1239 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1240 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1241 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
bf35c71c 1242# undef YYCASE_
b4bbc4a0 1243 }
eeb29422 1244
b4bbc4a0
JD
1245 yysize1 = yysize + yystrlen (yyformat);
1246 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
d2060f06 1247 return 2;
b4bbc4a0
JD
1248 yysize = yysize1;
1249
1250 if (*yymsg_alloc < yysize)
1251 {
1252 *yymsg_alloc = 2 * yysize;
1253 if (! (yysize <= *yymsg_alloc
1254 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1255 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
d2060f06 1256 return 1;
b4bbc4a0
JD
1257 }
1258
1259 /* Avoid sprintf, as that infringes on the user's name space.
1260 Don't have undefined behavior even if the translation
1261 produced a string with the wrong number of "%s"s. */
1262 {
1263 char *yyp = *yymsg;
1264 int yyi = 0;
1265 while ((*yyp = *yyformat) != '\0')
1266 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
45319f13 1267 {
b4bbc4a0
JD
1268 yyp += yytnamerr (yyp, yyarg[yyi++]);
1269 yyformat += 2;
45319f13 1270 }
b4bbc4a0 1271 else
45319f13 1272 {
b4bbc4a0
JD
1273 yyp++;
1274 yyformat++;
45319f13 1275 }
b4bbc4a0
JD
1276 }
1277 return 0;
1278}
b4c1f9d2 1279#endif /* YYERROR_VERBOSE */
a8289c62 1280
e3f12e08 1281]b4_yydestruct_define[
4a2a22f4 1282
c3e9f08f 1283]b4_pure_if([], [
9ca7f077 1284
bb31eb56 1285b4_declare_scanner_communication_variables])[]b4_push_if([[
9ca7f077 1286
bb31eb56
JD
1287struct yypstate
1288 {]b4_declare_parser_state_variables[
9ca7f077
JD
1289 /* Used to determine if this is the first time this instance has
1290 been used. */
1291 int yynew;
333e670c 1292 };]b4_pure_if([], [[
a35f64ea 1293
333e670c
JD
1294static char yypstate_allocated = 0;]])b4_pull_if([
1295
15f66669 1296b4_function_define([[yyparse]], [[int]], b4_parse_param)[
9ca7f077 1297{
eeaf1dc6 1298 return yypull_parse (YY_NULL]m4_ifset([b4_parse_param],
15f66669 1299 [[, ]b4_args(b4_parse_param)])[);
333e670c 1300}
0245f82d 1301
15f66669 1302]b4_function_define([[yypull_parse]], [[int]],
9ca7f077
JD
1303 [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [,
1304 b4_parse_param]))[
1305{
1306 int yystatus;
333e670c
JD
1307 yypstate *yyps_local;]b4_pure_if([[
1308 int yychar;
1309 YYSTYPE yylval;]b4_locations_if([[
a1d1ab50 1310 YYLTYPE yylloc][]b4_yyloc_default[;]])])[
eeaf1dc6
AD
1311 if (yyps)
1312 yyps_local = yyps;
1313 else
9ca7f077
JD
1314 {
1315 yyps_local = yypstate_new ();
1316 if (!yyps_local)
1317 {]b4_pure_if([[
1318 yyerror (]b4_yyerror_args[YY_("memory exhausted"));]], [[
1319 if (!yypstate_allocated)
1320 yyerror (]b4_yyerror_args[YY_("memory exhausted"));]])[
1321 return 2;
1322 }
1323 }
9ca7f077
JD
1324 do {
1325 yychar = YYLEX;
1326 yystatus =
15f66669 1327 yypush_parse (yyps_local]b4_pure_if([[, yychar, &yylval]b4_locations_if([[, &yylloc]])])m4_ifset([b4_parse_param], [, b4_args(b4_parse_param)])[);
9ca7f077 1328 } while (yystatus == YYPUSH_MORE);
eeaf1dc6 1329 if (!yyps)
9ca7f077
JD
1330 yypstate_delete (yyps_local);
1331 return yystatus;
333e670c
JD
1332}]])[
1333
9ca7f077 1334/* Initialize the parser data structure. */
15f66669 1335]b4_function_define([[yypstate_new]], [[yypstate *]])[
9ca7f077
JD
1336{
1337 yypstate *yyps;]b4_pure_if([], [[
1338 if (yypstate_allocated)
eeaf1dc6 1339 return YY_NULL;]])[
9ca7f077
JD
1340 yyps = (yypstate *) malloc (sizeof *yyps);
1341 if (!yyps)
eeaf1dc6 1342 return YY_NULL;
9ca7f077
JD
1343 yyps->yynew = 1;]b4_pure_if([], [[
1344 yypstate_allocated = 1;]])[
1345 return yyps;
1346}
1347
15f66669 1348]b4_function_define([[yypstate_delete]], [[void]],
9ca7f077
JD
1349 [[[yypstate *yyps]], [[yyps]]])[
1350{
1351#ifndef yyoverflow
1352 /* If the stack was reallocated but the parse did not complete, then the
1353 stack still needs to be freed. */
1354 if (!yyps->yynew && yyps->yyss != yyps->yyssa)
1355 YYSTACK_FREE (yyps->yyss);
107844a3
JD
1356#endif]b4_lac_if([[
1357 if (!yyps->yynew && yyps->yyes != yyps->yyesa)
1358 YYSTACK_FREE (yyps->yyes);]])[
9ca7f077
JD
1359 free (yyps);]b4_pure_if([], [[
1360 yypstate_allocated = 0;]])[
1361}
bb31eb56
JD
1362]b4_pure_if([[
1363#define ]b4_prefix[nerrs yyps->]b4_prefix[nerrs]])[
1364#define yystate yyps->yystate
9ca7f077
JD
1365#define yyerrstatus yyps->yyerrstatus
1366#define yyssa yyps->yyssa
1367#define yyss yyps->yyss
1368#define yyssp yyps->yyssp
1369#define yyvsa yyps->yyvsa
1370#define yyvs yyps->yyvs
bb31eb56
JD
1371#define yyvsp yyps->yyvsp]b4_locations_if([[
1372#define yylsa yyps->yylsa
9ca7f077
JD
1373#define yyls yyps->yyls
1374#define yylsp yyps->yylsp
bb31eb56 1375#define yyerror_range yyps->yyerror_range]])[
107844a3
JD
1376#define yystacksize yyps->yystacksize]b4_lac_if([[
1377#define yyesa yyps->yyesa
1378#define yyes yyps->yyes
1379#define yyes_capacity yyps->yyes_capacity]])[
bb31eb56
JD
1380
1381
1382/*---------------.
1383| yypush_parse. |
1384`---------------*/
1385
15f66669 1386]b4_function_define([[yypush_parse]], [[int]],
9ca7f077
JD
1387 [[[yypstate *yyps]], [[yyps]]]b4_pure_if([,
1388 [[[int yypushed_char]], [[yypushed_char]]],
1389 [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([,
a1d1ab50 1390 [[[YYLTYPE *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
bb31eb56
JD
1391 b4_parse_param]))], [[
1392
1393
1394/*----------.
1395| yyparse. |
1396`----------*/
1397
15f66669 1398]b4_function_define([yyparse], [int], b4_parse_param)])[
bb31eb56
JD
1399{]b4_pure_if([b4_declare_scanner_communication_variables
1400])b4_push_if([b4_pure_if([], [[
1401 int yypushed_char = yychar;
1402 YYSTYPE yypushed_val = yylval;]b4_locations_if([[
1403 YYLTYPE yypushed_loc = yylloc;]])
1404])],
1405 [b4_declare_parser_state_variables
bf35c71c
JD
1406])b4_lac_if([[
1407 int yy_lac_established = 0;]])[
cb530ce9 1408 int yyn;
600f9b0c 1409 int yyresult;
742e4900 1410 /* Lookahead token as an internal (translated) token number. */
e3f8c4ef 1411 int yytoken = 0;
9ca7f077
JD
1412 /* The variables used to return semantic value and location from the
1413 action routines. */
fa6aa7b3
JD
1414 YYSTYPE yyval;]b4_locations_if([[
1415 YYLTYPE yyloc;]])[
1416
b4c1f9d2
PE
1417#if YYERROR_VERBOSE
1418 /* Buffer for error messages, and its allocated size. */
1419 char yymsgbuf[128];
1420 char *yymsg = yymsgbuf;
1421 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1422#endif
10fa2066 1423
327afc7c 1424#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[)
10fa2066 1425
a85284cf 1426 /* The number of symbols on the RHS of the reduced rule.
9d9b8b70 1427 Keep to zero when no symbol should be popped. */
fa6aa7b3
JD
1428 int yylen = 0;]b4_push_if([[
1429
9ca7f077
JD
1430 if (!yyps->yynew)
1431 {
1432 yyn = yypact[yystate];
1433 goto yyread_pushed_token;
fa6aa7b3
JD
1434 }]])[
1435
7d846072
AD
1436 yyssp = yyss = yyssa;
1437 yyvsp = yyvs = yyvsa;]b4_locations_if([[
1438 yylsp = yyls = yylsa;]])[
107844a3
JD
1439 yystacksize = YYINITDEPTH;]b4_lac_if([[
1440
1441 yyes = yyesa;
1442 yyes_capacity = sizeof yyesa / sizeof *yyes;
1443 if (YYMAXDEPTH < yyes_capacity)
1444 yyes_capacity = YYMAXDEPTH;]])[
10fa2066 1445
2f4f028d 1446 YYDPRINTF ((stderr, "Starting parse\n"));
10fa2066
RS
1447
1448 yystate = 0;
1449 yyerrstatus = 0;
17da6427 1450 yynerrs = 0;
9ca7f077 1451 yychar = YYEMPTY; /* Cause a token to be read. */
a1d1ab50 1452]m4_ifdef([b4_initial_action], [
cd735a8c 1453b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [],
a1d1ab50
AD
1454 [m4_define([b4_at_dollar_used])dnl
1455b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl
9ca7f077
JD
1456/* User initialization code. */
1457b4_user_initial_action
cd735a8c 1458b4_dollar_popdef[]dnl
407d4a75 1459m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval;
cd735a8c 1460]])])dnl
a1d1ab50
AD
1461b4_locations_if([[ yylsp[0] = ]b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])[;
1462]])dnl
cd735a8c 1463[ goto yysetstate;
10fa2066 1464
71da9eea
AD
1465/*------------------------------------------------------------.
1466| yynewstate -- Push a new state, which is found in yystate. |
1467`------------------------------------------------------------*/
342b8b6e 1468 yynewstate:
71da9eea 1469 /* In all cases, when you get here, the value and location stacks
9d9b8b70 1470 have just been pushed. So pushing a state here evens the stacks. */
cbd89906
PE
1471 yyssp++;
1472
342b8b6e 1473 yysetstate:
cbd89906 1474 *yyssp = yystate;
10fa2066 1475
39912f52 1476 if (yyss + yystacksize - 1 <= yyssp)
10fa2066 1477 {
10fa2066 1478 /* Get the current used size of the three stacks, in elements. */
7093d0f5 1479 YYSIZE_T yysize = yyssp - yyss + 1;
10fa2066
RS
1480
1481#ifdef yyoverflow
3d76b07d 1482 {
e9690142
JD
1483 /* Give user a chance to reallocate the stack. Use copies of
1484 these so that the &'s don't force the real ones into
1485 memory. */
1486 YYSTYPE *yyvs1 = yyvs;
1487 yytype_int16 *yyss1 = yyss;]b4_locations_if([
1488 YYLTYPE *yyls1 = yyls;])[
1489
1490 /* Each stack pointer address is followed by the size of the
1491 data in use in that stack, in bytes. This used to be a
1492 conditional around just the two extra args, but that might
1493 be undefined if yyoverflow is a macro. */
1494 yyoverflow (YY_("memory exhausted"),
1495 &yyss1, yysize * sizeof (*yyssp),
1496 &yyvs1, yysize * sizeof (*yyvsp),]b4_locations_if([
1497 &yyls1, yysize * sizeof (*yylsp),])[
1498 &yystacksize);
9ca7f077 1499]b4_locations_if([
e9690142
JD
1500 yyls = yyls1;])[
1501 yyss = yyss1;
1502 yyvs = yyvs1;
3d76b07d 1503 }
10fa2066 1504#else /* no yyoverflow */
cf44a9ae 1505# ifndef YYSTACK_RELOCATE
1a059451 1506 goto yyexhaustedlab;
cf44a9ae 1507# else
10fa2066 1508 /* Extend the stack our own way. */
39912f52 1509 if (YYMAXDEPTH <= yystacksize)
e9690142 1510 goto yyexhaustedlab;
10fa2066 1511 yystacksize *= 2;
39912f52 1512 if (YYMAXDEPTH < yystacksize)
e9690142 1513 yystacksize = YYMAXDEPTH;
e9e4c321 1514
600f9b0c 1515 {
e9690142
JD
1516 yytype_int16 *yyss1 = yyss;
1517 union yyalloc *yyptr =
1518 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1519 if (! yyptr)
1520 goto yyexhaustedlab;
1521 YYSTACK_RELOCATE (yyss_alloc, yyss);
1522 YYSTACK_RELOCATE (yyvs_alloc, yyvs);]b4_locations_if([
1523 YYSTACK_RELOCATE (yyls_alloc, yyls);])[
cf44a9ae 1524# undef YYSTACK_RELOCATE
e9690142
JD
1525 if (yyss1 != yyssa)
1526 YYSTACK_FREE (yyss1);
600f9b0c 1527 }
cf44a9ae 1528# endif
10fa2066
RS
1529#endif /* no yyoverflow */
1530
7093d0f5 1531 yyssp = yyss + yysize - 1;
9ca7f077
JD
1532 yyvsp = yyvs + yysize - 1;]b4_locations_if([
1533 yylsp = yyls + yysize - 1;])[
10fa2066 1534
30757c8c 1535 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
e9690142 1536 (unsigned long int) yystacksize));
10fa2066 1537
39912f52 1538 if (yyss + yystacksize - 1 <= yyssp)
e9690142 1539 YYABORT;
10fa2066
RS
1540 }
1541
30757c8c 1542 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
10fa2066 1543
868d2d96
JD
1544 if (yystate == YYFINAL)
1545 YYACCEPT;
1546
10fa2066 1547 goto yybackup;
71da9eea 1548
71da9eea
AD
1549/*-----------.
1550| yybackup. |
1551`-----------*/
1552yybackup:
10fa2066 1553
a85284cf 1554 /* Do appropriate processing given the current state. Read a
742e4900 1555 lookahead token if we need one and don't already have one. */
10fa2066 1556
742e4900 1557 /* First try to decide what to do without reference to lookahead token. */
10fa2066 1558 yyn = yypact[yystate];
f2b30bdf 1559 if (yypact_value_is_default (yyn))
10fa2066
RS
1560 goto yydefault;
1561
742e4900 1562 /* Not known => get a lookahead token if don't already have one. */
10fa2066 1563
742e4900 1564 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
a20713a4 1565 if (yychar == YYEMPTY)
fa6aa7b3
JD
1566 {]b4_push_if([[
1567 if (!yyps->yynew)
1568 {]b4_use_push_for_pull_if([], [[
1569 YYDPRINTF ((stderr, "Return for a new token:\n"));]])[
1570 yyresult = YYPUSH_MORE;
9ca7f077
JD
1571 goto yypushreturn;
1572 }
fa6aa7b3 1573 yyps->yynew = 0;]b4_pure_if([], [[
9ca7f077
JD
1574 /* Restoring the pushed token is only necessary for the first
1575 yypush_parse invocation since subsequent invocations don't overwrite
1576 it before jumping to yyread_pushed_token. */
1577 yychar = yypushed_char;
fa6aa7b3
JD
1578 yylval = yypushed_val;]b4_locations_if([[
1579 yylloc = yypushed_loc;]])])[
1580yyread_pushed_token:]])[
1581 YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[
1582 yychar = yypushed_char;
9ca7f077 1583 if (yypushed_val)
fa6aa7b3
JD
1584 yylval = *yypushed_val;]b4_locations_if([[
1585 if (yypushed_loc)
1586 yylloc = *yypushed_loc;]])])], [[
1587 yychar = YYLEX;]])[
1588 }
10fa2066 1589
a20713a4 1590 if (yychar <= YYEOF)
10fa2066 1591 {
a20713a4 1592 yychar = yytoken = YYEOF;
2f4f028d 1593 YYDPRINTF ((stderr, "Now at end of input.\n"));
10fa2066
RS
1594 }
1595 else
1596 {
a20713a4 1597 yytoken = YYTRANSLATE (yychar);
30757c8c 1598 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
10fa2066
RS
1599 }
1600
b0400cc6 1601 /* If the proper action on seeing token YYTOKEN is to reduce or to
e5cfd9d8 1602 detect an error, take that action. */
b0400cc6 1603 yyn += yytoken;
bf35c71c
JD
1604 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)]b4_lac_if([[
1605 {
1606 YY_LAC_ESTABLISH;
1607 goto yydefault;
1608 }]], [[
1609 goto yydefault;]])[
e5cfd9d8
PE
1610 yyn = yytable[yyn];
1611 if (yyn <= 0)
10fa2066 1612 {
f2b30bdf 1613 if (yytable_value_is_error (yyn))
bf35c71c
JD
1614 goto yyerrlab;]b4_lac_if([[
1615 YY_LAC_ESTABLISH;]])[
10fa2066
RS
1616 yyn = -yyn;
1617 goto yyreduce;
1618 }
10fa2066 1619
a85284cf
AD
1620 /* Count tokens shifted since error; after three, turn off error
1621 status. */
1622 if (yyerrstatus)
1623 yyerrstatus--;
1624
742e4900 1625 /* Shift the lookahead token. */
30757c8c 1626 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
10fa2066 1627
868d2d96 1628 /* Discard the shifted token. */
bf35c71c
JD
1629 yychar = YYEMPTY;]b4_lac_if([[
1630 YY_LAC_DISCARD ("shift");]])[
10fa2066 1631
a85284cf 1632 yystate = yyn;
e365aa4c 1633 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
17da6427 1634 *++yyvsp = yylval;
e365aa4c 1635 YY_IGNORE_MAYBE_UNINITIALIZED_END
327afc7c 1636]b4_locations_if([ *++yylsp = yylloc;])[
10fa2066
RS
1637 goto yynewstate;
1638
10fa2066 1639
71da9eea
AD
1640/*-----------------------------------------------------------.
1641| yydefault -- do the default action for the current state. |
1642`-----------------------------------------------------------*/
1643yydefault:
10fa2066
RS
1644 yyn = yydefact[yystate];
1645 if (yyn == 0)
1646 goto yyerrlab;
71da9eea 1647 goto yyreduce;
10fa2066 1648
71da9eea
AD
1649
1650/*-----------------------------.
1651| yyreduce -- Do a reduction. |
1652`-----------------------------*/
10fa2066 1653yyreduce:
71da9eea 1654 /* yyn is the number of a rule to reduce with. */
10fa2066 1655 yylen = yyr2[yyn];
da9abf43
AD
1656
1657 /* If YYLEN is nonzero, implement the default value of the action:
573c1d9f 1658 `$$ = $1'.
da9abf43 1659
accea6db
PE
1660 Otherwise, the following line sets YYVAL to garbage.
1661 This behavior is undocumented and Bison
da9abf43
AD
1662 users should not rely upon it. Assigning to YYVAL
1663 unconditionally makes the parser a bit smaller, and it avoids a
1664 GCC warning that YYVAL may be used uninitialized. */
1665 yyval = yyvsp[1-yylen];
3abcd459 1666
327afc7c 1667]b4_locations_if(
9d9b8b70 1668[[ /* Default location. */
401aace6 1669 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[
bf35c71c
JD
1670 YY_REDUCE_PRINT (yyn);]b4_lac_if([[
1671 {
1672 int yychar_backup = yychar;
1673 switch (yyn)
1674 {
1675 ]b4_user_actions[
1676 default: break;
1677 }
1678 if (yychar_backup != yychar)
1679 YY_LAC_DISCARD ("yychar change");
1680 }]], [[
a8289c62 1681 switch (yyn)
d1ff7a7c 1682 {
8ec0a172 1683 ]b4_user_actions[
95f22ad2 1684 default: break;
bf35c71c 1685 }]])[
df222dfa
JD
1686 /* User semantic actions sometimes alter yychar, and that requires
1687 that yytoken be updated with the new translation. We take the
1688 approach of translating immediately before every use of yytoken.
1689 One alternative is translating here after every semantic action,
1690 but that translation would be missed if the semantic action invokes
1691 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1692 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
1693 incorrect destructor might then be invoked immediately. In the
1694 case of YYERROR or YYBACKUP, subsequent parser actions might lead
1695 to an incorrect destructor call or verbose syntax error message
1696 before the lookahead is translated. */
d1ff7a7c 1697 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
897668ee 1698
a85284cf
AD
1699 YYPOPSTACK (yylen);
1700 yylen = 0;
b0937b22 1701 YY_STACK_PRINT (yyss, yyssp);
10fa2066 1702
9ca7f077
JD
1703 *++yyvsp = yyval;]b4_locations_if([
1704 *++yylsp = yyloc;])[
10fa2066 1705
41aca2e0
AD
1706 /* Now `shift' the result of the reduction. Determine what state
1707 that goes to, based on the state we popped back to and the rule
1708 number reduced by. */
10fa2066
RS
1709
1710 yyn = yyr1[yyn];
1711
7742ddeb 1712 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
34ec3579 1713 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
10fa2066
RS
1714 yystate = yytable[yystate];
1715 else
7742ddeb 1716 yystate = yydefgoto[yyn - YYNTOKENS];
10fa2066
RS
1717
1718 goto yynewstate;
1719
10fa2066 1720
47db7ed1
AD
1721/*--------------------------------------.
1722| yyerrlab -- here on detecting error. |
1723`--------------------------------------*/
71da9eea 1724yyerrlab:
df222dfa
JD
1725 /* Make sure we have latest lookahead translation. See comments at
1726 user semantic actions for why this is necessary. */
d2060f06 1727 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
df222dfa 1728
71da9eea
AD
1729 /* If not already recovering from an error, report this error. */
1730 if (!yyerrstatus)
10fa2066 1731 {
17da6427 1732 ++yynerrs;
b4c1f9d2
PE
1733#if ! YYERROR_VERBOSE
1734 yyerror (]b4_yyerror_args[YY_("syntax error"));
1735#else
107844a3
JD
1736# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \]b4_lac_if([[
1737 yyesa, &yyes, &yyes_capacity, \]])[
1738 yyssp, yytoken)
34db451c
JD
1739 {
1740 char const *yymsgp = YY_("syntax error");
bf35c71c
JD
1741 int yysyntax_error_status;]b4_lac_if([[
1742 if (yychar != YYEMPTY)
1743 YY_LAC_ESTABLISH;]])[
1744 yysyntax_error_status = YYSYNTAX_ERROR;
34db451c
JD
1745 if (yysyntax_error_status == 0)
1746 yymsgp = yymsg;
d2060f06 1747 else if (yysyntax_error_status == 1)
34db451c
JD
1748 {
1749 if (yymsg != yymsgbuf)
1750 YYSTACK_FREE (yymsg);
1751 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
1752 if (!yymsg)
1753 {
1754 yymsg = yymsgbuf;
1755 yymsg_alloc = sizeof yymsgbuf;
d2060f06 1756 yysyntax_error_status = 2;
34db451c
JD
1757 }
1758 else
1759 {
1760 yysyntax_error_status = YYSYNTAX_ERROR;
1761 yymsgp = yymsg;
1762 }
1763 }
1764 yyerror (]b4_yyerror_args[yymsgp);
1765 if (yysyntax_error_status == 2)
1766 goto yyexhaustedlab;
1767 }
1768# undef YYSYNTAX_ERROR
b4c1f9d2 1769#endif
10fa2066 1770 }
71da9eea 1771
44c2b42d 1772]b4_locations_if([[ yyerror_range[1] = yylloc;]])[
d42f69cd 1773
10fa2066
RS
1774 if (yyerrstatus == 3)
1775 {
742e4900 1776 /* If just tried and failed to reuse lookahead token after an
e9690142 1777 error, discard it. */
10fa2066 1778
a6b89bb2 1779 if (yychar <= YYEOF)
e9690142
JD
1780 {
1781 /* Return failure if at end of input. */
1782 if (yychar == YYEOF)
1783 YYABORT;
1784 }
a6b89bb2 1785 else
e9690142
JD
1786 {
1787 yydestruct ("Error: discarding",
1788 yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
1789 yychar = YYEMPTY;
1790 }
10fa2066
RS
1791 }
1792
742e4900 1793 /* Else will try to reuse lookahead token after shifting the error
71da9eea 1794 token. */
8a3eb3c8 1795 goto yyerrlab1;
300a7966 1796
10fa2066 1797
a6b89bb2
PE
1798/*---------------------------------------------------.
1799| yyerrorlab -- error raised explicitly by YYERROR. |
1800`---------------------------------------------------*/
1801yyerrorlab:
1802
c7a65b99
PE
1803 /* Pacify compilers like GCC when the user code never invokes
1804 YYERROR and the label yyerrorlab therefore never appears in user
1805 code. */
2a4647a3 1806 if (/*CONSTCOND*/ 0)
a6b89bb2 1807 goto yyerrorlab;
a6b89bb2 1808
44c2b42d 1809]b4_locations_if([[ yyerror_range[1] = yylsp[1-yylen];
a85284cf 1810]])[ /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 1811 this YYERROR. */
a85284cf
AD
1812 YYPOPSTACK (yylen);
1813 yylen = 0;
1814 YY_STACK_PRINT (yyss, yyssp);
a6b89bb2 1815 yystate = *yyssp;
3fc16193 1816 goto yyerrlab1;
a6b89bb2
PE
1817
1818
1819/*-------------------------------------------------------------.
1820| yyerrlab1 -- common code for both syntax error and YYERROR. |
1821`-------------------------------------------------------------*/
300a7966 1822yyerrlab1:
e9690142 1823 yyerrstatus = 3; /* Each real token shifted decrements this. */
10fa2066 1824
660bc8dd
PE
1825 for (;;)
1826 {
1827 yyn = yypact[yystate];
f2b30bdf 1828 if (!yypact_value_is_default (yyn))
e9690142
JD
1829 {
1830 yyn += YYTERROR;
1831 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1832 {
1833 yyn = yytable[yyn];
1834 if (0 < yyn)
1835 break;
1836 }
1837 }
10fa2066 1838
660bc8dd
PE
1839 /* Pop the current state because it cannot handle the error token. */
1840 if (yyssp == yyss)
e9690142 1841 YYABORT;
5504898e 1842
44c2b42d 1843]b4_locations_if([[ yyerror_range[1] = *yylsp;]])[
4b367315 1844 yydestruct ("Error: popping",
e9690142 1845 yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
a85284cf 1846 YYPOPSTACK (1);
a6b89bb2 1847 yystate = *yyssp;
b0937b22 1848 YY_STACK_PRINT (yyss, yyssp);
bf35c71c
JD
1849 }]b4_lac_if([[
1850
1851 /* If the stack popping above didn't lose the initial context for the
1852 current lookahead token, the shift below will for sure. */
1853 YY_LAC_DISCARD ("error recovery");]])[
10fa2066 1854
e365aa4c 1855 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
17da6427 1856 *++yyvsp = yylval;
e365aa4c 1857 YY_IGNORE_MAYBE_UNINITIALIZED_END
327afc7c 1858]b4_locations_if([[
44c2b42d 1859 yyerror_range[2] = yylloc;
3fc16193 1860 /* Using YYLLOC is tempting, but would change the location of
742e4900 1861 the lookahead. YYLOC is available though. */
44c2b42d 1862 YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
3fc16193 1863 *++yylsp = yyloc;]])[
10fa2066 1864
9d9b8b70 1865 /* Shift the error token. */
30757c8c 1866 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1576d44d 1867
10fa2066
RS
1868 yystate = yyn;
1869 goto yynewstate;
70ddf897 1870
71da9eea
AD
1871
1872/*-------------------------------------.
1873| yyacceptlab -- YYACCEPT comes here. |
1874`-------------------------------------*/
1875yyacceptlab:
600f9b0c
PE
1876 yyresult = 0;
1877 goto yyreturn;
71da9eea
AD
1878
1879/*-----------------------------------.
1880| yyabortlab -- YYABORT comes here. |
1881`-----------------------------------*/
1882yyabortlab:
600f9b0c
PE
1883 yyresult = 1;
1884 goto yyreturn;
1885
eff97eb5 1886#if ]b4_lac_if([[1]], [[!defined yyoverflow || YYERROR_VERBOSE]])[
1a059451
PE
1887/*-------------------------------------------------.
1888| yyexhaustedlab -- memory exhaustion comes here. |
1889`-------------------------------------------------*/
1890yyexhaustedlab:
1891 yyerror (]b4_yyerror_args[YY_("memory exhausted"));
600f9b0c
PE
1892 yyresult = 2;
1893 /* Fall through. */
0bfb02ff 1894#endif
600f9b0c
PE
1895
1896yyreturn:
868d2d96 1897 if (yychar != YYEMPTY)
df222dfa
JD
1898 {
1899 /* Make sure we have latest lookahead translation. See comments at
1900 user semantic actions for why this is necessary. */
1901 yytoken = YYTRANSLATE (yychar);
1902 yydestruct ("Cleanup: discarding lookahead",
1903 yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
1904 }
a85284cf 1905 /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 1906 this YYABORT or YYACCEPT. */
a85284cf
AD
1907 YYPOPSTACK (yylen);
1908 YY_STACK_PRINT (yyss, yyssp);
258b75ca
PE
1909 while (yyssp != yyss)
1910 {
dd5f2af2 1911 yydestruct ("Cleanup: popping",
e9690142 1912 yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
a85284cf 1913 YYPOPSTACK (1);
258b75ca 1914 }
600f9b0c
PE
1915#ifndef yyoverflow
1916 if (yyss != yyssa)
1917 YYSTACK_FREE (yyss);
107844a3
JD
1918#endif]b4_lac_if([[
1919 if (yyes != yyesa)
1920 YYSTACK_FREE (yyes);]])b4_push_if([[
bb31eb56 1921 yyps->yynew = 1;
9ca7f077 1922
bb31eb56
JD
1923yypushreturn:]])[
1924#if YYERROR_VERBOSE
b4c1f9d2
PE
1925 if (yymsg != yymsgbuf)
1926 YYSTACK_FREE (yymsg);
70ddf897 1927#endif
56f8d560 1928 return yyresult;
9ca7f077 1929}
4524c55b 1930]b4_epilogue[]dnl
327afc7c 1931b4_defines_if(
a0d4650a 1932[@output(b4_spec_defines_file@)@
e436fa67 1933b4_copyright([Bison interface for Yacc-like parsers in C])[
9bc0dd67 1934
ae6bdabb 1935]b4_shared_declarations[
c3e9f08f 1936]])dnl b4_defines_if
08af01c2 1937m4_divert_pop(0)
639867b5 1938m4_popdef([b4_copyright_years])