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