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