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