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