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