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