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