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