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