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