]> git.saurik.com Git - bison.git/blame - data/bison.simple
* src/symtab.h, src/symtab.c (symbol_type_set)
[bison.git] / data / bison.simple
CommitLineData
007a50a4 1m4_divert(-1) -*- C -*-
a8289c62 2
680e8701
AD
3# b4_sint_type(MAX)
4# -----------------
5# Return the smallest signed int type able to handle the number MAX.
6m4_define([b4_sint_type],
7[m4_if(m4_eval([$1 <= 127]), [1], [signed char],
8 m4_eval([$1 <= 32767]), [1], [signed short],
fcc61800 9 [signed int])])
680e8701
AD
10
11
12# b4_uint_type(MAX)
13# -----------------
14# Return the smallest unsigned int type able to handle the number MAX.
15m4_define([b4_uint_type],
16[m4_if(m4_eval([$1 <= 255]), [1], [unsigned char],
17 m4_eval([$1 <= 65535]), [1], [unsigned short],
fcc61800 18 [unsigned int])])
680e8701
AD
19
20
82b6cb3f
AD
21# b4_lhs_value([TYPE])
22# --------------------
23# Expansion of $<TYPE>$.
24m4_define([b4_lhs_value],
25[yyval[]m4_ifval([$1], [.$1])])
26
27
28# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
29# --------------------------------------
30# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
31# symbols on RHS.
32m4_define([b4_rhs_value],
33[yyvsp@<:@m4_eval([$2 - $1])@:>@m4_ifval([$3], [.$3])])
34
35
58612f1d
AD
36
37## ----------- ##
38## Locations. ##
39## ----------- ##
40
41# b4_location_if(IF-TRUE, IF-FALSE)
42# ---------------------------------
43# Expand IF-TRUE, if locations are used, IF-FALSE otherwise.
44m4_define([b4_location_if],
45[m4_if(b4_locations_flag, [1],
46 [$1],
47 [$2])])
48
49
82b6cb3f
AD
50# b4_lhs_location()
51# -----------------
52# Expansion of @$.
53m4_define([b4_lhs_location],
54[yyloc])
55
56
57# b4_rhs_location(RULE-LENGTH, NUM)
58# ---------------------------------
59# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
60# on RHS.
61m4_define([b4_rhs_location],
62[yylsp@<:@m4_eval([$2 - $1])@:>@])
63
64
58612f1d 65
74310291
AD
66## -------------- ##
67## %pure-parser. ##
68## -------------- ##
69
70# b4_pure_if(IF-TRUE, IF-FALSE)
71# -----------------------------
72# Expand IF-TRUE, if %pure-parser, IF-FALSE otherwise.
73m4_define([b4_pure_if],
74[m4_if(b4_pure, [1],
75 [$1],
76 [$2])])
77
78
58612f1d
AD
79## ------------------- ##
80## Output file names. ##
81## ------------------- ##
82
be2a1a68 83m4_define_default([b4_input_suffix], [.y])
2992e1e9 84
be2a1a68
AD
85m4_define_default([b4_output_parser_suffix],
86[m4_translit(b4_input_suffix, [yY], [cC])])
87
88m4_define_default([b4_output_parser_name],
89[b4_output_prefix[]b4_output_infix[]b4_output_parser_suffix[]])
90
91
92m4_define_default([b4_output_header_suffix],
93[m4_translit(b4_input_suffix, [yY], [hH])])
94
95m4_define_default([b4_output_header_name],
96[b4_output_prefix[]b4_output_infix[]b4_output_header_suffix[]])
97
98m4_define_default([b4_header_guard],
99 [m4_bpatsubst(m4_toupper([BISON_]b4_output_header_name),
100 [[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]], [_])])
101
0d8bed56 102
9280d3ef
AD
103## ------------------------- ##
104## Assigning token numbers. ##
105## ------------------------- ##
106
83ccf991
AD
107# b4_token_define(TOKEN-NAME, TOKEN-NUMBER)
108# -----------------------------------------
0d8bed56
AD
109# Output the definition of this token as #define.
110m4_define([b4_token_define],
111[#define $1 $2
112])
113
114
83ccf991
AD
115# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER)
116# ---------------------------------------
117# Output the definition of this token as an enum.
118m4_define([b4_token_enum],
53c71a12 119[$1 = $2])
83ccf991
AD
120
121
0d8bed56
AD
122# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER)
123# -------------------------------------------------------
53c71a12 124# Output the definition of the tokens (if there are) as enums and #define.
0d8bed56 125m4_define([b4_token_defines],
53c71a12
AD
126[m4_if([$@], [[]], [],
127[/* Tokens. */
128#ifndef YYTOKENTYPE
83ccf991
AD
129# if defined (__STDC__) || defined (__cplusplus)
130 /* Put the tokens into the symbol table, so that GDB and other debuggers
131 know about them. */
132 enum yytokentype {
133m4_map_sep([ b4_token_enum], [,
134],
135 [$@])
136 };
83ccf991 137# endif
fba798c7
PE
138 /* POSIX requires `int' for tokens in interfaces. */
139# define YYTOKENTYPE int
53c71a12
AD
140#endif /* !YYTOKENTYPE */
141m4_map([b4_token_define], [$@])
142])
143])
0d8bed56
AD
144
145
be2a1a68
AD
146m4_divert(0)dnl
147#output "b4_output_parser_name"
148/* A Bison parser, made from b4_filename
149 by GNU bison b4_version. */
150
151/* Skeleton output parser for Bison,
2992e1e9
PE
152 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
153 Foundation, Inc.
10fa2066
RS
154
155 This program is free software; you can redistribute it and/or modify
156 it under the terms of the GNU General Public License as published by
21b14802 157 the Free Software Foundation; either version 2, or (at your option)
10fa2066
RS
158 any later version.
159
160 This program is distributed in the hope that it will be useful,
161 but WITHOUT ANY WARRANTY; without even the implied warranty of
162 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
163 GNU General Public License for more details.
164
165 You should have received a copy of the GNU General Public License
166 along with this program; if not, write to the Free Software
c49a8e71
JT
167 Foundation, Inc., 59 Temple Place - Suite 330,
168 Boston, MA 02111-1307, USA. */
10fa2066 169
c71f8bba
RS
170/* As a special exception, when this file is copied by Bison into a
171 Bison output file, you may use that output file without restriction.
172 This special exception was added by the Free Software Foundation
cfeaeb52 173 in version 1.24 of Bison. */
10fa2066 174
71da9eea
AD
175/* This is the parser code that is written into each bison parser when
176 the %semantic_parser declaration is not specified in the grammar.
fdbcd8e2
AD
177 It was written by Richard Stallman by simplifying the original so
178 called ``semantic'' parser. */
444fbf65 179
cf44a9ae
PE
180/* All symbols defined below should begin with yy or YY, to avoid
181 infringing on user name space. This should be done even for local
182 variables, as they might otherwise be expanded by user macros.
183 There are some unavoidable exceptions within include files to
184 define necessary library symbols; they are noted "INFRINGES ON
185 USER NAME SPACE" below. */
186
7093d0f5
AD
187/* Identify Bison output. */
188#define YYBISON 1
fd51e5ff 189
7093d0f5 190/* Pure parsers. */
be2a1a68 191#define YYPURE b4_pure
7093d0f5
AD
192
193/* Using locations. */
be2a1a68 194#define YYLSP_NEEDED b4_locations_flag
7093d0f5 195
be2a1a68
AD
196m4_if(b4_prefix[], [yy], [],
197[/* If NAME_PREFIX is specified substitute the variables and functions
17da6427 198 names. */
be2a1a68
AD
199#define yyparse b4_prefix[]parse
200#define yylex b4_prefix[]lex
201#define yyerror b4_prefix[]error
202#define yylval b4_prefix[]lval
203#define yychar b4_prefix[]char
204#define yydebug b4_prefix[]debug
205#define yynerrs b4_prefix[]nerrs
58612f1d 206b4_location_if([#define yylloc b4_prefix[]lloc])])
17da6427 207
0dd1580a
RA
208/* Copy the first part of user declarations. */
209b4_pre_prologue
cce71710 210
69078d4b
AD
211b4_token_defines(b4_tokens)
212
d99361e6
AD
213/* Enabling traces. */
214#ifndef YYDEBUG
be2a1a68 215# define YYDEBUG b4_debug
d99361e6
AD
216#endif
217
218/* Enabling verbose error messages. */
219#ifdef YYERROR_VERBOSE
220# undef YYERROR_VERBOSE
221# define YYERROR_VERBOSE 1
222#else
be2a1a68 223# define YYERROR_VERBOSE b4_error_verbose
d99361e6
AD
224#endif
225
fd51e5ff 226#ifndef YYSTYPE
e9955c83 227m4_ifdef([b4_stype],
642cb8f8 228[#line b4_stype_line "b4_filename"
e96c9728
AD
229typedef union b4_stype yystype;
230/* Line __line__ of __file__. */
231#line __oline__ "__ofile__"],
e9955c83 232[typedef int yystype;])
fd51e5ff 233# define YYSTYPE yystype
71cd15d4 234# define YYSTYPE_IS_TRIVIAL 1
fd51e5ff
AD
235#endif
236
237#ifndef YYLTYPE
238typedef struct yyltype
239{
240 int first_line;
241 int first_column;
242 int last_line;
243 int last_column;
244} yyltype;
be2a1a68 245# define YYLTYPE b4_ltype
71cd15d4 246# define YYLTYPE_IS_TRIVIAL 1
fd51e5ff
AD
247#endif
248
0dd1580a
RA
249/* Copy the second part of user declarations. */
250b4_post_prologue
251
be2a1a68 252/* Line __line__ of __file__. */
06446ccf 253#line __oline__ "__ofile__"
7093d0f5 254
cf44a9ae 255#if ! defined (yyoverflow) || YYERROR_VERBOSE
7093d0f5
AD
256
257/* The parser invokes alloca or malloc; define the necessary symbols. */
258
259# if YYSTACK_USE_ALLOCA
260# define YYSTACK_ALLOC alloca
7093d0f5
AD
261# else
262# ifndef YYSTACK_USE_ALLOCA
263# if defined (alloca) || defined (_ALLOCA_H)
264# define YYSTACK_ALLOC alloca
7093d0f5 265# else
0d8a7363 266# ifdef __GNUC__
7093d0f5
AD
267# define YYSTACK_ALLOC __builtin_alloca
268# endif
7093d0f5
AD
269# endif
270# endif
271# endif
272
273# ifdef YYSTACK_ALLOC
274 /* Pacify GCC's `empty if-body' warning. */
275# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
276# else
45119af1
PE
277# if defined (__STDC__) || defined (__cplusplus)
278# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
279# define YYSIZE_T size_t
7093d0f5 280# endif
45119af1
PE
281# define YYSTACK_ALLOC malloc
282# define YYSTACK_FREE free
7093d0f5 283# endif
cf44a9ae
PE
284#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
285
286
287#if (! defined (yyoverflow) \
288 && (! defined (__cplusplus) \
289 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
7093d0f5 290
600f9b0c
PE
291/* A type that is properly aligned for any stack member. */
292union yyalloc
293{
2729e106
PE
294 short yyss;
295 YYSTYPE yyvs;
58612f1d
AD
296 b4_location_if([ YYLTYPE yyls;
297])dnl
600f9b0c
PE
298};
299
300/* The size of the maximum gap between one aligned stack and the next. */
7093d0f5 301# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
600f9b0c
PE
302
303/* The size of an array large to enough to hold all stacks, each with
304 N elements. */
58612f1d
AD
305b4_location_if(
306[# define YYSTACK_BYTES(N) \
cf44a9ae 307 ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
58612f1d
AD
308 + 2 * YYSTACK_GAP_MAX)],
309[# define YYSTACK_BYTES(N) \
cf44a9ae 310 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
58612f1d 311 + YYSTACK_GAP_MAX)])
600f9b0c 312
5b041382
PE
313/* Copy COUNT objects from FROM to TO. The source and destination do
314 not overlap. */
315# ifndef YYCOPY
316# if 1 < __GNUC__
317# define YYCOPY(To, From, Count) \
318 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
319# else
320# define YYCOPY(To, From, Count) \
321 do \
322 { \
323 register YYSIZE_T yyi; \
324 for (yyi = 0; yyi < (Count); yyi++) \
0c76a0c9 325 (To)[[yyi]] = (From)[[yyi]]; \
5b041382
PE
326 } \
327 while (0)
328# endif
329# endif
330
331/* Relocate STACK from its old location to the new one. The
7093d0f5 332 local variables YYSIZE and YYSTACKSIZE give the old and new number of
600f9b0c
PE
333 elements in the stack, and YYPTR gives the new location of the
334 stack. Advance YYPTR to a properly aligned location for the next
335 stack. */
5b041382 336# define YYSTACK_RELOCATE(Stack) \
7093d0f5
AD
337 do \
338 { \
339 YYSIZE_T yynewbytes; \
5b041382 340 YYCOPY (&yyptr->Stack, Stack, yysize); \
2729e106 341 Stack = &yyptr->Stack; \
5b041382 342 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
2729e106 343 yyptr += yynewbytes / sizeof (*yyptr); \
7093d0f5
AD
344 } \
345 while (0)
346
cf44a9ae 347#endif
8850be4b 348
7742ddeb 349/* YYFINAL -- State number of the termination state. */
be2a1a68
AD
350#define YYFINAL b4_final
351#define YYFLAG b4_flag
352#define YYLAST b4_last
7742ddeb
AD
353
354/* YYNTOKENS -- Number of terminals. */
be2a1a68 355#define YYNTOKENS b4_ntokens
7742ddeb 356/* YYNNTS -- Number of nonterminals. */
be2a1a68 357#define YYNNTS b4_nnts
7742ddeb 358/* YYNRULES -- Number of rules. */
be2a1a68 359#define YYNRULES b4_nrules
7742ddeb 360/* YYNRULES -- Number of states. */
be2a1a68 361#define YYNSTATES b4_nstates
7742ddeb
AD
362
363/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
007a50a4
AD
364#define YYUNDEFTOK b4_undef_token_number
365#define YYMAXUTOK b4_user_token_number_max
366
007a50a4
AD
367#define YYTRANSLATE(X) \
368 ((unsigned)(X) <= YYMAXUTOK ? yytranslate[[X]] : YYUNDEFTOK)
a8289c62 369
be2a1a68 370/* YYTRANSLATE[[YYLEX]] -- Bison symbol number corresponding to YYLEX. */
c0c9ea05 371static const b4_uint_type(b4_translate_max) yytranslate[[]] =
a8289c62 372{
be2a1a68 373 b4_translate
a8289c62
RA
374};
375
376#if YYDEBUG
be2a1a68 377/* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in
7742ddeb 378 YYRHS. */
5df5f6d5 379static const b4_uint_type(b4_prhs_max) yyprhs[[]] =
a8289c62 380{
be2a1a68 381 b4_prhs
a8289c62
RA
382};
383
3db472b9 384/* YYRHS -- A `-1'-separated list of the rules' RHS. */
5df5f6d5 385static const b4_sint_type(b4_rhs_max) yyrhs[[]] =
a8289c62 386{
be2a1a68 387 b4_rhs
a8289c62
RA
388};
389
be2a1a68 390/* YYRLINE[[YYN]] -- source line where rule number YYN was defined. */
5df5f6d5 391static const b4_uint_type(b4_rline_max) yyrline[[]] =
a8289c62 392{
be2a1a68 393 b4_rline
a8289c62
RA
394};
395#endif
396
5504898e 397#if YYDEBUG || YYERROR_VERBOSE
be2a1a68 398/* YYTNME[[SYMBOL-NUM]] -- String name of the symbol SYMBOL-NUM.
7742ddeb 399 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
be2a1a68 400static const char *const yytname[[]] =
a8289c62 401{
be2a1a68 402 b4_tname
a8289c62
RA
403};
404#endif
405
769b430f
AD
406/* YYTOKNUM[[YYLEX-NUM]] -- Internal token number corresponding to
407 token YYLEX-NUM. */
be2a1a68 408static const short yytoknum[[]] =
a8289c62 409{
be2a1a68 410 b4_toknum
a8289c62
RA
411};
412
be2a1a68 413/* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */
c0c9ea05 414static const b4_uint_type(b4_r1_max) yyr1[[]] =
a8289c62 415{
be2a1a68 416 b4_r1
a8289c62
RA
417};
418
be2a1a68 419/* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN. */
5df5f6d5 420static const b4_uint_type(b4_r2_max) yyr2[[]] =
a8289c62 421{
be2a1a68 422 b4_r2
a8289c62
RA
423};
424
5504898e
AD
425/* YYDEFACT[[STATE-NAME]] -- Default rule to reduce with in state
426 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
427 means the default is an error. */
be2a1a68 428static const short yydefact[[]] =
a8289c62 429{
be2a1a68 430 b4_defact
a8289c62
RA
431};
432
be2a1a68
AD
433/* YYPGOTO[[NTERM-NUM]]. */
434static const short yydefgoto[[]] =
a8289c62 435{
be2a1a68 436 b4_defgoto
a8289c62
RA
437};
438
be2a1a68 439/* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing
7742ddeb 440 STATE-NUM. */
be2a1a68 441static const short yypact[[]] =
a8289c62 442{
be2a1a68 443 b4_pact
a8289c62
RA
444};
445
be2a1a68
AD
446/* YYPGOTO[[NTERM-NUM]]. */
447static const short yypgoto[[]] =
a8289c62 448{
be2a1a68 449 b4_pgoto
a8289c62
RA
450};
451
be2a1a68 452/* YYTABLE[[YYPACT[STATE-NUM]]]. What to do in state STATE-NUM. If
7742ddeb
AD
453 positive, shift that token. If negative, reduce the rule which
454 number is the opposite. If zero, do what YYDEFACT says. */
be2a1a68 455static const short yytable[[]] =
a8289c62 456{
be2a1a68 457 b4_table
a8289c62
RA
458};
459
be2a1a68 460static const short yycheck[[]] =
a8289c62 461{
be2a1a68 462 b4_check
a8289c62
RA
463};
464
5504898e
AD
465/* YYSTOS[[STATE-NUM]] -- The (internal number of the) accessing
466 symbol of state STATE-NUM. */
467static const b4_uint_type(b4_stos_max) yystos[[]] =
468{
469 b4_stos
470};
7093d0f5
AD
471
472#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
473# define YYSIZE_T __SIZE_TYPE__
474#endif
475#if ! defined (YYSIZE_T) && defined (size_t)
476# define YYSIZE_T size_t
477#endif
b7575ffe 478#if ! defined (YYSIZE_T)
45119af1
PE
479# if defined (__STDC__) || defined (__cplusplus)
480# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
481# define YYSIZE_T size_t
b7575ffe 482# endif
7093d0f5
AD
483#endif
484#if ! defined (YYSIZE_T)
485# define YYSIZE_T unsigned int
486#endif
487
10fa2066 488#define yyerrok (yyerrstatus = 0)
17da6427 489#define yyclearin (yychar = YYEMPTY)
10fa2066
RS
490#define YYEMPTY -2
491#define YYEOF 0
a8289c62 492
70ddf897 493#define YYACCEPT goto yyacceptlab
a8289c62 494#define YYABORT goto yyabortlab
10fa2066 495#define YYERROR goto yyerrlab1
a8289c62 496
71da9eea
AD
497/* Like YYERROR except do call yyerror. This remains here temporarily
498 to ease the transition to the new meaning of YYERROR, for GCC.
10fa2066 499 Once GCC version 2 has supplanted version 1, this can go. */
a8289c62 500
10fa2066 501#define YYFAIL goto yyerrlab
a8289c62 502
10fa2066 503#define YYRECOVERING() (!!yyerrstatus)
a8289c62 504
69b4e0c5 505#define YYBACKUP(Token, Value) \
10fa2066 506do \
17da6427 507 if (yychar == YYEMPTY && yylen == 1) \
71da9eea 508 { \
17da6427 509 yychar = (Token); \
7742ddeb 510 yylval = (Value); \
17da6427 511 yychar1 = YYTRANSLATE (yychar); \
10fa2066
RS
512 YYPOPSTACK; \
513 goto yybackup; \
514 } \
515 else \
71da9eea 516 { \
7742ddeb 517 yyerror ("syntax error: cannot back up"); \
71da9eea
AD
518 YYERROR; \
519 } \
10fa2066
RS
520while (0)
521
522#define YYTERROR 1
523#define YYERRCODE 256
524
3abcd459 525/* YYLLOC_DEFAULT -- Compute the default location (before the actions
b2d52318 526 are run). */
3abcd459
AD
527
528#ifndef YYLLOC_DEFAULT
b2d52318
AD
529# define YYLLOC_DEFAULT(Current, Rhs, N) \
530 Current.first_line = Rhs[[1]].first_line; \
531 Current.first_column = Rhs[[1]].first_column; \
532 Current.last_line = Rhs[[N]].last_line; \
533 Current.last_column = Rhs[[N]].last_column;
3abcd459
AD
534#endif
535
3abcd459 536/* YYLEX -- calling `yylex' with the right arguments. */
553e2b22 537
74310291
AD
538b4_pure_if(
539[#ifdef YYLEX_PARAM
5c1180b3 540# define YYLEX yylex (&yylval[]b4_location_if([, &yylloc]), YYLEX_PARAM)
74310291 541#else
5c1180b3 542# define YYLEX yylex (&yylval[]b4_location_if([, &yylloc]))
74310291
AD
543#endif],
544[#define YYLEX yylex ()])
553e2b22 545
5a35a6cb 546/* Enable debugging if requested. */
0d533154 547#if YYDEBUG
b7575ffe
PE
548
549# ifndef YYFPRINTF
45119af1
PE
550# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
551# define YYFPRINTF fprintf
b7575ffe
PE
552# endif
553
5a35a6cb
AD
554# define YYDPRINTF(Args) \
555do { \
17da6427 556 if (yydebug) \
b7575ffe 557 YYFPRINTF Args; \
5a35a6cb 558} while (0)
253862fd
AD
559# define YYDSYMPRINT(Args) \
560do { \
561 if (yydebug) \
562 yysymprint Args; \
563} while (0)
cf44a9ae
PE
564/* Nonzero means print parse trace. It is left uninitialized so that
565 multiple parsers can coexist. */
17da6427 566int yydebug;
5a35a6cb
AD
567#else /* !YYDEBUG */
568# define YYDPRINTF(Args)
253862fd 569# define YYDSYMPRINT(Args)
5a35a6cb
AD
570#endif /* !YYDEBUG */
571
572/* YYINITDEPTH -- initial size of the parser's stacks. */
10fa2066 573#ifndef YYINITDEPTH
be2a1a68 574# define YYINITDEPTH b4_initdepth
10fa2066
RS
575#endif
576
5a35a6cb 577/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
600f9b0c
PE
578 if the built-in stack extension method is used).
579
580 Do not make this value too large; the results are undefined if
581 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
582 evaluated with infinite-precision integer arithmetic. */
583
10fa2066 584#if YYMAXDEPTH == 0
b07b484a 585# undef YYMAXDEPTH
10fa2066
RS
586#endif
587
588#ifndef YYMAXDEPTH
be2a1a68 589# define YYMAXDEPTH b4_maxdepth
10fa2066 590#endif
a8289c62 591
10fa2066 592\f
a8289c62 593
7093d0f5
AD
594#if YYERROR_VERBOSE
595
596# ifndef yystrlen
597# if defined (__GLIBC__) && defined (_STRING_H)
598# define yystrlen strlen
599# else
600/* Return the length of YYSTR. */
601static YYSIZE_T
602# if defined (__STDC__) || defined (__cplusplus)
603yystrlen (const char *yystr)
604# else
605yystrlen (yystr)
606 const char *yystr;
607# endif
608{
609 register const char *yys = yystr;
610
611 while (*yys++ != '\0')
612 continue;
613
614 return yys - yystr - 1;
615}
616# endif
617# endif
618
619# ifndef yystpcpy
620# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
621# define yystpcpy stpcpy
622# else
623/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
624 YYDEST. */
625static char *
f11966ff
PE
626# if defined (__STDC__) || defined (__cplusplus)
627yystpcpy (char *yydest, const char *yysrc)
628# else
7093d0f5
AD
629yystpcpy (yydest, yysrc)
630 char *yydest;
631 const char *yysrc;
7093d0f5
AD
632# endif
633{
634 register char *yyd = yydest;
635 register const char *yys = yysrc;
636
637 while ((*yyd++ = *yys++) != '\0')
638 continue;
639
640 return yyd - 1;
641}
642# endif
643# endif
644
645#endif /* !YYERROR_VERBOSE */
646
10fa2066 647\f
a8289c62 648
b658bf92
RS
649/* The user can define YYPARSE_PARAM as the name of an argument to be passed
650 into yyparse. The argument should have type void *.
651 It should actually point to an object.
652 Grammar actions can access the variable by casting it
653 to the proper pointer type. */
654
655#ifdef YYPARSE_PARAM
45119af1 656# if defined (__STDC__) || defined (__cplusplus)
b07b484a
AD
657# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
658# define YYPARSE_PARAM_DECL
45119af1 659# else
b07b484a
AD
660# define YYPARSE_PARAM_ARG YYPARSE_PARAM
661# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
45119af1 662# endif
71da9eea 663#else /* !YYPARSE_PARAM */
b07b484a
AD
664# define YYPARSE_PARAM_ARG
665# define YYPARSE_PARAM_DECL
71da9eea 666#endif /* !YYPARSE_PARAM */
b658bf92 667
1b181651
PE
668/* Prevent warning if -Wstrict-prototypes. */
669#ifdef __GNUC__
b07b484a 670# ifdef YYPARSE_PARAM
17da6427 671int yyparse (void *);
b07b484a 672# else
17da6427 673int yyparse (void);
b07b484a 674# endif
1b181651 675#endif
93b68a0e
AD
676
677#if defined (__STDC__) || defined (__cplusplus)
678static void yydestructor (int yytype,
679 YYSTYPE yyvalue[]b4_location_if([, YYLTYPE yylocation]));
366eea36
AD
680# if YYDEBUG
681static void yysymprint (FILE* out, int yytype,
682 YYSTYPE yyvalue[]b4_location_if([, YYLTYPE yylocation]));
683# endif
93b68a0e 684#endif
1b181651 685
74310291
AD
686m4_divert_push([KILL])# ======================== M4 code.
687# b4_declare_parser_variables
688# ---------------------------
689# Declare the variables that are global, or local to YYPARSE if
690# pure-parser
691m4_define([b4_declare_parser_variables],
692[/* The lookahead symbol. */
693int yychar;
694
695/* The semantic value of the lookahead symbol. */
696YYSTYPE yylval;
697
698/* Number of parse errors so far. */
699int yynerrs;b4_location_if([
700/* Location data for the lookahead symbol. */
58612f1d 701YYLTYPE yylloc;])
74310291
AD
702])
703m4_divert_pop([KILL])dnl# ====================== End of M4 code.
58612f1d 704
74310291
AD
705b4_pure_if([],
706 [b4_declare_parser_variables])
a35f64ea 707
10fa2066 708int
17da6427 709yyparse (YYPARSE_PARAM_ARG)
b658bf92 710 YYPARSE_PARAM_DECL
be2a1a68 711{[
74310291 712 ]b4_pure_if([b4_declare_parser_variables])[
10fa2066
RS
713 register int yystate;
714 register int yyn;
600f9b0c 715 int yyresult;
b07b484a
AD
716 /* Number of tokens to shift before error messages enabled. */
717 int yyerrstatus;
718 /* Lookahead token as an internal (translated) token number. */
719 int yychar1 = 0;
10fa2066 720
bb10be54
AD
721 /* Three stacks and their tools:
722 `yyss': related to states,
e9e4c321 723 `yyvs': related to semantic values,
bb10be54
AD
724 `yyls': related to locations.
725
726 Refer to the stacks thru separate pointers, to allow yyoverflow
727 to reallocate them elsewhere. */
728
e8cb70b9 729 /* The state stack. */
b07b484a 730 short yyssa[YYINITDEPTH];
bb10be54
AD
731 short *yyss = yyssa;
732 register short *yyssp;
733
b07b484a
AD
734 /* The semantic value stack. */
735 YYSTYPE yyvsa[YYINITDEPTH];
b07b484a 736 YYSTYPE *yyvs = yyvsa;
bb10be54 737 register YYSTYPE *yyvsp;
10fa2066 738
58612f1d
AD
739]b4_location_if(
740[[ /* The location stack. */
b07b484a 741 YYLTYPE yylsa[YYINITDEPTH];
10fa2066 742 YYLTYPE *yyls = yylsa;
58612f1d 743 YYLTYPE *yylsp;]])[
10fa2066 744
58612f1d 745#define YYPOPSTACK (yyvsp--, yyssp--]b4_location_if([, yylsp--])[)
10fa2066 746
7093d0f5 747 YYSIZE_T yystacksize = YYINITDEPTH;
10fa2066 748
6666f98f
AD
749 /* The variables used to return semantic value and location from the
750 action routines. */
bb10be54 751 YYSTYPE yyval;
58612f1d 752]b4_location_if([ YYLTYPE yyloc;])[
10fa2066 753
6666f98f 754 /* When reducing, the number of symbols on the RHS of the reduced
e8cb70b9 755 rule. */
10fa2066
RS
756 int yylen;
757
7ea5e977 758 YYDPRINTF ((stderr, "Starting parse\n"));
10fa2066
RS
759
760 yystate = 0;
761 yyerrstatus = 0;
17da6427
PB
762 yynerrs = 0;
763 yychar = YYEMPTY; /* Cause a token to be read. */
10fa2066
RS
764
765 /* Initialize stack pointers.
766 Waste one element of value and location stack
767 so that they stay on the same level as the state stack.
768 The wasted elements are never initialized. */
769
cbd89906 770 yyssp = yyss;
10fa2066 771 yyvsp = yyvs;
58612f1d 772]b4_location_if([ yylsp = yyls;])[
cbd89906 773 goto yysetstate;
10fa2066 774
71da9eea
AD
775/*------------------------------------------------------------.
776| yynewstate -- Push a new state, which is found in yystate. |
777`------------------------------------------------------------*/
342b8b6e 778 yynewstate:
71da9eea
AD
779 /* In all cases, when you get here, the value and location stacks
780 have just been pushed. so pushing a state here evens the stacks.
781 */
cbd89906
PE
782 yyssp++;
783
342b8b6e 784 yysetstate:
cbd89906 785 *yyssp = yystate;
10fa2066
RS
786
787 if (yyssp >= yyss + yystacksize - 1)
788 {
10fa2066 789 /* Get the current used size of the three stacks, in elements. */
7093d0f5 790 YYSIZE_T yysize = yyssp - yyss + 1;
10fa2066
RS
791
792#ifdef yyoverflow
3d76b07d
AD
793 {
794 /* Give user a chance to reallocate the stack. Use copies of
795 these so that the &'s don't force the real ones into
796 memory. */
797 YYSTYPE *yyvs1 = yyvs;
798 short *yyss1 = yyss;
58612f1d 799]b4_location_if([ YYLTYPE *yyls1 = yyls;])[
3d76b07d
AD
800
801 /* Each stack pointer address is followed by the size of the
58612f1d
AD
802 data in use in that stack, in bytes. This used to be a
803 conditional around just the two extra args, but that might
804 be undefined if yyoverflow is a macro. */
3d76b07d 805 yyoverflow ("parser stack overflow",
7093d0f5
AD
806 &yyss1, yysize * sizeof (*yyssp),
807 &yyvs1, yysize * sizeof (*yyvsp),
58612f1d 808]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[
3d76b07d 809 &yystacksize);
58612f1d 810]b4_location_if([ yyls = yyls1;])[
3d76b07d
AD
811 yyss = yyss1;
812 yyvs = yyvs1;
813 }
10fa2066 814#else /* no yyoverflow */
cf44a9ae
PE
815# ifndef YYSTACK_RELOCATE
816 goto yyoverflowlab;
817# else
10fa2066
RS
818 /* Extend the stack our own way. */
819 if (yystacksize >= YYMAXDEPTH)
600f9b0c 820 goto yyoverflowlab;
10fa2066
RS
821 yystacksize *= 2;
822 if (yystacksize > YYMAXDEPTH)
823 yystacksize = YYMAXDEPTH;
e9e4c321 824
600f9b0c
PE
825 {
826 short *yyss1 = yyss;
2729e106
PE
827 union yyalloc *yyptr =
828 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
600f9b0c
PE
829 if (! yyptr)
830 goto yyoverflowlab;
5b041382
PE
831 YYSTACK_RELOCATE (yyss);
832 YYSTACK_RELOCATE (yyvs);
58612f1d 833]b4_location_if([ YYSTACK_RELOCATE (yyls);])[
cf44a9ae 834# undef YYSTACK_RELOCATE
600f9b0c
PE
835 if (yyss1 != yyssa)
836 YYSTACK_FREE (yyss1);
837 }
cf44a9ae 838# endif
10fa2066
RS
839#endif /* no yyoverflow */
840
7093d0f5
AD
841 yyssp = yyss + yysize - 1;
842 yyvsp = yyvs + yysize - 1;
58612f1d 843]b4_location_if([ yylsp = yyls + yysize - 1;])[
10fa2066 844
7ea5e977 845 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
600f9b0c 846 (unsigned long int) yystacksize));
10fa2066
RS
847
848 if (yyssp >= yyss + yystacksize - 1)
849 YYABORT;
850 }
851
7ea5e977 852 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
10fa2066
RS
853
854 goto yybackup;
71da9eea 855
71da9eea
AD
856/*-----------.
857| yybackup. |
858`-----------*/
859yybackup:
10fa2066
RS
860
861/* Do appropriate processing given the current state. */
862/* Read a lookahead token if we need one and don't already have one. */
863/* yyresume: */
864
865 /* First try to decide what to do without reference to lookahead token. */
866
867 yyn = yypact[yystate];
868 if (yyn == YYFLAG)
869 goto yydefault;
870
871 /* Not known => get a lookahead token if don't already have one. */
872
873 /* yychar is either YYEMPTY or YYEOF
874 or a valid token in external form. */
875
17da6427 876 if (yychar == YYEMPTY)
10fa2066 877 {
7ea5e977 878 YYDPRINTF ((stderr, "Reading a token: "));
17da6427 879 yychar = YYLEX;
10fa2066
RS
880 }
881
e8cb70b9 882 /* Convert token to internal form (in yychar1) for indexing tables with. */
10fa2066 883
17da6427 884 if (yychar <= 0) /* This means end of input. */
10fa2066
RS
885 {
886 yychar1 = 0;
17da6427 887 yychar = YYEOF; /* Don't call YYLEX any more. */
10fa2066 888
7ea5e977 889 YYDPRINTF ((stderr, "Now at end of input.\n"));
10fa2066
RS
890 }
891 else
892 {
17da6427 893 yychar1 = YYTRANSLATE (yychar);
10fa2066 894
253862fd
AD
895 /* We have to keep this `#if YYDEBUG', since we use variables
896 which are defined only if `YYDEBUG' is set. */
897 YYDPRINTF ((stderr, "Next token is "));
898 YYDSYMPRINT ((stderr, yychar1, yylval]b4_location_if([, yyloc])[));
899 YYDPRINTF ((stderr, "\n"));
10fa2066
RS
900 }
901
902 yyn += yychar1;
903 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
904 goto yydefault;
905
906 yyn = yytable[yyn];
907
908 /* yyn is what to do for this token type in this state.
909 Negative => reduce, -yyn is rule number.
910 Positive => shift, yyn is new state.
911 New state is final state => don't bother to shift,
912 just return success.
913 0, or most negative number => error. */
914
915 if (yyn < 0)
916 {
917 if (yyn == YYFLAG)
918 goto yyerrlab;
919 yyn = -yyn;
920 goto yyreduce;
921 }
922 else if (yyn == 0)
923 goto yyerrlab;
924
925 if (yyn == YYFINAL)
926 YYACCEPT;
927
928 /* Shift the lookahead token. */
7ea5e977 929 YYDPRINTF ((stderr, "Shifting token %d (%s), ",
b7575ffe 930 yychar, yytname[yychar1]));
10fa2066
RS
931
932 /* Discard the token being shifted unless it is eof. */
17da6427
PB
933 if (yychar != YYEOF)
934 yychar = YYEMPTY;
10fa2066 935
17da6427 936 *++yyvsp = yylval;
58612f1d 937]b4_location_if([ *++yylsp = yylloc;])[
10fa2066 938
71da9eea
AD
939 /* Count tokens shifted since error; after three, turn off error
940 status. */
941 if (yyerrstatus)
942 yyerrstatus--;
10fa2066
RS
943
944 yystate = yyn;
945 goto yynewstate;
946
10fa2066 947
71da9eea
AD
948/*-----------------------------------------------------------.
949| yydefault -- do the default action for the current state. |
950`-----------------------------------------------------------*/
951yydefault:
10fa2066
RS
952 yyn = yydefact[yystate];
953 if (yyn == 0)
954 goto yyerrlab;
71da9eea 955 goto yyreduce;
10fa2066 956
71da9eea
AD
957
958/*-----------------------------.
959| yyreduce -- Do a reduction. |
960`-----------------------------*/
10fa2066 961yyreduce:
71da9eea 962 /* yyn is the number of a rule to reduce with. */
10fa2066 963 yylen = yyr2[yyn];
da9abf43
AD
964
965 /* If YYLEN is nonzero, implement the default value of the action:
573c1d9f 966 `$$ = $1'.
da9abf43
AD
967
968 Otherwise, the following line sets YYVAL to the semantic value of
969 the lookahead token. This behavior is undocumented and Bison
970 users should not rely upon it. Assigning to YYVAL
971 unconditionally makes the parser a bit smaller, and it avoids a
972 GCC warning that YYVAL may be used uninitialized. */
973 yyval = yyvsp[1-yylen];
3abcd459 974
58612f1d
AD
975]b4_location_if(
976[ /* Default location. */
977 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);])[
10fa2066 978
0de741ca
AD
979#if YYDEBUG
980 /* We have to keep this `#if YYDEBUG', since we use variables which
981 are defined only if `YYDEBUG' is set. */
17da6427 982 if (yydebug)
10fa2066 983 {
7093d0f5 984 int yyi;
10fa2066 985
7ea5e977 986 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
3db472b9 987 yyn - 1, yyrline[yyn]);
10fa2066
RS
988
989 /* Print the symbols being reduced, and their result. */
3db472b9 990 for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
7ea5e977
AD
991 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
992 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
10fa2066
RS
993 }
994#endif
a8289c62 995 switch (yyn)
be2a1a68
AD
996 ]{
997 b4_actions
a8289c62 998 }
897668ee 999
be2a1a68 1000/* Line __line__ of __file__. */
06446ccf 1001#line __oline__ "__ofile__"
10fa2066 1002\f
be2a1a68 1003[ yyvsp -= yylen;
10fa2066 1004 yyssp -= yylen;
58612f1d 1005]b4_location_if([ yylsp -= yylen;])[
10fa2066 1006
5a35a6cb 1007#if YYDEBUG
17da6427 1008 if (yydebug)
10fa2066 1009 {
7093d0f5 1010 short *yyssp1 = yyss - 1;
7ea5e977 1011 YYFPRINTF (stderr, "state stack now");
7093d0f5 1012 while (yyssp1 != yyssp)
7ea5e977
AD
1013 YYFPRINTF (stderr, " %d", *++yyssp1);
1014 YYFPRINTF (stderr, "\n");
10fa2066 1015 }
5a35a6cb 1016#endif
10fa2066
RS
1017
1018 *++yyvsp = yyval;
58612f1d 1019]b4_location_if([ *++yylsp = yyloc;])[
10fa2066 1020
41aca2e0
AD
1021 /* Now `shift' the result of the reduction. Determine what state
1022 that goes to, based on the state we popped back to and the rule
1023 number reduced by. */
10fa2066
RS
1024
1025 yyn = yyr1[yyn];
1026
7742ddeb 1027 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
10fa2066
RS
1028 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1029 yystate = yytable[yystate];
1030 else
7742ddeb 1031 yystate = yydefgoto[yyn - YYNTOKENS];
10fa2066
RS
1032
1033 goto yynewstate;
1034
10fa2066 1035
71da9eea
AD
1036/*------------------------------------.
1037| yyerrlab -- here on detecting error |
1038`------------------------------------*/
1039yyerrlab:
1040 /* If not already recovering from an error, report this error. */
1041 if (!yyerrstatus)
10fa2066 1042 {
17da6427 1043 ++yynerrs;
10fa2066 1044
8850be4b 1045#if YYERROR_VERBOSE
10fa2066
RS
1046 yyn = yypact[yystate];
1047
1048 if (yyn > YYFLAG && yyn < YYLAST)
1049 {
7093d0f5
AD
1050 YYSIZE_T yysize = 0;
1051 char *yymsg;
1052 int yyx, yycount;
10fa2066 1053
7093d0f5
AD
1054 yycount = 0;
1055 /* Start YYX at -YYN if negative to avoid negative indexes in
f0473484 1056 YYCHECK. */
7093d0f5
AD
1057 for (yyx = yyn < 0 ? -yyn : 0;
1058 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
1059 if (yycheck[yyx + yyn] == yyx)
1060 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
1061 yysize += yystrlen ("parse error, unexpected ") + 1;
1062 yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
1063 yymsg = (char *) YYSTACK_ALLOC (yysize);
1064 if (yymsg != 0)
10fa2066 1065 {
7093d0f5
AD
1066 char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
1067 yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
10fa2066 1068
7093d0f5 1069 if (yycount < 5)
10fa2066 1070 {
7093d0f5
AD
1071 yycount = 0;
1072 for (yyx = yyn < 0 ? -yyn : 0;
1073 yyx < (int) (sizeof (yytname) / sizeof (char *));
1074 yyx++)
1075 if (yycheck[yyx + yyn] == yyx)
10fa2066 1076 {
7093d0f5
AD
1077 const char *yyq = ! yycount ? ", expecting " : " or ";
1078 yyp = yystpcpy (yyp, yyq);
1079 yyp = yystpcpy (yyp, yytname[yyx]);
1080 yycount++;
10fa2066
RS
1081 }
1082 }
7093d0f5
AD
1083 yyerror (yymsg);
1084 YYSTACK_FREE (yymsg);
1085 }
1086 else
1087 yyerror ("parse error; also virtual memory exhausted");
a8289c62 1088 }
10fa2066 1089 else
b7575ffe 1090#endif /* YYERROR_VERBOSE */
17da6427 1091 yyerror ("parse error");
10fa2066 1092 }
10fa2066 1093 goto yyerrlab1;
10fa2066 1094
71da9eea 1095
e8cb70b9
PB
1096/*----------------------------------------------------.
1097| yyerrlab1 -- error raised explicitly by an action. |
1098`----------------------------------------------------*/
71da9eea 1099yyerrlab1:
10fa2066
RS
1100 if (yyerrstatus == 3)
1101 {
71da9eea
AD
1102 /* If just tried and failed to reuse lookahead token after an
1103 error, discard it. */
10fa2066 1104
e8cb70b9 1105 /* Return failure if at end of input. */
17da6427 1106 if (yychar == YYEOF)
5719c109
AD
1107 {
1108 /* Pop the error token. */
1109 YYPOPSTACK;
1110 /* Pop the rest of the stack. */
1111 while (yyssp > yyss)
1112 {
253862fd
AD
1113 YYDPRINTF ((stderr, "Error: popping "));
1114 YYDSYMPRINT ((stderr,
1115 yystos[*yyssp],
1116 *yyvsp]b4_location_if([, *yylsp])[));
1117 YYDPRINTF ((stderr, "\n"));
93b68a0e 1118 yydestructor (yystos[*yyssp], *yyvsp]b4_location_if([, *yylsp])[);
5719c109
AD
1119 YYPOPSTACK;
1120 }
1121 YYABORT;
1122 }
1123
7ea5e977 1124 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
17da6427 1125 yychar, yytname[yychar1]));
93b68a0e 1126 yydestructor (yychar1, yylval]b4_location_if([, yylloc])[);
17da6427 1127 yychar = YYEMPTY;
10fa2066
RS
1128 }
1129
71da9eea
AD
1130 /* Else will try to reuse lookahead token after shifting the error
1131 token. */
10fa2066 1132
cf44a9ae 1133 yyerrstatus = 3; /* Each real token shifted decrements this. */
10fa2066 1134
660bc8dd
PE
1135 for (;;)
1136 {
1137 yyn = yypact[yystate];
1138 if (yyn != YYFLAG)
1139 {
1140 yyn += YYTERROR;
1141 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1142 {
1143 yyn = yytable[yyn];
1144 if (0 < yyn)
1145 break;
1146 }
1147 }
10fa2066 1148
660bc8dd
PE
1149 /* Pop the current state because it cannot handle the error token. */
1150 if (yyssp == yyss)
1151 YYABORT;
5504898e 1152
253862fd
AD
1153 YYDPRINTF ((stderr, "Error: popping "));
1154 YYDSYMPRINT ((stderr,
1155 yystos[*yyssp], *yyvsp]b4_location_if([, *yylsp])[));
1156 YYDPRINTF ((stderr, "\n"));
5504898e 1157
93b68a0e 1158 yydestructor (yystos[yystate], *yyvsp]b4_location_if([, *yylsp])[);
660bc8dd
PE
1159 yyvsp--;
1160 yystate = *--yyssp;
58612f1d 1161]b4_location_if([ yylsp--;])[
10fa2066 1162
5a35a6cb 1163#if YYDEBUG
660bc8dd
PE
1164 if (yydebug)
1165 {
1166 short *yyssp1 = yyss - 1;
1167 YYFPRINTF (stderr, "Error: state stack now");
1168 while (yyssp1 != yyssp)
1169 YYFPRINTF (stderr, " %d", *++yyssp1);
1170 YYFPRINTF (stderr, "\n");
1171 }
5a35a6cb 1172#endif
10fa2066 1173 }
10fa2066
RS
1174
1175 if (yyn == YYFINAL)
1176 YYACCEPT;
1177
7ea5e977 1178 YYDPRINTF ((stderr, "Shifting error token, "));
10fa2066 1179
17da6427 1180 *++yyvsp = yylval;
58612f1d 1181]b4_location_if([ *++yylsp = yylloc;])[
10fa2066
RS
1182
1183 yystate = yyn;
1184 goto yynewstate;
70ddf897 1185
71da9eea
AD
1186
1187/*-------------------------------------.
1188| yyacceptlab -- YYACCEPT comes here. |
1189`-------------------------------------*/
1190yyacceptlab:
600f9b0c
PE
1191 yyresult = 0;
1192 goto yyreturn;
71da9eea
AD
1193
1194/*-----------------------------------.
1195| yyabortlab -- YYABORT comes here. |
1196`-----------------------------------*/
1197yyabortlab:
600f9b0c
PE
1198 yyresult = 1;
1199 goto yyreturn;
1200
0bfb02ff 1201#ifndef yyoverflow
ca98bf57
AD
1202/*----------------------------------------------.
1203| yyoverflowlab -- parser overflow comes here. |
1204`----------------------------------------------*/
600f9b0c
PE
1205yyoverflowlab:
1206 yyerror ("parser stack overflow");
1207 yyresult = 2;
1208 /* Fall through. */
0bfb02ff 1209#endif
600f9b0c
PE
1210
1211yyreturn:
1212#ifndef yyoverflow
1213 if (yyss != yyssa)
1214 YYSTACK_FREE (yyss);
70ddf897 1215#endif
600f9b0c 1216 return yyresult;
be2a1a68
AD
1217]}
1218
24c0aad7 1219
366eea36
AD
1220/*-----------------------------------------------.
1221| Release the memory associated to this symbol. |
1222`-----------------------------------------------*/
24c0aad7 1223
9280d3ef 1224m4_divert_push([KILL])# M4 code.
9280d3ef
AD
1225# b4_symbol_destructor(SYMBOL-NUMBER, DESTRUCTOR, TYPE-NAME)
1226# ----------------------------------------------------------
1227m4_define([b4_symbol_destructor],
93b68a0e
AD
1228[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
1229m4_pushdef([b4_at_dollar], [yylocation])dnl
24c0aad7
AD
1230 case $4: /* $3 */
1231#line $2 "$1"
f25bfb75 1232 $5;
24c0aad7 1233#line __oline__ "__ofile__"
9280d3ef 1234 break;
93b68a0e 1235m4_popdef([b4_at_dollar])dnl
9280d3ef
AD
1236m4_popdef([b4_dollar_dollar])])
1237
1238m4_divert_pop([KILL])dnl# End of M4 code.
1239static void
93b68a0e
AD
1240yydestructor (int yytype,
1241 YYSTYPE yyvalue[]b4_location_if([, YYLTYPE yylocation]))
9280d3ef 1242{
93b68a0e 1243 switch (yytype)
9280d3ef
AD
1244 {
1245m4_map([b4_symbol_destructor], m4_defn([b4_symbol_destructors]))dnl
1246 default:
9280d3ef
AD
1247 break;
1248 }
1249}
1250
366eea36
AD
1251
1252#if YYDEBUG
e3170060
AD
1253/*-----------------------------.
1254| Print this symbol on YYOUT. |
1255`-----------------------------*/
366eea36
AD
1256
1257m4_divert_push([KILL])# M4 code.
1258# b4_symbol_printer(SYMBOL-NUMBER, PRINTER, TYPE-NAME)
1259# ----------------------------------------------------------
1260m4_define([b4_symbol_printer],
1261[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
1262m4_pushdef([b4_at_dollar], [yylocation])dnl
1263 case $4: /* $3 */
1264#line $2 "$1"
1265 $5;
1266#line __oline__ "__ofile__"
1267 break;
1268m4_popdef([b4_at_dollar])dnl
1269m4_popdef([b4_dollar_dollar])])
1270
1271m4_divert_pop([KILL])dnl# End of M4 code.
1272static void
e3170060 1273yysymprint (FILE* yyout, int yytype,
366eea36
AD
1274 YYSTYPE yyvalue[]b4_location_if([, YYLTYPE yylocation]))
1275{
1276 if (yytype < YYNTOKENS)
e3170060 1277 YYFPRINTF (yyout, "token %s (", yytname[[yytype]]);
366eea36 1278 else
e3170060 1279 YYFPRINTF (yyout, "nterm %s (", yytname[[yytype]]);
366eea36 1280# ifdef YYPRINT
e3170060 1281 YYPRINT (yyout, yytype, yyvalue);
366eea36
AD
1282# else
1283 switch (yytype)
1284 {
1285m4_map([b4_symbol_printer], m4_defn([b4_symbol_printers]))dnl
1286 default:
1287 break;
1288 }
1289# endif /* !defined YYPRINT. */
e3170060 1290 YYFPRINTF (yyout, ")");
366eea36
AD
1291}
1292#endif /* YYDEBUG. */
1293
be2a1a68
AD
1294b4_epilogue
1295m4_if(b4_defines_flag, 0, [],
1296[#output "b4_output_header_name"
1297#ifndef b4_header_guard
1298# define b4_header_guard
1299
0d8bed56 1300b4_token_defines(b4_tokens)
be2a1a68
AD
1301
1302#ifndef YYSTYPE
e9955c83 1303m4_ifdef([b4_stype],
642cb8f8 1304[#line b4_stype_line "b4_filename"
e96c9728
AD
1305typedef union b4_stype yystype;
1306/* Line __line__ of __file__. */
1307#line __oline__ "__ofile__"],
e9955c83 1308[typedef int yystype;])
be2a1a68
AD
1309# define YYSTYPE yystype
1310#endif
1311
74310291 1312b4_pure_if([],
be2a1a68
AD
1313[extern YYSTYPE b4_prefix[]lval;])
1314
58612f1d 1315b4_location_if(
be2a1a68
AD
1316[#ifndef YYLTYPE
1317typedef struct yyltype
1318{
1319 int first_line;
1320 int first_column;
1321 int last_line;
1322 int last_column;
1323} yyltype;
1324# define YYLTYPE yyltype
1325#endif
ff48177d 1326
be2a1a68
AD
1327m4_if(b4_pure, [0],
1328[extern YYLTYPE b4_prefix[]lloc;])
1329])
1330#endif /* not b4_header_guard */
1331])