]> git.saurik.com Git - bison.git/blame - data/yacc.c
* data/bison.m4 (b4_percent_code_get): Output %code block comments like
[bison.git] / data / yacc.c
CommitLineData
08af01c2 1 -*- C -*-
a8289c62 2
60491a94 3# Yacc compatible skeleton for Bison
c7a65b99 4
945e396c 5# Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
29b6015c 6# 2007, 2008 Free Software Foundation, 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
d782395d 21# This hack will go away when we mv push.c yacc.c.
c373bf8b 22m4_ifndef([b4_percent_define(api.push_pull)],
d782395d 23[m4_if(b4_use_push_for_pull_flag, [0], [
945e396c 24
0a96ba81 25m4_include(b4_pkgdatadir/[c.m4])
7eb8a0bc 26
66d30cd4
AD
27## ---------------- ##
28## Default values. ##
29## ---------------- ##
30
31# Stack parameters.
32m4_define_default([b4_stack_depth_max], [10000])
33m4_define_default([b4_stack_depth_init], [200])
34
2a8d363a
AD
35
36## ------------------------ ##
37## Pure/impure interfaces. ##
38## ------------------------ ##
39
d9df47b6
JD
40b4_percent_define_default([[api.pure]], [[false]])
41b4_define_flag_if([pure])
42m4_define([b4_pure_flag],
43 [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])
2a8d363a 44
4b367315
AD
45# b4_yacc_pure_if(IF-TRUE, IF-FALSE)
46# ----------------------------------
2a8d363a 47# Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
4b367315 48m4_define([b4_yacc_pure_if],
2a8d363a 49[b4_pure_if([m4_ifset([b4_parse_param],
02650b7f
PE
50 [$1], [$2])],
51 [$2])])
2a8d363a
AD
52
53
93724f13
AD
54# b4_yyerror_args
55# ---------------
2a8d363a 56# Arguments passed to yyerror: user args plus yylloc.
93724f13 57m4_define([b4_yyerror_args],
327afc7c 58[b4_yacc_pure_if([b4_locations_if([&yylloc, ])])dnl
93724f13 59m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
2a8d363a
AD
60
61
62# b4_lex_param
63# ------------
d42f69cd 64# Accumulate in b4_lex_param all the yylex arguments.
2a8d363a 65# b4_lex_param arrives quoted twice, but we want to keep only one level.
21964f43
AD
66m4_define([b4_lex_param],
67m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl
327afc7c 68b4_locations_if([, [[YYLTYPE *], [&yylloc]]])m4_ifdef([b4_lex_param], [, ])])dnl
68cdf747 69m4_ifdef([b4_lex_param], b4_lex_param)))
66d30cd4
AD
70
71
f1886bb2
AD
72
73## ------------ ##
74## Data Types. ##
75## ------------ ##
76
77# b4_int_type(MIN, MAX)
78# ---------------------
79# Return the smallest int type able to handle numbers ranging from
d42cf844
PE
80# MIN to MAX (included). Overwrite the version from c.m4, which
81# uses only C89 types, so that the user can override the shorter
82# types, and so that pre-C89 compilers are handled correctly.
f1886bb2 83m4_define([b4_int_type],
d42cf844
PE
84[m4_if(b4_ints_in($@, [0], [255]), [1], [yytype_uint8],
85 b4_ints_in($@, [-128], [127]), [1], [yytype_int8],
f1886bb2 86
d42cf844
PE
87 b4_ints_in($@, [0], [65535]), [1], [yytype_uint16],
88 b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16],
f1886bb2
AD
89
90 m4_eval([0 <= $1]), [1], [unsigned int],
91
02650b7f 92 [int])])
f1886bb2
AD
93
94
66d30cd4
AD
95## ----------------- ##
96## Semantic Values. ##
97## ----------------- ##
98
99
82b6cb3f
AD
100# b4_lhs_value([TYPE])
101# --------------------
102# Expansion of $<TYPE>$.
103m4_define([b4_lhs_value],
bc82c5a5 104[(yyval[]m4_ifval([$1], [.$1]))])
82b6cb3f
AD
105
106
107# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
108# --------------------------------------
109# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
110# symbols on RHS.
111m4_define([b4_rhs_value],
d1ff7a7c 112[(yyvsp@{($2) - ($1)@}m4_ifval([$3], [.$3]))])
82b6cb3f
AD
113
114
58612f1d
AD
115
116## ----------- ##
117## Locations. ##
118## ----------- ##
119
82b6cb3f
AD
120# b4_lhs_location()
121# -----------------
122# Expansion of @$.
123m4_define([b4_lhs_location],
bc82c5a5 124[(yyloc)])
82b6cb3f
AD
125
126
127# b4_rhs_location(RULE-LENGTH, NUM)
128# ---------------------------------
129# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
130# on RHS.
131m4_define([b4_rhs_location],
d1ff7a7c 132[(yylsp@{($2) - ($1)@})])
be2a1a68 133
0d8bed56 134
0d8bed56 135
1ae72863
AD
136## --------------------------------------------------------- ##
137## Defining symbol actions, e.g., printers and destructors. ##
138## --------------------------------------------------------- ##
139
b526ee61
AD
140# We do want M4 expansion after # for CPP macros.
141m4_changecom()
08af01c2
JD
142m4_divert_push(0)dnl
143@output(b4_parser_file_name@)
327afc7c 144b4_copyright([Skeleton implementation for Bison's Yacc-like parsers in C],dnl '
6e93d810 145 [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])[
af3412cd
PE
146
147/* C LALR(1) parser skeleton written by Richard Stallman, by
148 simplifying the original so-called "semantic" parser. */
444fbf65 149
cf44a9ae
PE
150/* All symbols defined below should begin with yy or YY, to avoid
151 infringing on user name space. This should be done even for local
152 variables, as they might otherwise be expanded by user macros.
153 There are some unavoidable exceptions within include files to
154 define necessary library symbols; they are noted "INFRINGES ON
155 USER NAME SPACE" below. */
156
9c1e26bd 157]b4_identification
a4e25e1d 158b4_percent_code_get([[top]])[]dnl
aa08666d 159m4_if(b4_prefix, [yy], [],
c5b95ccf 160[/* Substitute the variable and function names. */
be2a1a68
AD
161#define yyparse b4_prefix[]parse
162#define yylex b4_prefix[]lex
163#define yyerror b4_prefix[]error
164#define yylval b4_prefix[]lval
165#define yychar b4_prefix[]char
166#define yydebug b4_prefix[]debug
167#define yynerrs b4_prefix[]nerrs
327afc7c 168b4_locations_if([#define yylloc b4_prefix[]lloc])])[
17da6427 169
0dd1580a 170/* Copy the first part of user declarations. */
136a0f76 171]b4_user_pre_prologue[
cce71710 172
d99361e6
AD
173/* Enabling traces. */
174#ifndef YYDEBUG
327afc7c 175# define YYDEBUG ]b4_debug_flag[
d99361e6
AD
176#endif
177
178/* Enabling verbose error messages. */
179#ifdef YYERROR_VERBOSE
180# undef YYERROR_VERBOSE
181# define YYERROR_VERBOSE 1
182#else
327afc7c 183# define YYERROR_VERBOSE ]b4_error_verbose_flag[
d99361e6
AD
184#endif
185
141f5793
PE
186/* Enabling the token table. */
187#ifndef YYTOKEN_TABLE
188# define YYTOKEN_TABLE ]b4_token_table[
189#endif
190
a4e25e1d 191]b4_percent_code_get([[requires]])[]dnl
9bc0dd67
JD
192
193b4_token_enums_defines(b4_tokens)[
194
02650b7f 195#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
9c1e26bd 196]m4_ifdef([b4_stype],
ddc8ede1 197[[typedef union ]b4_union_name[
7ecec4dd 198{
ddc8ede1 199]b4_user_stype[
7ecec4dd 200} YYSTYPE;
ddc8ede1
PE
201# define YYSTYPE_IS_TRIVIAL 1]],
202[m4_if(b4_tag_seen_flag, 0,
203[[typedef int YYSTYPE;
204# define YYSTYPE_IS_TRIVIAL 1]])])[
050c471b
PE
205# define yystype YYSTYPE /* obsolescent; will be withdrawn */
206# define YYSTYPE_IS_DECLARED 1
fd51e5ff
AD
207#endif
208
327afc7c 209]b4_locations_if([#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
050c471b 210typedef struct YYLTYPE
fd51e5ff
AD
211{
212 int first_line;
213 int first_column;
214 int last_line;
215 int last_column;
050c471b
PE
216} YYLTYPE;
217# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
218# define YYLTYPE_IS_DECLARED 1
71cd15d4 219# define YYLTYPE_IS_TRIVIAL 1
9bc0dd67 220#endif])
fd51e5ff 221
a4e25e1d 222b4_percent_code_get([[provides]])[]dnl
9bc0dd67
JD
223
224[/* Copy the second part of user declarations. */
8e0a5e9e 225]b4_user_post_prologue
a4e25e1d 226b4_percent_code_get[]dnl
7093d0f5 227
8e0a5e9e 228[#ifdef short
d42cf844
PE
229# undef short
230#endif
231
232#ifdef YYTYPE_UINT8
233typedef YYTYPE_UINT8 yytype_uint8;
234#else
235typedef unsigned char yytype_uint8;
236#endif
237
238#ifdef YYTYPE_INT8
239typedef YYTYPE_INT8 yytype_int8;
240#elif ]b4_c_modern[
241typedef signed char yytype_int8;
242#else
243typedef short int yytype_int8;
244#endif
245
246#ifdef YYTYPE_UINT16
247typedef YYTYPE_UINT16 yytype_uint16;
248#else
249typedef unsigned short int yytype_uint16;
250#endif
251
252#ifdef YYTYPE_INT16
253typedef YYTYPE_INT16 yytype_int16;
254#else
255typedef short int yytype_int16;
256#endif
257
55289366 258#ifndef YYSIZE_T
02650b7f 259# ifdef __SIZE_TYPE__
55289366 260# define YYSIZE_T __SIZE_TYPE__
02650b7f 261# elif defined size_t
55289366 262# define YYSIZE_T size_t
02650b7f 263# elif ! defined YYSIZE_T && ]b4_c_modern[
55289366
PE
264# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
265# define YYSIZE_T size_t
266# else
267# define YYSIZE_T unsigned int
268# endif
bedf57f5 269#endif
7093d0f5 270
b4c1f9d2
PE
271#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
272
30757c8c
PE
273#ifndef YY_
274# if YYENABLE_NLS
275# if ENABLE_NLS
276# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
277# define YY_(msgid) dgettext ("bison-runtime", msgid)
278# endif
279# endif
280# ifndef YY_
281# define YY_(msgid) msgid
282# endif
283#endif
284
2a4647a3 285/* Suppress unused-variable warnings by "using" E. */
02650b7f 286#if ! defined lint || defined __GNUC__
12ce2df6
PE
287# define YYUSE(e) ((void) (e))
288#else
289# define YYUSE(e) /* empty */
290#endif
291
292/* Identity function, used to suppress warnings about constant conditions. */
293#ifndef lint
294# define YYID(n) (n)
295#else
cd9e1ba2 296]b4_c_function_def([YYID], [static int], [[int yyi], [yyi]])[
12ce2df6 297{
cd9e1ba2 298 return yyi;
12ce2df6
PE
299}
300#endif
2a4647a3 301
02650b7f 302#if ! defined yyoverflow || YYERROR_VERBOSE
2779e383 303
7093d0f5
AD
304/* The parser invokes alloca or malloc; define the necessary symbols. */
305
b929851a
PE
306# ifdef YYSTACK_USE_ALLOCA
307# if YYSTACK_USE_ALLOCA
b929851a
PE
308# ifdef __GNUC__
309# define YYSTACK_ALLOC __builtin_alloca
02650b7f 310# elif defined __BUILTIN_VA_ARG_INCR
55289366 311# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
02650b7f 312# elif defined _AIX
55289366 313# define YYSTACK_ALLOC __alloca
02650b7f 314# elif defined _MSC_VER
55289366
PE
315# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
316# define alloca _alloca
d7e14fc0
PE
317# else
318# define YYSTACK_ALLOC alloca
02650b7f 319# if ! defined _ALLOCA_H && ! defined _STDLIB_H && ]b4_c_modern[
bedf57f5 320# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
55289366
PE
321# ifndef _STDLIB_H
322# define _STDLIB_H 1
323# endif
bedf57f5 324# endif
7093d0f5
AD
325# endif
326# endif
327# endif
328
329# ifdef YYSTACK_ALLOC
9d9b8b70 330 /* Pacify GCC's `empty if-body' warning. */
12ce2df6 331# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
506ffb1f 332# ifndef YYSTACK_ALLOC_MAXIMUM
b9c9f761
PE
333 /* The OS might guarantee only one guard page at the bottom of the stack,
334 and a page size can be as small as 4096 bytes. So we cannot safely
335 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
336 to allow for a few compiler-allocated temporary stack slots. */
e2a21b6f 337# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
506ffb1f 338# endif
7093d0f5 339# else
2779e383
PE
340# define YYSTACK_ALLOC YYMALLOC
341# define YYSTACK_FREE YYFREE
506ffb1f 342# ifndef YYSTACK_ALLOC_MAXIMUM
b4c1f9d2 343# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
506ffb1f 344# endif
fc3f467f
PE
345# if (defined __cplusplus && ! defined _STDLIB_H \
346 && ! ((defined YYMALLOC || defined malloc) \
347 && (defined YYFREE || defined free)))
348# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
349# ifndef _STDLIB_H
350# define _STDLIB_H 1
351# endif
0925ebb4 352# endif
bedf57f5
PE
353# ifndef YYMALLOC
354# define YYMALLOC malloc
02650b7f 355# if ! defined malloc && ! defined _STDLIB_H && ]b4_c_modern[
bedf57f5
PE
356void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
357# endif
358# endif
359# ifndef YYFREE
360# define YYFREE free
02650b7f 361# if ! defined free && ! defined _STDLIB_H && ]b4_c_modern[
bedf57f5
PE
362void free (void *); /* INFRINGES ON USER NAME SPACE */
363# endif
364# endif
7093d0f5 365# endif
02650b7f 366#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
cf44a9ae
PE
367
368
02650b7f
PE
369#if (! defined yyoverflow \
370 && (! defined __cplusplus \
327afc7c 371 || (]b4_locations_if([[defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
02650b7f 372 && ]])[defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
7093d0f5 373
600f9b0c
PE
374/* A type that is properly aligned for any stack member. */
375union yyalloc
376{
d42cf844 377 yytype_int16 yyss;
2729e106 378 YYSTYPE yyvs;
327afc7c 379 ]b4_locations_if([ YYLTYPE yyls;
58612f1d 380])dnl
9c1e26bd 381[};
600f9b0c
PE
382
383/* The size of the maximum gap between one aligned stack and the next. */
17836590 384# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
600f9b0c
PE
385
386/* The size of an array large to enough to hold all stacks, each with
387 N elements. */
327afc7c 388]b4_locations_if(
58612f1d 389[# define YYSTACK_BYTES(N) \
d42cf844 390 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
17836590 391 + 2 * YYSTACK_GAP_MAXIMUM)],
58612f1d 392[# define YYSTACK_BYTES(N) \
d42cf844 393 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
17836590 394 + YYSTACK_GAP_MAXIMUM)])[
600f9b0c 395
5b041382
PE
396/* Copy COUNT objects from FROM to TO. The source and destination do
397 not overlap. */
398# ifndef YYCOPY
02650b7f 399# if defined __GNUC__ && 1 < __GNUC__
5b041382
PE
400# define YYCOPY(To, From, Count) \
401 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
402# else
403# define YYCOPY(To, From, Count) \
404 do \
405 { \
cb530ce9 406 YYSIZE_T yyi; \
5b041382 407 for (yyi = 0; yyi < (Count); yyi++) \
9c1e26bd 408 (To)[yyi] = (From)[yyi]; \
5b041382 409 } \
12ce2df6 410 while (YYID (0))
5b041382
PE
411# endif
412# endif
413
414/* Relocate STACK from its old location to the new one. The
7093d0f5 415 local variables YYSIZE and YYSTACKSIZE give the old and new number of
600f9b0c
PE
416 elements in the stack, and YYPTR gives the new location of the
417 stack. Advance YYPTR to a properly aligned location for the next
418 stack. */
5b041382 419# define YYSTACK_RELOCATE(Stack) \
7093d0f5
AD
420 do \
421 { \
422 YYSIZE_T yynewbytes; \
5b041382 423 YYCOPY (&yyptr->Stack, Stack, yysize); \
2729e106 424 Stack = &yyptr->Stack; \
17836590 425 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
2729e106 426 yyptr += yynewbytes / sizeof (*yyptr); \
7093d0f5 427 } \
12ce2df6 428 while (YYID (0))
7093d0f5 429
cf44a9ae 430#endif
8850be4b 431
9d9b8b70 432/* YYFINAL -- State number of the termination state. */
9c1e26bd 433#define YYFINAL ]b4_final_state_number[
39912f52 434/* YYLAST -- Last index in YYTABLE. */
9c1e26bd 435#define YYLAST ]b4_last[
7742ddeb 436
9d9b8b70 437/* YYNTOKENS -- Number of terminals. */
9c1e26bd 438#define YYNTOKENS ]b4_tokens_number[
9d9b8b70 439/* YYNNTS -- Number of nonterminals. */
9c1e26bd 440#define YYNNTS ]b4_nterms_number[
9d9b8b70 441/* YYNRULES -- Number of rules. */
9c1e26bd 442#define YYNRULES ]b4_rules_number[
9d9b8b70 443/* YYNRULES -- Number of states. */
9c1e26bd 444#define YYNSTATES ]b4_states_number[
7742ddeb
AD
445
446/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
9c1e26bd
AD
447#define YYUNDEFTOK ]b4_undef_token_number[
448#define YYMAXUTOK ]b4_user_token_number_max[
007a50a4 449
04098407 450#define YYTRANSLATE(YYX) \
a20713a4 451 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
a8289c62 452
b0400cc6
AD
453/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
454static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
a8289c62 455{
c5e3e510 456 ]b4_translate[
a8289c62
RA
457};
458
459#if YYDEBUG
c5e3e510 460/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
7742ddeb 461 YYRHS. */
c5e3e510 462static const ]b4_int_type_for([b4_prhs])[ yyprhs[] =
a8289c62 463{
c5e3e510 464 ]b4_prhs[
a8289c62
RA
465};
466
9d9b8b70 467/* YYRHS -- A `-1'-separated list of the rules' RHS. */
c5e3e510 468static const ]b4_int_type_for([b4_rhs])[ yyrhs[] =
a8289c62 469{
c5e3e510 470 ]b4_rhs[
a8289c62
RA
471};
472
c5e3e510
AD
473/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
474static const ]b4_int_type_for([b4_rline])[ yyrline[] =
a8289c62 475{
c5e3e510 476 ]b4_rline[
a8289c62
RA
477};
478#endif
479
141f5793 480#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
9e0876fb 481/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
9d9b8b70 482 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
c5e3e510 483static const char *const yytname[] =
a8289c62 484{
c5e3e510 485 ]b4_tname[
a8289c62
RA
486};
487#endif
488
c0ad8bf3 489# ifdef YYPRINT
c5e3e510 490/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
769b430f 491 token YYLEX-NUM. */
c5e3e510 492static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
a8289c62 493{
c5e3e510 494 ]b4_toknum[
a8289c62 495};
c0ad8bf3 496# endif
a8289c62 497
c5e3e510
AD
498/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
499static const ]b4_int_type_for([b4_r1])[ yyr1[] =
a8289c62 500{
c5e3e510 501 ]b4_r1[
a8289c62
RA
502};
503
c5e3e510
AD
504/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
505static const ]b4_int_type_for([b4_r2])[ yyr2[] =
a8289c62 506{
c5e3e510 507 ]b4_r2[
a8289c62
RA
508};
509
c5e3e510 510/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
5504898e
AD
511 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
512 means the default is an error. */
c5e3e510 513static const ]b4_int_type_for([b4_defact])[ yydefact[] =
a8289c62 514{
c5e3e510 515 ]b4_defact[
a8289c62
RA
516};
517
9d9b8b70 518/* YYDEFGOTO[NTERM-NUM]. */
c5e3e510 519static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] =
a8289c62 520{
c5e3e510 521 ]b4_defgoto[
a8289c62
RA
522};
523
c5e3e510 524/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
7742ddeb 525 STATE-NUM. */
c5e3e510
AD
526#define YYPACT_NINF ]b4_pact_ninf[
527static const ]b4_int_type_for([b4_pact])[ yypact[] =
a8289c62 528{
c5e3e510 529 ]b4_pact[
a8289c62
RA
530};
531
c5e3e510
AD
532/* YYPGOTO[NTERM-NUM]. */
533static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] =
a8289c62 534{
c5e3e510 535 ]b4_pgoto[
a8289c62
RA
536};
537
c5e3e510 538/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
7742ddeb 539 positive, shift that token. If negative, reduce the rule which
f50adbbd 540 number is the opposite. If zero, do what YYDEFACT says.
6e649e65 541 If YYTABLE_NINF, syntax error. */
c5e3e510
AD
542#define YYTABLE_NINF ]b4_table_ninf[
543static const ]b4_int_type_for([b4_table])[ yytable[] =
a8289c62 544{
c5e3e510 545 ]b4_table[
a8289c62
RA
546};
547
c5e3e510 548static const ]b4_int_type_for([b4_check])[ yycheck[] =
a8289c62 549{
c5e3e510 550 ]b4_check[
a8289c62
RA
551};
552
c5e3e510 553/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
5504898e 554 symbol of state STATE-NUM. */
c5e3e510 555static const ]b4_int_type_for([b4_stos])[ yystos[] =
5504898e 556{
c5e3e510 557 ]b4_stos[
5504898e 558};
7093d0f5 559
10fa2066 560#define yyerrok (yyerrstatus = 0)
a20713a4
PE
561#define yyclearin (yychar = YYEMPTY)
562#define YYEMPTY (-2)
10fa2066 563#define YYEOF 0
a8289c62 564
70ddf897 565#define YYACCEPT goto yyacceptlab
a8289c62 566#define YYABORT goto yyabortlab
a6b89bb2 567#define YYERROR goto yyerrorlab
8a3eb3c8 568
a8289c62 569
71da9eea
AD
570/* Like YYERROR except do call yyerror. This remains here temporarily
571 to ease the transition to the new meaning of YYERROR, for GCC.
10fa2066 572 Once GCC version 2 has supplanted version 1, this can go. */
a8289c62 573
10fa2066 574#define YYFAIL goto yyerrlab
a8289c62 575
10fa2066 576#define YYRECOVERING() (!!yyerrstatus)
a8289c62 577
69b4e0c5 578#define YYBACKUP(Token, Value) \
10fa2066 579do \
a20713a4 580 if (yychar == YYEMPTY && yylen == 1) \
71da9eea 581 { \
17da6427 582 yychar = (Token); \
7742ddeb 583 yylval = (Value); \
b0400cc6 584 yytoken = YYTRANSLATE (yychar); \
a85284cf 585 YYPOPSTACK (1); \
10fa2066
RS
586 goto yybackup; \
587 } \
588 else \
04098407 589 { \
30757c8c 590 yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \
71da9eea
AD
591 YYERROR; \
592 } \
12ce2df6 593while (YYID (0))
10fa2066 594
3fc16193 595
10fa2066
RS
596#define YYTERROR 1
597#define YYERRCODE 256
598
3fc16193 599
b4a20338
AD
600/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
601 If N is 0, then set CURRENT to the empty location which ends
602 the previous symbol: RHS[0] (always defined). */
3abcd459 603
24e0cbd0 604#define YYRHSLOC(Rhs, K) ((Rhs)[K])
3abcd459 605#ifndef YYLLOC_DEFAULT
24e0cbd0
PE
606# define YYLLOC_DEFAULT(Current, Rhs, N) \
607 do \
d6cff4dc 608 if (YYID (N)) \
24e0cbd0 609 { \
9bec482e
PE
610 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
611 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
612 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
613 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
24e0cbd0
PE
614 } \
615 else \
616 { \
617 (Current).first_line = (Current).last_line = \
9bec482e 618 YYRHSLOC (Rhs, 0).last_line; \
24e0cbd0 619 (Current).first_column = (Current).last_column = \
9bec482e 620 YYRHSLOC (Rhs, 0).last_column; \
24e0cbd0 621 } \
12ce2df6 622 while (YYID (0))
b8458aa5
AD
623#endif
624
3fc16193
AD
625
626/* YY_LOCATION_PRINT -- Print the location on the stream.
627 This macro was not mandated originally: define only if we know
628 we won't break user code: when these are the locations we know. */
629
3fc16193 630#ifndef YY_LOCATION_PRINT
b8458aa5
AD
631# if YYLTYPE_IS_TRIVIAL
632# define YY_LOCATION_PRINT(File, Loc) \
633 fprintf (File, "%d.%d-%d.%d", \
02650b7f
PE
634 (Loc).first_line, (Loc).first_column, \
635 (Loc).last_line, (Loc).last_column)
0dcca5c2
AD
636# else
637# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
b8458aa5 638# endif
3abcd459
AD
639#endif
640
3fc16193 641
3abcd459 642/* YYLEX -- calling `yylex' with the right arguments. */
553e2b22 643
ae7453f2 644#ifdef YYLEX_PARAM
327afc7c 645# define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM)
74310291 646#else
9c1e26bd 647# define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
ae7453f2 648#endif
553e2b22 649
5a35a6cb 650/* Enable debugging if requested. */
0d533154 651#if YYDEBUG
b7575ffe 652
2f4f028d 653# ifndef YYFPRINTF
45119af1
PE
654# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
655# define YYFPRINTF fprintf
b7575ffe
PE
656# endif
657
5a35a6cb
AD
658# define YYDPRINTF(Args) \
659do { \
17da6427 660 if (yydebug) \
b7575ffe 661 YYFPRINTF Args; \
12ce2df6 662} while (YYID (0))
c5e3e510 663
4b367315
AD
664# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
665do { \
666 if (yydebug) \
667 { \
668 YYFPRINTF (stderr, "%s ", Title); \
a0af42fc 669 yy_symbol_print (stderr, \
327afc7c 670 Type, Value]b4_locations_if([, Location])[]b4_user_args[); \
4b367315
AD
671 YYFPRINTF (stderr, "\n"); \
672 } \
12ce2df6 673} while (YYID (0))
9c1e26bd 674
a0af42fc 675]b4_yy_symbol_print_generate([b4_c_function_def])[
d1ff7a7c 676
b0937b22
AD
677/*------------------------------------------------------------------.
678| yy_stack_print -- Print the state stack from its BOTTOM up to its |
5348bfbe 679| TOP (included). |
b0937b22
AD
680`------------------------------------------------------------------*/
681
682]b4_c_function_def([yy_stack_print], [static void],
cd9e1ba2
PE
683 [[yytype_int16 *yybottom], [yybottom]],
684 [[yytype_int16 *yytop], [yytop]])[
b0937b22 685{
2f4f028d 686 YYFPRINTF (stderr, "Stack now");
cd9e1ba2
PE
687 for (; yybottom <= yytop; yybottom++)
688 {
689 int yybot = *yybottom;
690 YYFPRINTF (stderr, " %d", yybot);
691 }
2f4f028d 692 YYFPRINTF (stderr, "\n");
b0937b22
AD
693}
694
695# define YY_STACK_PRINT(Bottom, Top) \
696do { \
697 if (yydebug) \
698 yy_stack_print ((Bottom), (Top)); \
12ce2df6 699} while (YYID (0))
b0937b22
AD
700
701
702/*------------------------------------------------.
703| Report that the YYRULE is going to be reduced. |
704`------------------------------------------------*/
705
706]b4_c_function_def([yy_reduce_print], [static void],
02650b7f 707 [[YYSTYPE *yyvsp], [yyvsp]],
aefef0d6
PE
708 b4_locations_if([[[YYLTYPE *yylsp], [yylsp]],
709 ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [,
710 ])b4_parse_param)[
b0937b22 711{
d1ff7a7c 712 int yynrhs = yyr2[yyrule];
b0937b22 713 int yyi;
30757c8c 714 unsigned long int yylno = yyrline[yyrule];
d1ff7a7c 715 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
02650b7f 716 yyrule - 1, yylno);
d1ff7a7c
AD
717 /* The symbols being reduced. */
718 for (yyi = 0; yyi < yynrhs; yyi++)
719 {
f57a7536 720 YYFPRINTF (stderr, " $%d = ", yyi + 1);
a0af42fc 721 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
02650b7f 722 &]b4_rhs_value(yynrhs, yyi + 1)[
327afc7c 723 ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
02650b7f 724 b4_user_args[);
f57a7536 725 YYFPRINTF (stderr, "\n");
d1ff7a7c 726 }
b0937b22
AD
727}
728
d9963c85
PE
729# define YY_REDUCE_PRINT(Rule) \
730do { \
731 if (yydebug) \
327afc7c 732 yy_reduce_print (yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \
12ce2df6 733} while (YYID (0))
b0937b22 734
cf44a9ae
PE
735/* Nonzero means print parse trace. It is left uninitialized so that
736 multiple parsers can coexist. */
17da6427 737int yydebug;
5a35a6cb
AD
738#else /* !YYDEBUG */
739# define YYDPRINTF(Args)
284acc8b 740# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
b0937b22 741# define YY_STACK_PRINT(Bottom, Top)
d9963c85 742# define YY_REDUCE_PRINT(Rule)
5a35a6cb
AD
743#endif /* !YYDEBUG */
744
b0937b22 745
5a35a6cb 746/* YYINITDEPTH -- initial size of the parser's stacks. */
10fa2066 747#ifndef YYINITDEPTH
9c1e26bd 748# define YYINITDEPTH ]b4_stack_depth_init[
10fa2066
RS
749#endif
750
5a35a6cb 751/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
600f9b0c
PE
752 if the built-in stack extension method is used).
753
754 Do not make this value too large; the results are undefined if
506ffb1f 755 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
600f9b0c
PE
756 evaluated with infinite-precision integer arithmetic. */
757
10fa2066 758#ifndef YYMAXDEPTH
9c1e26bd 759# define YYMAXDEPTH ]b4_stack_depth_max[
10fa2066 760#endif
a8289c62 761
10fa2066 762\f
a8289c62 763
7093d0f5
AD
764#if YYERROR_VERBOSE
765
766# ifndef yystrlen
02650b7f 767# if defined __GLIBC__ && defined _STRING_H
7093d0f5
AD
768# define yystrlen strlen
769# else
770/* Return the length of YYSTR. */
1b9c21fb
PE
771]b4_c_function_def([yystrlen], [static YYSIZE_T],
772 [[const char *yystr], [yystr]])[
7093d0f5 773{
12ce2df6
PE
774 YYSIZE_T yylen;
775 for (yylen = 0; yystr[yylen]; yylen++)
7093d0f5 776 continue;
12ce2df6 777 return yylen;
7093d0f5
AD
778}
779# endif
780# endif
781
782# ifndef yystpcpy
02650b7f 783# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
7093d0f5
AD
784# define yystpcpy stpcpy
785# else
786/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
787 YYDEST. */
1b9c21fb
PE
788]b4_c_function_def([yystpcpy], [static char *],
789 [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[
7093d0f5 790{
cb530ce9
PE
791 char *yyd = yydest;
792 const char *yys = yysrc;
7093d0f5
AD
793
794 while ((*yyd++ = *yys++) != '\0')
795 continue;
796
797 return yyd - 1;
798}
799# endif
800# endif
801
9e0876fb
PE
802# ifndef yytnamerr
803/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
804 quotes and backslashes, so that it's suitable for yyerror. The
805 heuristic is that double-quoting is unnecessary unless the string
806 contains an apostrophe, a comma, or backslash (other than
807 backslash-backslash). YYSTR is taken from yytname. If YYRES is
808 null, do not copy; instead, return the length of what the result
809 would have been. */
810static YYSIZE_T
811yytnamerr (char *yyres, const char *yystr)
812{
813 if (*yystr == '"')
814 {
276f48df 815 YYSIZE_T yyn = 0;
9e0876fb
PE
816 char const *yyp = yystr;
817
818 for (;;)
819 switch (*++yyp)
820 {
821 case '\'':
822 case ',':
823 goto do_not_strip_quotes;
824
825 case '\\':
826 if (*++yyp != '\\')
827 goto do_not_strip_quotes;
828 /* Fall through. */
829 default:
830 if (yyres)
831 yyres[yyn] = *yyp;
832 yyn++;
833 break;
834
835 case '"':
836 if (yyres)
837 yyres[yyn] = '\0';
838 return yyn;
839 }
840 do_not_strip_quotes: ;
841 }
842
843 if (! yyres)
844 return yystrlen (yystr);
845
846 return yystpcpy (yyres, yystr) - yyres;
847}
848# endif
849
b4c1f9d2
PE
850/* Copy into YYRESULT an error message about the unexpected token
851 YYCHAR while in state YYSTATE. Return the number of bytes copied,
852 including the terminating null byte. If YYRESULT is null, do not
853 copy anything; just return the number of bytes that would be
854 copied. As a special case, return 0 if an ordinary "syntax error"
855 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
856 size calculation. */
857static YYSIZE_T
858yysyntax_error (char *yyresult, int yystate, int yychar)
859{
860 int yyn = yypact[yystate];
7093d0f5 861
d6645148 862 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
b4c1f9d2
PE
863 return 0;
864 else
865 {
866 int yytype = YYTRANSLATE (yychar);
867 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
868 YYSIZE_T yysize = yysize0;
869 YYSIZE_T yysize1;
870 int yysize_overflow = 0;
871 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
872 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
873 int yyx;
874
875# if 0
876 /* This is so xgettext sees the translatable formats that are
02650b7f 877 constructed on the fly. */
b4c1f9d2
PE
878 YY_("syntax error, unexpected %s");
879 YY_("syntax error, unexpected %s, expecting %s");
880 YY_("syntax error, unexpected %s, expecting %s or %s");
881 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
882 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
883# endif
884 char *yyfmt;
885 char const *yyf;
886 static char const yyunexpected[] = "syntax error, unexpected %s";
887 static char const yyexpecting[] = ", expecting %s";
888 static char const yyor[] = " or %s";
889 char yyformat[sizeof yyunexpected
02650b7f
PE
890 + sizeof yyexpecting - 1
891 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
892 * (sizeof yyor - 1))];
b4c1f9d2
PE
893 char const *yyprefix = yyexpecting;
894
895 /* Start YYX at -YYN if negative to avoid negative indexes in
02650b7f 896 YYCHECK. */
b4c1f9d2
PE
897 int yyxbegin = yyn < 0 ? -yyn : 0;
898
899 /* Stay within bounds of both yycheck and yytname. */
d6645148 900 int yychecklim = YYLAST - yyn + 1;
b4c1f9d2
PE
901 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
902 int yycount = 1;
903
904 yyarg[0] = yytname[yytype];
905 yyfmt = yystpcpy (yyformat, yyunexpected);
906
907 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
34ec3579 908 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02650b7f
PE
909 {
910 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
911 {
912 yycount = 1;
913 yysize = yysize0;
914 yyformat[sizeof yyunexpected - 1] = '\0';
915 break;
916 }
917 yyarg[yycount++] = yytname[yyx];
918 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
919 yysize_overflow |= (yysize1 < yysize);
920 yysize = yysize1;
921 yyfmt = yystpcpy (yyfmt, yyprefix);
922 yyprefix = yyor;
923 }
b4c1f9d2
PE
924
925 yyf = YY_(yyformat);
926 yysize1 = yysize + yystrlen (yyf);
12ce2df6 927 yysize_overflow |= (yysize1 < yysize);
b4c1f9d2
PE
928 yysize = yysize1;
929
930 if (yysize_overflow)
931 return YYSIZE_MAXIMUM;
932
933 if (yyresult)
934 {
02650b7f
PE
935 /* Avoid sprintf, as that infringes on the user's name space.
936 Don't have undefined behavior even if the translation
937 produced a string with the wrong number of "%s"s. */
938 char *yyp = yyresult;
939 int yyi = 0;
940 while ((*yyp = *yyf) != '\0')
941 {
942 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
943 {
944 yyp += yytnamerr (yyp, yyarg[yyi++]);
945 yyf += 2;
946 }
947 else
948 {
949 yyp++;
950 yyf++;
951 }
952 }
953 }
b4c1f9d2
PE
954 return yysize;
955 }
956}
957#endif /* YYERROR_VERBOSE */
10fa2066 958\f
a8289c62 959
d1ff7a7c 960]b4_yydestruct_generate([b4_c_function_def])[
4a2a22f4
AD
961\f
962
0245f82d 963/* Prevent warnings from -Wmissing-prototypes. */
4a2a22f4
AD
964
965#ifdef YYPARSE_PARAM
1b9c21fb
PE
966]b4_c_function_decl([yyparse], [int],
967 [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[
0245f82d 968#else /* ! YYPARSE_PARAM */
d1ff7a7c 969]b4_c_function_decl([yyparse], [int], b4_parse_param)[
c5e3e510 970#endif /* ! YYPARSE_PARAM */
1b181651 971
0245f82d 972
d1ff7a7c 973]m4_divert_push([KILL])# ======================== M4 code.
74310291
AD
974# b4_declare_parser_variables
975# ---------------------------
976# Declare the variables that are global, or local to YYPARSE if
0245f82d 977# pure-parser.
74310291 978m4_define([b4_declare_parser_variables],
742e4900 979[/* The lookahead symbol. */
74310291
AD
980int yychar;
981
742e4900 982/* The semantic value of the lookahead symbol. */
74310291
AD
983YYSTYPE yylval;
984
6e649e65 985/* Number of syntax errors so far. */
327afc7c 986int yynerrs;b4_locations_if([
742e4900 987/* Location data for the lookahead symbol. */
58612f1d 988YYLTYPE yylloc;])
74310291
AD
989])
990m4_divert_pop([KILL])dnl# ====================== End of M4 code.
58612f1d 991
74310291 992b4_pure_if([],
02650b7f 993 [b4_declare_parser_variables])
a35f64ea 994
0245f82d
AD
995
996/*----------.
997| yyparse. |
998`----------*/
999
1000#ifdef YYPARSE_PARAM
1b9c21fb 1001b4_c_function_def([yyparse], [int], [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])
0245f82d
AD
1002#else /* ! YYPARSE_PARAM */
1003b4_c_function_def([yyparse], [int], b4_parse_param)
1004#endif
be2a1a68 1005{[
74310291 1006 ]b4_pure_if([b4_declare_parser_variables])[
cb530ce9
PE
1007 int yystate;
1008 int yyn;
600f9b0c 1009 int yyresult;
b07b484a
AD
1010 /* Number of tokens to shift before error messages enabled. */
1011 int yyerrstatus;
742e4900 1012 /* Lookahead token as an internal (translated) token number. */
b0400cc6 1013 int yytoken = 0;
b4c1f9d2
PE
1014#if YYERROR_VERBOSE
1015 /* Buffer for error messages, and its allocated size. */
1016 char yymsgbuf[128];
1017 char *yymsg = yymsgbuf;
1018 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1019#endif
10fa2066 1020
5d1cfef4
PE
1021 /* The stacks and their tools:
1022 `yyss' is related to states.
1023 `yyvs' is related to semantic values.]b4_locations_if([[
1024 `yyls' is related to locations.]])[
bb10be54
AD
1025
1026 Refer to the stacks thru separate pointers, to allow yyoverflow
1027 to reallocate them elsewhere. */
1028
e8cb70b9 1029 /* The state stack. */
d42cf844
PE
1030 yytype_int16 yyssa[YYINITDEPTH];
1031 yytype_int16 *yyss = yyssa;
1032 yytype_int16 *yyssp;
bb10be54 1033
b07b484a
AD
1034 /* The semantic value stack. */
1035 YYSTYPE yyvsa[YYINITDEPTH];
b07b484a 1036 YYSTYPE *yyvs = yyvsa;
cb530ce9 1037 YYSTYPE *yyvsp;
10fa2066 1038
327afc7c 1039]b4_locations_if(
58612f1d 1040[[ /* The location stack. */
b07b484a 1041 YYLTYPE yylsa[YYINITDEPTH];
10fa2066 1042 YYLTYPE *yyls = yylsa;
d42f69cd 1043 YYLTYPE *yylsp;
9d9b8b70 1044 /* The locations where the error started and ended. */
3fc16193 1045 YYLTYPE yyerror_range[2];]])[
10fa2066 1046
327afc7c 1047#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[)
10fa2066 1048
7093d0f5 1049 YYSIZE_T yystacksize = YYINITDEPTH;
10fa2066 1050
6666f98f
AD
1051 /* The variables used to return semantic value and location from the
1052 action routines. */
bb10be54 1053 YYSTYPE yyval;
327afc7c 1054]b4_locations_if([ YYLTYPE yyloc;])[
10fa2066 1055
a85284cf 1056 /* The number of symbols on the RHS of the reduced rule.
9d9b8b70 1057 Keep to zero when no symbol should be popped. */
a85284cf 1058 int yylen = 0;
10fa2066 1059
2f4f028d 1060 YYDPRINTF ((stderr, "Starting parse\n"));
10fa2066
RS
1061
1062 yystate = 0;
1063 yyerrstatus = 0;
17da6427 1064 yynerrs = 0;
a20713a4 1065 yychar = YYEMPTY; /* Cause a token to be read. */
10fa2066
RS
1066
1067 /* Initialize stack pointers.
1068 Waste one element of value and location stack
1069 so that they stay on the same level as the state stack.
1070 The wasted elements are never initialized. */
1071
cbd89906 1072 yyssp = yyss;
10fa2066 1073 yyvsp = yyvs;
327afc7c 1074]b4_locations_if([[ yylsp = yyls;
b8458aa5
AD
1075#if YYLTYPE_IS_TRIVIAL
1076 /* Initialize the default location before parsing starts. */
cd48d21d
AD
1077 yylloc.first_line = yylloc.last_line = ]b4_location_initial_line[;
1078 yylloc.first_column = yylloc.last_column = ]b4_location_initial_column[;
b8458aa5
AD
1079#endif
1080]])
1081m4_ifdef([b4_initial_action], [
407d4a75
PE
1082m4_pushdef([b4_at_dollar], [m4_define([b4_at_dollar_used])yylloc])dnl
1083m4_pushdef([b4_dollar_dollar], [m4_define([b4_dollar_dollar_used])yylval])dnl
9d9b8b70 1084 /* User initialization code. */
8ec0a172 1085 b4_user_initial_action
cd3684cf 1086m4_popdef([b4_dollar_dollar])dnl
8ec0a172 1087m4_popdef([b4_at_dollar])])dnl
407d4a75
PE
1088m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval;
1089]])dnl
1090m4_ifdef([b4_at_dollar_used], [[ yylsp[0] = yylloc;
1091]])dnl
1092[ goto yysetstate;
10fa2066 1093
71da9eea
AD
1094/*------------------------------------------------------------.
1095| yynewstate -- Push a new state, which is found in yystate. |
1096`------------------------------------------------------------*/
342b8b6e 1097 yynewstate:
71da9eea 1098 /* In all cases, when you get here, the value and location stacks
9d9b8b70 1099 have just been pushed. So pushing a state here evens the stacks. */
cbd89906
PE
1100 yyssp++;
1101
342b8b6e 1102 yysetstate:
cbd89906 1103 *yyssp = yystate;
10fa2066 1104
39912f52 1105 if (yyss + yystacksize - 1 <= yyssp)
10fa2066 1106 {
10fa2066 1107 /* Get the current used size of the three stacks, in elements. */
7093d0f5 1108 YYSIZE_T yysize = yyssp - yyss + 1;
10fa2066
RS
1109
1110#ifdef yyoverflow
3d76b07d 1111 {
9d9b8b70 1112 /* Give user a chance to reallocate the stack. Use copies of
3d76b07d
AD
1113 these so that the &'s don't force the real ones into
1114 memory. */
1115 YYSTYPE *yyvs1 = yyvs;
d42cf844 1116 yytype_int16 *yyss1 = yyss;
327afc7c 1117]b4_locations_if([ YYLTYPE *yyls1 = yyls;])[
3d76b07d
AD
1118
1119 /* Each stack pointer address is followed by the size of the
58612f1d
AD
1120 data in use in that stack, in bytes. This used to be a
1121 conditional around just the two extra args, but that might
1122 be undefined if yyoverflow is a macro. */
1a059451 1123 yyoverflow (YY_("memory exhausted"),
7093d0f5
AD
1124 &yyss1, yysize * sizeof (*yyssp),
1125 &yyvs1, yysize * sizeof (*yyvsp),
327afc7c 1126]b4_locations_if([ &yyls1, yysize * sizeof (*yylsp),])[
3d76b07d 1127 &yystacksize);
327afc7c 1128]b4_locations_if([ yyls = yyls1;])[
3d76b07d
AD
1129 yyss = yyss1;
1130 yyvs = yyvs1;
1131 }
10fa2066 1132#else /* no yyoverflow */
cf44a9ae 1133# ifndef YYSTACK_RELOCATE
1a059451 1134 goto yyexhaustedlab;
cf44a9ae 1135# else
10fa2066 1136 /* Extend the stack our own way. */
39912f52 1137 if (YYMAXDEPTH <= yystacksize)
1a059451 1138 goto yyexhaustedlab;
10fa2066 1139 yystacksize *= 2;
39912f52 1140 if (YYMAXDEPTH < yystacksize)
10fa2066 1141 yystacksize = YYMAXDEPTH;
e9e4c321 1142
600f9b0c 1143 {
d42cf844 1144 yytype_int16 *yyss1 = yyss;
2729e106
PE
1145 union yyalloc *yyptr =
1146 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
600f9b0c 1147 if (! yyptr)
1a059451 1148 goto yyexhaustedlab;
5b041382
PE
1149 YYSTACK_RELOCATE (yyss);
1150 YYSTACK_RELOCATE (yyvs);
327afc7c 1151]b4_locations_if([ YYSTACK_RELOCATE (yyls);])[
cf44a9ae 1152# undef YYSTACK_RELOCATE
600f9b0c
PE
1153 if (yyss1 != yyssa)
1154 YYSTACK_FREE (yyss1);
1155 }
cf44a9ae 1156# endif
10fa2066
RS
1157#endif /* no yyoverflow */
1158
7093d0f5
AD
1159 yyssp = yyss + yysize - 1;
1160 yyvsp = yyvs + yysize - 1;
327afc7c 1161]b4_locations_if([ yylsp = yyls + yysize - 1;])[
10fa2066 1162
30757c8c 1163 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
600f9b0c 1164 (unsigned long int) yystacksize));
10fa2066 1165
39912f52 1166 if (yyss + yystacksize - 1 <= yyssp)
10fa2066
RS
1167 YYABORT;
1168 }
1169
30757c8c 1170 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
10fa2066 1171
868d2d96
JD
1172 if (yystate == YYFINAL)
1173 YYACCEPT;
1174
10fa2066 1175 goto yybackup;
71da9eea 1176
71da9eea
AD
1177/*-----------.
1178| yybackup. |
1179`-----------*/
1180yybackup:
10fa2066 1181
a85284cf 1182 /* Do appropriate processing given the current state. Read a
742e4900 1183 lookahead token if we need one and don't already have one. */
10fa2066 1184
742e4900 1185 /* First try to decide what to do without reference to lookahead token. */
10fa2066 1186 yyn = yypact[yystate];
12b0043a 1187 if (yyn == YYPACT_NINF)
10fa2066
RS
1188 goto yydefault;
1189
742e4900 1190 /* Not known => get a lookahead token if don't already have one. */
10fa2066 1191
742e4900 1192 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
a20713a4 1193 if (yychar == YYEMPTY)
10fa2066 1194 {
2f4f028d 1195 YYDPRINTF ((stderr, "Reading a token: "));
17da6427 1196 yychar = YYLEX;
10fa2066
RS
1197 }
1198
a20713a4 1199 if (yychar <= YYEOF)
10fa2066 1200 {
a20713a4 1201 yychar = yytoken = YYEOF;
2f4f028d 1202 YYDPRINTF ((stderr, "Now at end of input.\n"));
10fa2066
RS
1203 }
1204 else
1205 {
a20713a4 1206 yytoken = YYTRANSLATE (yychar);
30757c8c 1207 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
10fa2066
RS
1208 }
1209
b0400cc6 1210 /* If the proper action on seeing token YYTOKEN is to reduce or to
e5cfd9d8 1211 detect an error, take that action. */
b0400cc6 1212 yyn += yytoken;
34ec3579 1213 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
e5cfd9d8
PE
1214 goto yydefault;
1215 yyn = yytable[yyn];
1216 if (yyn <= 0)
10fa2066 1217 {
e5cfd9d8
PE
1218 if (yyn == 0 || yyn == YYTABLE_NINF)
1219 goto yyerrlab;
10fa2066
RS
1220 yyn = -yyn;
1221 goto yyreduce;
1222 }
10fa2066 1223
a85284cf
AD
1224 /* Count tokens shifted since error; after three, turn off error
1225 status. */
1226 if (yyerrstatus)
1227 yyerrstatus--;
1228
742e4900 1229 /* Shift the lookahead token. */
30757c8c 1230 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
10fa2066 1231
868d2d96
JD
1232 /* Discard the shifted token. */
1233 yychar = YYEMPTY;
10fa2066 1234
a85284cf 1235 yystate = yyn;
17da6427 1236 *++yyvsp = yylval;
327afc7c 1237]b4_locations_if([ *++yylsp = yylloc;])[
10fa2066
RS
1238 goto yynewstate;
1239
10fa2066 1240
71da9eea
AD
1241/*-----------------------------------------------------------.
1242| yydefault -- do the default action for the current state. |
1243`-----------------------------------------------------------*/
1244yydefault:
10fa2066
RS
1245 yyn = yydefact[yystate];
1246 if (yyn == 0)
1247 goto yyerrlab;
71da9eea 1248 goto yyreduce;
10fa2066 1249
71da9eea
AD
1250
1251/*-----------------------------.
1252| yyreduce -- Do a reduction. |
1253`-----------------------------*/
10fa2066 1254yyreduce:
71da9eea 1255 /* yyn is the number of a rule to reduce with. */
10fa2066 1256 yylen = yyr2[yyn];
da9abf43
AD
1257
1258 /* If YYLEN is nonzero, implement the default value of the action:
573c1d9f 1259 `$$ = $1'.
da9abf43 1260
accea6db
PE
1261 Otherwise, the following line sets YYVAL to garbage.
1262 This behavior is undocumented and Bison
da9abf43
AD
1263 users should not rely upon it. Assigning to YYVAL
1264 unconditionally makes the parser a bit smaller, and it avoids a
1265 GCC warning that YYVAL may be used uninitialized. */
1266 yyval = yyvsp[1-yylen];
3abcd459 1267
327afc7c 1268]b4_locations_if(
9d9b8b70 1269[[ /* Default location. */
401aace6 1270 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[
d9963c85 1271 YY_REDUCE_PRINT (yyn);
a8289c62 1272 switch (yyn)
d1ff7a7c 1273 {
8ec0a172 1274 ]b4_user_actions[
95f22ad2 1275 default: break;
a8289c62 1276 }
d1ff7a7c 1277 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
897668ee 1278
a85284cf
AD
1279 YYPOPSTACK (yylen);
1280 yylen = 0;
b0937b22 1281 YY_STACK_PRINT (yyss, yyssp);
10fa2066
RS
1282
1283 *++yyvsp = yyval;
327afc7c 1284]b4_locations_if([ *++yylsp = yyloc;])[
10fa2066 1285
41aca2e0
AD
1286 /* Now `shift' the result of the reduction. Determine what state
1287 that goes to, based on the state we popped back to and the rule
1288 number reduced by. */
10fa2066
RS
1289
1290 yyn = yyr1[yyn];
1291
7742ddeb 1292 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
34ec3579 1293 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
10fa2066
RS
1294 yystate = yytable[yystate];
1295 else
7742ddeb 1296 yystate = yydefgoto[yyn - YYNTOKENS];
10fa2066
RS
1297
1298 goto yynewstate;
1299
10fa2066 1300
71da9eea
AD
1301/*------------------------------------.
1302| yyerrlab -- here on detecting error |
1303`------------------------------------*/
1304yyerrlab:
1305 /* If not already recovering from an error, report this error. */
1306 if (!yyerrstatus)
10fa2066 1307 {
17da6427 1308 ++yynerrs;
b4c1f9d2
PE
1309#if ! YYERROR_VERBOSE
1310 yyerror (]b4_yyerror_args[YY_("syntax error"));
1311#else
1312 {
1313 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1314 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1315 {
1316 YYSIZE_T yyalloc = 2 * yysize;
1317 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1318 yyalloc = YYSTACK_ALLOC_MAXIMUM;
1319 if (yymsg != yymsgbuf)
1320 YYSTACK_FREE (yymsg);
1321 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1322 if (yymsg)
1323 yymsg_alloc = yyalloc;
1324 else
3aa2f55d 1325 {
b4c1f9d2
PE
1326 yymsg = yymsgbuf;
1327 yymsg_alloc = sizeof yymsgbuf;
3aa2f55d 1328 }
b4c1f9d2 1329 }
df5aed8c 1330
b4c1f9d2
PE
1331 if (0 < yysize && yysize <= yymsg_alloc)
1332 {
1333 (void) yysyntax_error (yymsg, yystate, yychar);
1334 yyerror (]b4_yyerror_args[yymsg);
1335 }
1336 else
1337 {
1338 yyerror (]b4_yyerror_args[YY_("syntax error"));
1339 if (yysize != 0)
1a059451 1340 goto yyexhaustedlab;
b4c1f9d2
PE
1341 }
1342 }
1343#endif
10fa2066 1344 }
71da9eea 1345
327afc7c 1346]b4_locations_if([[ yyerror_range[0] = yylloc;]])[
d42f69cd 1347
10fa2066
RS
1348 if (yyerrstatus == 3)
1349 {
742e4900 1350 /* If just tried and failed to reuse lookahead token after an
71da9eea 1351 error, discard it. */
10fa2066 1352
a6b89bb2 1353 if (yychar <= YYEOF)
02650b7f 1354 {
258b75ca 1355 /* Return failure if at end of input. */
a6b89bb2 1356 if (yychar == YYEOF)
80ce3401 1357 YYABORT;
02650b7f 1358 }
a6b89bb2
PE
1359 else
1360 {
4b367315 1361 yydestruct ("Error: discarding",
327afc7c 1362 yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
a6b89bb2 1363 yychar = YYEMPTY;
a6b89bb2 1364 }
10fa2066
RS
1365 }
1366
742e4900 1367 /* Else will try to reuse lookahead token after shifting the error
71da9eea 1368 token. */
8a3eb3c8 1369 goto yyerrlab1;
300a7966 1370
10fa2066 1371
a6b89bb2
PE
1372/*---------------------------------------------------.
1373| yyerrorlab -- error raised explicitly by YYERROR. |
1374`---------------------------------------------------*/
1375yyerrorlab:
1376
c7a65b99
PE
1377 /* Pacify compilers like GCC when the user code never invokes
1378 YYERROR and the label yyerrorlab therefore never appears in user
1379 code. */
2a4647a3 1380 if (/*CONSTCOND*/ 0)
a6b89bb2 1381 goto yyerrorlab;
a6b89bb2 1382
327afc7c 1383]b4_locations_if([[ yyerror_range[0] = yylsp[1-yylen];
a85284cf 1384]])[ /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 1385 this YYERROR. */
a85284cf
AD
1386 YYPOPSTACK (yylen);
1387 yylen = 0;
1388 YY_STACK_PRINT (yyss, yyssp);
a6b89bb2 1389 yystate = *yyssp;
3fc16193 1390 goto yyerrlab1;
a6b89bb2
PE
1391
1392
1393/*-------------------------------------------------------------.
1394| yyerrlab1 -- common code for both syntax error and YYERROR. |
1395`-------------------------------------------------------------*/
300a7966 1396yyerrlab1:
cf44a9ae 1397 yyerrstatus = 3; /* Each real token shifted decrements this. */
10fa2066 1398
660bc8dd
PE
1399 for (;;)
1400 {
1401 yyn = yypact[yystate];
12b0043a 1402 if (yyn != YYPACT_NINF)
660bc8dd
PE
1403 {
1404 yyn += YYTERROR;
1405 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1406 {
1407 yyn = yytable[yyn];
1408 if (0 < yyn)
1409 break;
1410 }
1411 }
10fa2066 1412
660bc8dd
PE
1413 /* Pop the current state because it cannot handle the error token. */
1414 if (yyssp == yyss)
1415 YYABORT;
5504898e 1416
327afc7c 1417]b4_locations_if([[ yyerror_range[0] = *yylsp;]])[
4b367315 1418 yydestruct ("Error: popping",
327afc7c 1419 yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
a85284cf 1420 YYPOPSTACK (1);
a6b89bb2 1421 yystate = *yyssp;
b0937b22 1422 YY_STACK_PRINT (yyss, yyssp);
10fa2066 1423 }
10fa2066 1424
17da6427 1425 *++yyvsp = yylval;
327afc7c 1426]b4_locations_if([[
3fc16193
AD
1427 yyerror_range[1] = yylloc;
1428 /* Using YYLLOC is tempting, but would change the location of
742e4900 1429 the lookahead. YYLOC is available though. */
401aace6 1430 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
3fc16193 1431 *++yylsp = yyloc;]])[
10fa2066 1432
9d9b8b70 1433 /* Shift the error token. */
30757c8c 1434 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1576d44d 1435
10fa2066
RS
1436 yystate = yyn;
1437 goto yynewstate;
70ddf897 1438
71da9eea
AD
1439
1440/*-------------------------------------.
1441| yyacceptlab -- YYACCEPT comes here. |
1442`-------------------------------------*/
1443yyacceptlab:
600f9b0c
PE
1444 yyresult = 0;
1445 goto yyreturn;
71da9eea
AD
1446
1447/*-----------------------------------.
1448| yyabortlab -- YYABORT comes here. |
1449`-----------------------------------*/
1450yyabortlab:
600f9b0c
PE
1451 yyresult = 1;
1452 goto yyreturn;
1453
a2ea208d 1454#if !defined(yyoverflow) || YYERROR_VERBOSE
1a059451
PE
1455/*-------------------------------------------------.
1456| yyexhaustedlab -- memory exhaustion comes here. |
1457`-------------------------------------------------*/
1458yyexhaustedlab:
1459 yyerror (]b4_yyerror_args[YY_("memory exhausted"));
600f9b0c
PE
1460 yyresult = 2;
1461 /* Fall through. */
0bfb02ff 1462#endif
600f9b0c
PE
1463
1464yyreturn:
868d2d96 1465 if (yychar != YYEMPTY)
dd5f2af2 1466 yydestruct ("Cleanup: discarding lookahead",
327afc7c 1467 yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[);
a85284cf 1468 /* Do not reclaim the symbols of the rule which action triggered
9d9b8b70 1469 this YYABORT or YYACCEPT. */
a85284cf
AD
1470 YYPOPSTACK (yylen);
1471 YY_STACK_PRINT (yyss, yyssp);
258b75ca
PE
1472 while (yyssp != yyss)
1473 {
dd5f2af2 1474 yydestruct ("Cleanup: popping",
327afc7c 1475 yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[);
a85284cf 1476 YYPOPSTACK (1);
258b75ca 1477 }
600f9b0c
PE
1478#ifndef yyoverflow
1479 if (yyss != yyssa)
1480 YYSTACK_FREE (yyss);
b4c1f9d2
PE
1481#endif
1482#if YYERROR_VERBOSE
1483 if (yymsg != yymsgbuf)
1484 YYSTACK_FREE (yymsg);
70ddf897 1485#endif
7b5cdcbd
JD
1486 /* Make sure YYID is used. */
1487 return YYID (yyresult);
be2a1a68
AD
1488]}
1489
24c0aad7 1490
be2a1a68 1491b4_epilogue
327afc7c 1492b4_defines_if(
08af01c2 1493[@output(b4_spec_defines_file@)
327afc7c 1494b4_copyright([Skeleton interface for Bison's Yacc-like parsers in C],dnl '
e2a21b6f 1495 [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])
6e93d810 1496
a4e25e1d 1497b4_percent_code_get([[requires]])[]dnl
9bc0dd67 1498
cf147260 1499b4_token_enums_defines(b4_tokens)
be2a1a68 1500
9bc0dd67
JD
1501[#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1502]m4_ifdef([b4_stype],
ddc8ede1 1503[[typedef union ]b4_union_name[
7ecec4dd 1504{
ddc8ede1 1505]b4_user_stype[
7ecec4dd 1506} YYSTYPE;
ddc8ede1
PE
1507# define YYSTYPE_IS_TRIVIAL 1]],
1508[m4_if(b4_tag_seen_flag, 0,
1509[[typedef int YYSTYPE;
1510# define YYSTYPE_IS_TRIVIAL 1]])])[
050c471b
PE
1511# define yystype YYSTYPE /* obsolescent; will be withdrawn */
1512# define YYSTYPE_IS_DECLARED 1
be2a1a68
AD
1513#endif
1514
9bc0dd67 1515]b4_pure_if([],
be2a1a68
AD
1516[extern YYSTYPE b4_prefix[]lval;])
1517
327afc7c 1518b4_locations_if(
02650b7f 1519[#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
050c471b 1520typedef struct YYLTYPE
be2a1a68
AD
1521{
1522 int first_line;
1523 int first_column;
1524 int last_line;
1525 int last_column;
050c471b
PE
1526} YYLTYPE;
1527# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
1528# define YYLTYPE_IS_DECLARED 1
1529# define YYLTYPE_IS_TRIVIAL 1
be2a1a68 1530#endif
ff48177d 1531
9bc0dd67 1532]b4_pure_if([],
327afc7c 1533 [extern YYLTYPE b4_prefix[]lloc;])
9bc0dd67
JD
1534)dnl b4_locations_if
1535
a4e25e1d 1536b4_percent_code_get([[provides]])
327afc7c 1537])dnl b4_defines_if
08af01c2 1538m4_divert_pop(0)
6afc30cc 1539
d782395d
JD
1540],
1541[m4_include(b4_pkgdatadir/[push.c])])],
1542[m4_include(b4_pkgdatadir/[push.c])])