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