]> git.saurik.com Git - bison.git/blame - data/yacc.c
* bootstrap: Get runtime translations into runtime-po.
[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
f7ab6a50
PE
415#ifndef YYI18N
416# if YYENABLE_NLS
417# if ENABLE_NLS
418# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
419# define YYI18N(msgid) dgettext ("bison-runtime", msgid)
420# endif
421# endif
422# ifndef YYI18N
423# define YYI18N(msgid) msgid
424# endif
1ce59070
PE
425#endif
426
c0ad8bf3 427# ifdef YYPRINT
c5e3e510 428/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
769b430f 429 token YYLEX-NUM. */
c5e3e510 430static const ]b4_int_type_for([b4_toknum])[ yytoknum[] =
a8289c62 431{
c5e3e510 432 ]b4_toknum[
a8289c62 433};
c0ad8bf3 434# endif
a8289c62 435
c5e3e510
AD
436/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
437static const ]b4_int_type_for([b4_r1])[ yyr1[] =
a8289c62 438{
c5e3e510 439 ]b4_r1[
a8289c62
RA
440};
441
c5e3e510
AD
442/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
443static const ]b4_int_type_for([b4_r2])[ yyr2[] =
a8289c62 444{
c5e3e510 445 ]b4_r2[
a8289c62
RA
446};
447
c5e3e510 448/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
5504898e
AD
449 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
450 means the default is an error. */
c5e3e510 451static const ]b4_int_type_for([b4_defact])[ yydefact[] =
a8289c62 452{
c5e3e510 453 ]b4_defact[
a8289c62
RA
454};
455
c5e3e510
AD
456/* YYDEFGOTO[NTERM-NUM]. */
457static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] =
a8289c62 458{
c5e3e510 459 ]b4_defgoto[
a8289c62
RA
460};
461
c5e3e510 462/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
7742ddeb 463 STATE-NUM. */
c5e3e510
AD
464#define YYPACT_NINF ]b4_pact_ninf[
465static const ]b4_int_type_for([b4_pact])[ yypact[] =
a8289c62 466{
c5e3e510 467 ]b4_pact[
a8289c62
RA
468};
469
c5e3e510
AD
470/* YYPGOTO[NTERM-NUM]. */
471static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] =
a8289c62 472{
c5e3e510 473 ]b4_pgoto[
a8289c62
RA
474};
475
c5e3e510 476/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
7742ddeb 477 positive, shift that token. If negative, reduce the rule which
f50adbbd 478 number is the opposite. If zero, do what YYDEFACT says.
6e649e65 479 If YYTABLE_NINF, syntax error. */
c5e3e510
AD
480#define YYTABLE_NINF ]b4_table_ninf[
481static const ]b4_int_type_for([b4_table])[ yytable[] =
a8289c62 482{
c5e3e510 483 ]b4_table[
a8289c62
RA
484};
485
c5e3e510 486static const ]b4_int_type_for([b4_check])[ yycheck[] =
a8289c62 487{
c5e3e510 488 ]b4_check[
a8289c62
RA
489};
490
c5e3e510 491/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
5504898e 492 symbol of state STATE-NUM. */
c5e3e510 493static const ]b4_int_type_for([b4_stos])[ yystos[] =
5504898e 494{
c5e3e510 495 ]b4_stos[
5504898e 496};
7093d0f5 497
10fa2066 498#define yyerrok (yyerrstatus = 0)
a20713a4
PE
499#define yyclearin (yychar = YYEMPTY)
500#define YYEMPTY (-2)
10fa2066 501#define YYEOF 0
a8289c62 502
70ddf897 503#define YYACCEPT goto yyacceptlab
a8289c62 504#define YYABORT goto yyabortlab
a6b89bb2 505#define YYERROR goto yyerrorlab
8a3eb3c8 506
a8289c62 507
71da9eea
AD
508/* Like YYERROR except do call yyerror. This remains here temporarily
509 to ease the transition to the new meaning of YYERROR, for GCC.
10fa2066 510 Once GCC version 2 has supplanted version 1, this can go. */
a8289c62 511
10fa2066 512#define YYFAIL goto yyerrlab
a8289c62 513
10fa2066 514#define YYRECOVERING() (!!yyerrstatus)
a8289c62 515
69b4e0c5 516#define YYBACKUP(Token, Value) \
10fa2066 517do \
a20713a4 518 if (yychar == YYEMPTY && yylen == 1) \
71da9eea 519 { \
17da6427 520 yychar = (Token); \
7742ddeb 521 yylval = (Value); \
b0400cc6 522 yytoken = YYTRANSLATE (yychar); \
10fa2066
RS
523 YYPOPSTACK; \
524 goto yybackup; \
525 } \
526 else \
71da9eea 527 { \
f7ab6a50 528 yyerror (]b4_yyerror_args[YYI18N ("syntax error: cannot back up")); \
71da9eea
AD
529 YYERROR; \
530 } \
10fa2066
RS
531while (0)
532
3fc16193 533
10fa2066
RS
534#define YYTERROR 1
535#define YYERRCODE 256
536
3fc16193 537
b4a20338
AD
538/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
539 If N is 0, then set CURRENT to the empty location which ends
540 the previous symbol: RHS[0] (always defined). */
3abcd459 541
24e0cbd0 542#define YYRHSLOC(Rhs, K) ((Rhs)[K])
3abcd459 543#ifndef YYLLOC_DEFAULT
24e0cbd0
PE
544# define YYLLOC_DEFAULT(Current, Rhs, N) \
545 do \
546 if (N) \
547 { \
9bec482e
PE
548 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
549 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
550 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
551 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
24e0cbd0
PE
552 } \
553 else \
554 { \
555 (Current).first_line = (Current).last_line = \
9bec482e 556 YYRHSLOC (Rhs, 0).last_line; \
24e0cbd0 557 (Current).first_column = (Current).last_column = \
9bec482e 558 YYRHSLOC (Rhs, 0).last_column; \
24e0cbd0
PE
559 } \
560 while (0)
b8458aa5
AD
561#endif
562
3fc16193
AD
563
564/* YY_LOCATION_PRINT -- Print the location on the stream.
565 This macro was not mandated originally: define only if we know
566 we won't break user code: when these are the locations we know. */
567
3fc16193 568#ifndef YY_LOCATION_PRINT
b8458aa5
AD
569# if YYLTYPE_IS_TRIVIAL
570# define YY_LOCATION_PRINT(File, Loc) \
571 fprintf (File, "%d.%d-%d.%d", \
572 (Loc).first_line, (Loc).first_column, \
573 (Loc).last_line, (Loc).last_column)
0dcca5c2
AD
574# else
575# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
b8458aa5 576# endif
3abcd459
AD
577#endif
578
3fc16193 579
3abcd459 580/* YYLEX -- calling `yylex' with the right arguments. */
553e2b22 581
ae7453f2 582#ifdef YYLEX_PARAM
9c1e26bd 583# define YYLEX yylex (]b4_pure_if([&yylval[]b4_location_if([, &yylloc]), ])[YYLEX_PARAM)
74310291 584#else
9c1e26bd 585# define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
ae7453f2 586#endif
553e2b22 587
5a35a6cb 588/* Enable debugging if requested. */
0d533154 589#if YYDEBUG
b7575ffe
PE
590
591# ifndef YYFPRINTF
45119af1
PE
592# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
593# define YYFPRINTF fprintf
b7575ffe
PE
594# endif
595
5a35a6cb
AD
596# define YYDPRINTF(Args) \
597do { \
17da6427 598 if (yydebug) \
b7575ffe 599 YYFPRINTF Args; \
5a35a6cb 600} while (0)
c5e3e510 601
284acc8b 602# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
9c1e26bd
AD
603do { \
604 if (yydebug) \
605 { \
606 YYFPRINTF (stderr, "%s ", Title); \
607 yysymprint (stderr, \
284acc8b 608 Type, Value]b4_location_if([, Location])[); \
9c1e26bd
AD
609 YYFPRINTF (stderr, "\n"); \
610 } \
611} while (0)
612
b0937b22
AD
613/*------------------------------------------------------------------.
614| yy_stack_print -- Print the state stack from its BOTTOM up to its |
5348bfbe 615| TOP (included). |
b0937b22
AD
616`------------------------------------------------------------------*/
617
618]b4_c_function_def([yy_stack_print], [static void],
779e7ceb
PE
619 [[short int *bottom], [bottom]],
620 [[short int *top], [top]])[
b0937b22 621{
f7ab6a50 622 YYFPRINTF (stderr, YYI18N ("Stack now"));
b0937b22
AD
623 for (/* Nothing. */; bottom <= top; ++bottom)
624 YYFPRINTF (stderr, " %d", *bottom);
625 YYFPRINTF (stderr, "\n");
626}
627
628# define YY_STACK_PRINT(Bottom, Top) \
629do { \
630 if (yydebug) \
631 yy_stack_print ((Bottom), (Top)); \
632} while (0)
633
634
635/*------------------------------------------------.
636| Report that the YYRULE is going to be reduced. |
637`------------------------------------------------*/
638
639]b4_c_function_def([yy_reduce_print], [static void],
640 [[int yyrule], [yyrule]])[
641{
642 int yyi;
52f32190 643 unsigned int yylno = yyrline[yyrule];
f7ab6a50 644 YYFPRINTF (stderr, YYI18N ("Reducing stack by rule %d (line %u), "),
52f32190 645 yyrule - 1, yylno);
b0937b22
AD
646 /* Print the symbols being reduced, and their result. */
647 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
648 YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
649 YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
650}
651
652# define YY_REDUCE_PRINT(Rule) \
653do { \
654 if (yydebug) \
655 yy_reduce_print (Rule); \
656} while (0)
657
cf44a9ae
PE
658/* Nonzero means print parse trace. It is left uninitialized so that
659 multiple parsers can coexist. */
17da6427 660int yydebug;
5a35a6cb
AD
661#else /* !YYDEBUG */
662# define YYDPRINTF(Args)
284acc8b 663# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
b0937b22
AD
664# define YY_STACK_PRINT(Bottom, Top)
665# define YY_REDUCE_PRINT(Rule)
5a35a6cb
AD
666#endif /* !YYDEBUG */
667
b0937b22 668
5a35a6cb 669/* YYINITDEPTH -- initial size of the parser's stacks. */
10fa2066 670#ifndef YYINITDEPTH
9c1e26bd 671# define YYINITDEPTH ]b4_stack_depth_init[
10fa2066
RS
672#endif
673
5a35a6cb 674/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
600f9b0c
PE
675 if the built-in stack extension method is used).
676
677 Do not make this value too large; the results are undefined if
506ffb1f 678 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
600f9b0c
PE
679 evaluated with infinite-precision integer arithmetic. */
680
10fa2066 681#ifndef YYMAXDEPTH
9c1e26bd 682# define YYMAXDEPTH ]b4_stack_depth_max[
10fa2066 683#endif
a8289c62 684
10fa2066 685\f
a8289c62 686
7093d0f5
AD
687#if YYERROR_VERBOSE
688
689# ifndef yystrlen
690# if defined (__GLIBC__) && defined (_STRING_H)
691# define yystrlen strlen
692# else
693/* Return the length of YYSTR. */
694static YYSIZE_T
695# if defined (__STDC__) || defined (__cplusplus)
696yystrlen (const char *yystr)
697# else
698yystrlen (yystr)
699 const char *yystr;
700# endif
701{
cb530ce9 702 const char *yys = yystr;
7093d0f5
AD
703
704 while (*yys++ != '\0')
705 continue;
706
707 return yys - yystr - 1;
708}
709# endif
710# endif
711
712# ifndef yystpcpy
713# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
714# define yystpcpy stpcpy
715# else
716/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
717 YYDEST. */
718static char *
f11966ff
PE
719# if defined (__STDC__) || defined (__cplusplus)
720yystpcpy (char *yydest, const char *yysrc)
721# else
7093d0f5
AD
722yystpcpy (yydest, yysrc)
723 char *yydest;
724 const char *yysrc;
7093d0f5
AD
725# endif
726{
cb530ce9
PE
727 char *yyd = yydest;
728 const char *yys = yysrc;
7093d0f5
AD
729
730 while ((*yyd++ = *yys++) != '\0')
731 continue;
732
733 return yyd - 1;
734}
735# endif
736# endif
737
738#endif /* !YYERROR_VERBOSE */
739
10fa2066 740\f
a8289c62 741
b8df3223 742#if YYDEBUG
9c1e26bd 743]b4_yysymprint_generate([b4_c_function_def])[
c5e3e510 744#endif /* ! YYDEBUG */
9c1e26bd 745]b4_yydestruct_generate([b4_c_function_def])
4a2a22f4
AD
746\f
747
0245f82d 748/* Prevent warnings from -Wmissing-prototypes. */
4a2a22f4
AD
749
750#ifdef YYPARSE_PARAM
751# if defined (__STDC__) || defined (__cplusplus)
0245f82d 752int yyparse (void *YYPARSE_PARAM);
4a2a22f4 753# else
0245f82d 754int yyparse ();
4a2a22f4 755# endif
0245f82d
AD
756#else /* ! YYPARSE_PARAM */
757b4_c_function_decl([yyparse], [int], b4_parse_param)
c5e3e510 758#endif /* ! YYPARSE_PARAM */
1b181651 759
0245f82d 760
74310291
AD
761m4_divert_push([KILL])# ======================== M4 code.
762# b4_declare_parser_variables
763# ---------------------------
764# Declare the variables that are global, or local to YYPARSE if
0245f82d 765# pure-parser.
74310291 766m4_define([b4_declare_parser_variables],
8dd162d3 767[/* The look-ahead symbol. */
74310291
AD
768int yychar;
769
8dd162d3 770/* The semantic value of the look-ahead symbol. */
74310291
AD
771YYSTYPE yylval;
772
6e649e65 773/* Number of syntax errors so far. */
74310291 774int yynerrs;b4_location_if([
8dd162d3 775/* Location data for the look-ahead symbol. */
58612f1d 776YYLTYPE yylloc;])
74310291
AD
777])
778m4_divert_pop([KILL])dnl# ====================== End of M4 code.
58612f1d 779
74310291
AD
780b4_pure_if([],
781 [b4_declare_parser_variables])
a35f64ea 782
0245f82d
AD
783
784/*----------.
785| yyparse. |
786`----------*/
787
788#ifdef YYPARSE_PARAM
789# if defined (__STDC__) || defined (__cplusplus)
790int yyparse (void *YYPARSE_PARAM)
791# else
792int yyparse (YYPARSE_PARAM)
793 void *YYPARSE_PARAM;
794# endif
795#else /* ! YYPARSE_PARAM */
796b4_c_function_def([yyparse], [int], b4_parse_param)
797#endif
be2a1a68 798{[
74310291 799 ]b4_pure_if([b4_declare_parser_variables])[
cb530ce9
PE
800 int yystate;
801 int yyn;
600f9b0c 802 int yyresult;
b07b484a
AD
803 /* Number of tokens to shift before error messages enabled. */
804 int yyerrstatus;
8dd162d3 805 /* Look-ahead token as an internal (translated) token number. */
b0400cc6 806 int yytoken = 0;
10fa2066 807
bb10be54
AD
808 /* Three stacks and their tools:
809 `yyss': related to states,
e9e4c321 810 `yyvs': related to semantic values,
bb10be54
AD
811 `yyls': related to locations.
812
813 Refer to the stacks thru separate pointers, to allow yyoverflow
814 to reallocate them elsewhere. */
815
e8cb70b9 816 /* The state stack. */
779e7ceb
PE
817 short int yyssa[YYINITDEPTH];
818 short int *yyss = yyssa;
cb530ce9 819 short int *yyssp;
bb10be54 820
b07b484a
AD
821 /* The semantic value stack. */
822 YYSTYPE yyvsa[YYINITDEPTH];
b07b484a 823 YYSTYPE *yyvs = yyvsa;
cb530ce9 824 YYSTYPE *yyvsp;
10fa2066 825
58612f1d
AD
826]b4_location_if(
827[[ /* The location stack. */
b07b484a 828 YYLTYPE yylsa[YYINITDEPTH];
10fa2066 829 YYLTYPE *yyls = yylsa;
d42f69cd 830 YYLTYPE *yylsp;
3fc16193
AD
831 /* The locations where the error started and ended. */
832 YYLTYPE yyerror_range[2];]])[
10fa2066 833
58612f1d 834#define YYPOPSTACK (yyvsp--, yyssp--]b4_location_if([, yylsp--])[)
10fa2066 835
7093d0f5 836 YYSIZE_T yystacksize = YYINITDEPTH;
10fa2066 837
6666f98f
AD
838 /* The variables used to return semantic value and location from the
839 action routines. */
bb10be54 840 YYSTYPE yyval;
58612f1d 841]b4_location_if([ YYLTYPE yyloc;])[
10fa2066 842
6666f98f 843 /* When reducing, the number of symbols on the RHS of the reduced
e8cb70b9 844 rule. */
10fa2066
RS
845 int yylen;
846
7ea5e977 847 YYDPRINTF ((stderr, "Starting parse\n"));
10fa2066
RS
848
849 yystate = 0;
850 yyerrstatus = 0;
17da6427 851 yynerrs = 0;
a20713a4 852 yychar = YYEMPTY; /* Cause a token to be read. */
10fa2066
RS
853
854 /* Initialize stack pointers.
855 Waste one element of value and location stack
856 so that they stay on the same level as the state stack.
857 The wasted elements are never initialized. */
858
cbd89906 859 yyssp = yyss;
10fa2066 860 yyvsp = yyvs;
b8458aa5
AD
861]b4_location_if([[ yylsp = yyls;
862#if YYLTYPE_IS_TRIVIAL
863 /* Initialize the default location before parsing starts. */
451364ed
AD
864 yylloc.first_line = yylloc.last_line = 1;
865 yylloc.first_column = yylloc.last_column = 0;
b8458aa5
AD
866#endif
867]])
868m4_ifdef([b4_initial_action], [
407d4a75
PE
869m4_pushdef([b4_at_dollar], [m4_define([b4_at_dollar_used])yylloc])dnl
870m4_pushdef([b4_dollar_dollar], [m4_define([b4_dollar_dollar_used])yylval])dnl
cd3684cf 871 /* User initialization code. */
baf073c6 872b4_initial_action
cd3684cf
AD
873m4_popdef([b4_dollar_dollar])dnl
874m4_popdef([b4_at_dollar])dnl
875/* Line __line__ of yacc.c. */
407d4a75
PE
876b4_syncline([@oline@], [@ofile@])
877])dnl
878m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval;
879]])dnl
880m4_ifdef([b4_at_dollar_used], [[ yylsp[0] = yylloc;
881]])dnl
882[ goto yysetstate;
10fa2066 883
71da9eea
AD
884/*------------------------------------------------------------.
885| yynewstate -- Push a new state, which is found in yystate. |
886`------------------------------------------------------------*/
342b8b6e 887 yynewstate:
71da9eea
AD
888 /* In all cases, when you get here, the value and location stacks
889 have just been pushed. so pushing a state here evens the stacks.
890 */
cbd89906
PE
891 yyssp++;
892
342b8b6e 893 yysetstate:
cbd89906 894 *yyssp = yystate;
10fa2066 895
39912f52 896 if (yyss + yystacksize - 1 <= yyssp)
10fa2066 897 {
10fa2066 898 /* Get the current used size of the three stacks, in elements. */
7093d0f5 899 YYSIZE_T yysize = yyssp - yyss + 1;
10fa2066
RS
900
901#ifdef yyoverflow
3d76b07d
AD
902 {
903 /* Give user a chance to reallocate the stack. Use copies of
904 these so that the &'s don't force the real ones into
905 memory. */
906 YYSTYPE *yyvs1 = yyvs;
779e7ceb 907 short int *yyss1 = yyss;
58612f1d 908]b4_location_if([ YYLTYPE *yyls1 = yyls;])[
3d76b07d
AD
909
910 /* Each stack pointer address is followed by the size of the
58612f1d
AD
911 data in use in that stack, in bytes. This used to be a
912 conditional around just the two extra args, but that might
913 be undefined if yyoverflow is a macro. */
f7ab6a50 914 yyoverflow (YYI18N ("parser stack overflow"),
7093d0f5
AD
915 &yyss1, yysize * sizeof (*yyssp),
916 &yyvs1, yysize * sizeof (*yyvsp),
58612f1d 917]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[
3d76b07d 918 &yystacksize);
58612f1d 919]b4_location_if([ yyls = yyls1;])[
3d76b07d
AD
920 yyss = yyss1;
921 yyvs = yyvs1;
922 }
10fa2066 923#else /* no yyoverflow */
cf44a9ae
PE
924# ifndef YYSTACK_RELOCATE
925 goto yyoverflowlab;
926# else
10fa2066 927 /* Extend the stack our own way. */
39912f52 928 if (YYMAXDEPTH <= yystacksize)
600f9b0c 929 goto yyoverflowlab;
10fa2066 930 yystacksize *= 2;
39912f52 931 if (YYMAXDEPTH < yystacksize)
10fa2066 932 yystacksize = YYMAXDEPTH;
e9e4c321 933
600f9b0c 934 {
779e7ceb 935 short int *yyss1 = yyss;
2729e106
PE
936 union yyalloc *yyptr =
937 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
600f9b0c
PE
938 if (! yyptr)
939 goto yyoverflowlab;
5b041382
PE
940 YYSTACK_RELOCATE (yyss);
941 YYSTACK_RELOCATE (yyvs);
58612f1d 942]b4_location_if([ YYSTACK_RELOCATE (yyls);])[
cf44a9ae 943# undef YYSTACK_RELOCATE
600f9b0c
PE
944 if (yyss1 != yyssa)
945 YYSTACK_FREE (yyss1);
946 }
cf44a9ae 947# endif
10fa2066
RS
948#endif /* no yyoverflow */
949
7093d0f5
AD
950 yyssp = yyss + yysize - 1;
951 yyvsp = yyvs + yysize - 1;
58612f1d 952]b4_location_if([ yylsp = yyls + yysize - 1;])[
10fa2066 953
f7ab6a50 954 YYDPRINTF ((stderr, YYI18N ("Stack size increased to %lu\n"),
600f9b0c 955 (unsigned long int) yystacksize));
10fa2066 956
39912f52 957 if (yyss + yystacksize - 1 <= yyssp)
10fa2066
RS
958 YYABORT;
959 }
960
f7ab6a50 961 YYDPRINTF ((stderr, YYI18N ("Entering state %d\n"), yystate));
10fa2066
RS
962
963 goto yybackup;
71da9eea 964
71da9eea
AD
965/*-----------.
966| yybackup. |
967`-----------*/
968yybackup:
10fa2066
RS
969
970/* Do appropriate processing given the current state. */
8dd162d3 971/* Read a look-ahead token if we need one and don't already have one. */
10fa2066
RS
972/* yyresume: */
973
8dd162d3 974 /* First try to decide what to do without reference to look-ahead token. */
10fa2066
RS
975
976 yyn = yypact[yystate];
12b0043a 977 if (yyn == YYPACT_NINF)
10fa2066
RS
978 goto yydefault;
979
8dd162d3 980 /* Not known => get a look-ahead token if don't already have one. */
10fa2066 981
8dd162d3 982 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
a20713a4 983 if (yychar == YYEMPTY)
10fa2066 984 {
f7ab6a50 985 YYDPRINTF ((stderr, YYI18N ("Reading a token: ")));
17da6427 986 yychar = YYLEX;
10fa2066
RS
987 }
988
a20713a4 989 if (yychar <= YYEOF)
10fa2066 990 {
a20713a4 991 yychar = yytoken = YYEOF;
f7ab6a50 992 YYDPRINTF ((stderr, YYI18N ("Now at end of input.\n")));
10fa2066
RS
993 }
994 else
995 {
a20713a4 996 yytoken = YYTRANSLATE (yychar);
f7ab6a50 997 YY_SYMBOL_PRINT (YYI18N ("Next token is"), yytoken, &yylval, &yylloc);
10fa2066
RS
998 }
999
b0400cc6 1000 /* If the proper action on seeing token YYTOKEN is to reduce or to
e5cfd9d8 1001 detect an error, take that action. */
b0400cc6
AD
1002 yyn += yytoken;
1003 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
e5cfd9d8
PE
1004 goto yydefault;
1005 yyn = yytable[yyn];
1006 if (yyn <= 0)
10fa2066 1007 {
e5cfd9d8
PE
1008 if (yyn == 0 || yyn == YYTABLE_NINF)
1009 goto yyerrlab;
10fa2066
RS
1010 yyn = -yyn;
1011 goto yyreduce;
1012 }
10fa2066
RS
1013
1014 if (yyn == YYFINAL)
1015 YYACCEPT;
1016
8dd162d3 1017 /* Shift the look-ahead token. */
f7ab6a50 1018 YY_SYMBOL_PRINT (YYI18N ("Shifting"), yytoken, &yylval, &yylloc);
10fa2066
RS
1019
1020 /* Discard the token being shifted unless it is eof. */
a20713a4
PE
1021 if (yychar != YYEOF)
1022 yychar = YYEMPTY;
10fa2066 1023
17da6427 1024 *++yyvsp = yylval;
58612f1d 1025]b4_location_if([ *++yylsp = yylloc;])[
10fa2066 1026
71da9eea
AD
1027 /* Count tokens shifted since error; after three, turn off error
1028 status. */
1029 if (yyerrstatus)
1030 yyerrstatus--;
10fa2066
RS
1031
1032 yystate = yyn;
1033 goto yynewstate;
1034
10fa2066 1035
71da9eea
AD
1036/*-----------------------------------------------------------.
1037| yydefault -- do the default action for the current state. |
1038`-----------------------------------------------------------*/
1039yydefault:
10fa2066
RS
1040 yyn = yydefact[yystate];
1041 if (yyn == 0)
1042 goto yyerrlab;
71da9eea 1043 goto yyreduce;
10fa2066 1044
71da9eea
AD
1045
1046/*-----------------------------.
1047| yyreduce -- Do a reduction. |
1048`-----------------------------*/
10fa2066 1049yyreduce:
71da9eea 1050 /* yyn is the number of a rule to reduce with. */
10fa2066 1051 yylen = yyr2[yyn];
da9abf43
AD
1052
1053 /* If YYLEN is nonzero, implement the default value of the action:
573c1d9f 1054 `$$ = $1'.
da9abf43 1055
accea6db
PE
1056 Otherwise, the following line sets YYVAL to garbage.
1057 This behavior is undocumented and Bison
da9abf43
AD
1058 users should not rely upon it. Assigning to YYVAL
1059 unconditionally makes the parser a bit smaller, and it avoids a
1060 GCC warning that YYVAL may be used uninitialized. */
1061 yyval = yyvsp[1-yylen];
3abcd459 1062
58612f1d 1063]b4_location_if(
b8458aa5 1064[[ /* Default location. */
b4a20338 1065 YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);]])[
b0937b22 1066 YY_REDUCE_PRINT (yyn);
a8289c62 1067 switch (yyn)
be2a1a68
AD
1068 ]{
1069 b4_actions
95f22ad2 1070 default: break;
a8289c62 1071 }
897668ee 1072
996b1c7e 1073/* Line __line__ of yacc.c. */
947427ae 1074b4_syncline([@oline@], [@ofile@])
10fa2066 1075\f
be2a1a68 1076[ yyvsp -= yylen;
10fa2066 1077 yyssp -= yylen;
58612f1d 1078]b4_location_if([ yylsp -= yylen;])[
10fa2066 1079
b0937b22 1080 YY_STACK_PRINT (yyss, yyssp);
10fa2066
RS
1081
1082 *++yyvsp = yyval;
58612f1d 1083]b4_location_if([ *++yylsp = yyloc;])[
10fa2066 1084
41aca2e0
AD
1085 /* Now `shift' the result of the reduction. Determine what state
1086 that goes to, based on the state we popped back to and the rule
1087 number reduced by. */
10fa2066
RS
1088
1089 yyn = yyr1[yyn];
1090
7742ddeb 1091 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
12b0043a 1092 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
10fa2066
RS
1093 yystate = yytable[yystate];
1094 else
7742ddeb 1095 yystate = yydefgoto[yyn - YYNTOKENS];
10fa2066
RS
1096
1097 goto yynewstate;
1098
10fa2066 1099
71da9eea
AD
1100/*------------------------------------.
1101| yyerrlab -- here on detecting error |
1102`------------------------------------*/
1103yyerrlab:
1104 /* If not already recovering from an error, report this error. */
1105 if (!yyerrstatus)
10fa2066 1106 {
17da6427 1107 ++yynerrs;
df5aed8c
PE
1108#if YYERROR_VERBOSE
1109 yyn = yypact[yystate];
1110
1111 if (YYPACT_NINF < yyn && yyn < YYLAST)
1112 {
df5aed8c 1113 int yytype = YYTRANSLATE (yychar);
506ffb1f
PE
1114 YYSIZE_T yysize0 = yystrlen (yytname[yytype]);
1115 YYSIZE_T yysize = yysize0;
1116 YYSIZE_T yysize1;
1117 int yysize_overflow = 0;
1118 char *yymsg = 0;
1119# define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1120 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3aa2f55d 1121 int yyx;
df5aed8c 1122
506ffb1f
PE
1123#if 0
1124 /* This is so xgettext sees the translatable formats that are
1125 constructed on the fly. */
f7ab6a50
PE
1126 YYI18N ("syntax error, unexpected %s");
1127 YYI18N ("syntax error, unexpected %s, expecting %s");
1128 YYI18N ("syntax error, unexpected %s, expecting %s or %s");
1129 YYI18N ("syntax error, unexpected %s, expecting %s or %s or %s");
1130 YYI18N ("syntax error, unexpected %s, expecting %s or %s or %s or %s");
506ffb1f
PE
1131#endif
1132 char *yyfmt;
1133 char const *yyf;
1134 static char const yyunexpected[] = "syntax error, unexpected %s";
1135 static char const yyexpecting[] = ", expecting %s";
1136 static char const yyor[] = " or %s";
1137 char yyformat[sizeof yyunexpected
1138 + sizeof yyexpecting - 1
1139 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1140 * (sizeof yyor - 1))];
1141 char const *yyprefix = yyexpecting;
1142
df5aed8c
PE
1143 /* Start YYX at -YYN if negative to avoid negative indexes in
1144 YYCHECK. */
c4749565 1145 int yyxbegin = yyn < 0 ? -yyn : 0;
3aa2f55d
PE
1146
1147 /* Stay within bounds of both yycheck and yytname. */
1148 int yychecklim = YYLAST - yyn;
c4749565 1149 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
506ffb1f
PE
1150 int yycount = 1;
1151
1152 yyarg[0] = yytname[yytype];
1153 yyfmt = yystpcpy (yyformat, yyunexpected);
3aa2f55d 1154
c4749565 1155 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
df5aed8c 1156 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3aa2f55d 1157 {
506ffb1f 1158 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3aa2f55d 1159 {
506ffb1f
PE
1160 yycount = 1;
1161 yysize = yysize0;
1162 yyformat[sizeof yyunexpected - 1] = '\0';
3aa2f55d 1163 break;
c4749565 1164 }
506ffb1f
PE
1165 yyarg[yycount++] = yytname[yyx];
1166 yysize1 = yysize + yystrlen (yytname[yyx]);
1167 yysize_overflow |= yysize1 < yysize;
1168 yysize = yysize1;
1169 yyfmt = yystpcpy (yyfmt, yyprefix);
1170 yyprefix = yyor;
3aa2f55d 1171 }
df5aed8c 1172
f7ab6a50 1173 yyf = YYI18N (yyformat);
681c331d 1174 yysize1 = yysize + yystrlen (yyf);
506ffb1f
PE
1175 yysize_overflow |= yysize1 < yysize;
1176 yysize = yysize1;
1177
1178 if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
1179 yymsg = (char *) YYSTACK_ALLOC (yysize);
1180 if (yymsg)
1181 {
1182 /* Avoid sprintf, as that infringes on the user's name space.
1183 Don't have undefined behavior even if the translation
1184 produced a string with the wrong number of "%s"s. */
1185 char *yyp = yymsg;
1186 int yyi = 0;
1187 while ((*yyp = *yyf))
df5aed8c 1188 {
506ffb1f
PE
1189 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1190 {
1191 yyp = yystpcpy (yyp, yyarg[yyi++]);
1192 yyf += 2;
1193 }
1194 else
1195 {
1196 yyp++;
1197 yyf++;
1198 }
df5aed8c 1199 }
93724f13 1200 yyerror (]b4_yyerror_args[yymsg);
df5aed8c
PE
1201 YYSTACK_FREE (yymsg);
1202 }
1203 else
f7ab6a50 1204 yyerror (]b4_yyerror_args[YYI18N ("syntax error; also memory exhausted"));
df5aed8c
PE
1205 }
1206 else
1207#endif /* YYERROR_VERBOSE */
f7ab6a50 1208 yyerror (]b4_yyerror_args[YYI18N ("syntax error"));
10fa2066 1209 }
71da9eea 1210
3fc16193 1211]b4_location_if([[ yyerror_range[0] = yylloc;]])[
d42f69cd 1212
10fa2066
RS
1213 if (yyerrstatus == 3)
1214 {
8dd162d3 1215 /* If just tried and failed to reuse look-ahead token after an
71da9eea 1216 error, discard it. */
10fa2066 1217
a6b89bb2 1218 if (yychar <= YYEOF)
5719c109 1219 {
a6b89bb2
PE
1220 /* If at end of input, pop the error token,
1221 then the rest of the stack, then return failure. */
1222 if (yychar == YYEOF)
80ce3401 1223 YYABORT;
5719c109 1224 }
a6b89bb2
PE
1225 else
1226 {
f7ab6a50 1227 yydestruct (YYI18N ("Error: discarding"), yytoken, &yylval]b4_location_if([, &yylloc])[);
a6b89bb2 1228 yychar = YYEMPTY;
a6b89bb2 1229 }
10fa2066
RS
1230 }
1231
8dd162d3 1232 /* Else will try to reuse look-ahead token after shifting the error
71da9eea 1233 token. */
8a3eb3c8 1234 goto yyerrlab1;
300a7966 1235
10fa2066 1236
a6b89bb2
PE
1237/*---------------------------------------------------.
1238| yyerrorlab -- error raised explicitly by YYERROR. |
1239`---------------------------------------------------*/
1240yyerrorlab:
1241
c7a65b99
PE
1242 /* Pacify compilers like GCC when the user code never invokes
1243 YYERROR and the label yyerrorlab therefore never appears in user
1244 code. */
a6b89bb2
PE
1245 if (0)
1246 goto yyerrorlab;
a6b89bb2 1247
3fc16193
AD
1248]b4_location_if([[ yyerror_range[0] = yylsp[1-yylen];
1249 yylsp -= yylen;
1250 ]])[yyvsp -= yylen;
a6b89bb2
PE
1251 yyssp -= yylen;
1252 yystate = *yyssp;
3fc16193 1253 goto yyerrlab1;
a6b89bb2
PE
1254
1255
1256/*-------------------------------------------------------------.
1257| yyerrlab1 -- common code for both syntax error and YYERROR. |
1258`-------------------------------------------------------------*/
300a7966 1259yyerrlab1:
cf44a9ae 1260 yyerrstatus = 3; /* Each real token shifted decrements this. */
10fa2066 1261
660bc8dd
PE
1262 for (;;)
1263 {
1264 yyn = yypact[yystate];
12b0043a 1265 if (yyn != YYPACT_NINF)
660bc8dd
PE
1266 {
1267 yyn += YYTERROR;
1268 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1269 {
1270 yyn = yytable[yyn];
1271 if (0 < yyn)
1272 break;
1273 }
1274 }
10fa2066 1275
660bc8dd
PE
1276 /* Pop the current state because it cannot handle the error token. */
1277 if (yyssp == yyss)
1278 YYABORT;
5504898e 1279
3fc16193 1280]b4_location_if([[ yyerror_range[0] = *yylsp;]])[
f7ab6a50 1281 yydestruct (YYI18N ("Error: popping"), yystos[yystate], yyvsp]b4_location_if([, yylsp])[);
a6b89bb2
PE
1282 YYPOPSTACK;
1283 yystate = *yyssp;
b0937b22 1284 YY_STACK_PRINT (yyss, yyssp);
10fa2066 1285 }
10fa2066
RS
1286
1287 if (yyn == YYFINAL)
1288 YYACCEPT;
1289
17da6427 1290 *++yyvsp = yylval;
3fc16193
AD
1291]b4_location_if([[
1292 yyerror_range[1] = yylloc;
1293 /* Using YYLLOC is tempting, but would change the location of
1294 the look-ahead. YYLOC is available though. */
1295 YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
1296 *++yylsp = yyloc;]])[
10fa2066 1297
1576d44d 1298 /* Shift the error token. */
f7ab6a50 1299 YY_SYMBOL_PRINT (YYI18N ("Shifting"), yystos[yyn], yyvsp, yylsp);
1576d44d 1300
10fa2066
RS
1301 yystate = yyn;
1302 goto yynewstate;
70ddf897 1303
71da9eea
AD
1304
1305/*-------------------------------------.
1306| yyacceptlab -- YYACCEPT comes here. |
1307`-------------------------------------*/
1308yyacceptlab:
600f9b0c
PE
1309 yyresult = 0;
1310 goto yyreturn;
71da9eea
AD
1311
1312/*-----------------------------------.
1313| yyabortlab -- YYABORT comes here. |
1314`-----------------------------------*/
1315yyabortlab:
600f9b0c
PE
1316 yyresult = 1;
1317 goto yyreturn;
1318
0bfb02ff 1319#ifndef yyoverflow
ca98bf57
AD
1320/*----------------------------------------------.
1321| yyoverflowlab -- parser overflow comes here. |
1322`----------------------------------------------*/
600f9b0c 1323yyoverflowlab:
f7ab6a50 1324 yyerror (]b4_yyerror_args[YYI18N ("parser stack overflow"));
600f9b0c
PE
1325 yyresult = 2;
1326 /* Fall through. */
0bfb02ff 1327#endif
600f9b0c
PE
1328
1329yyreturn:
cea1469d 1330 if (yychar != YYEOF && yychar != YYEMPTY)
f7ab6a50 1331 yydestruct (YYI18N ("Error: discarding lookahead"),
cea1469d 1332 yytoken, &yylval]b4_location_if([, &yylloc])[);
80ce3401
PE
1333 if (yyssp != yyss)
1334 for (;;)
1335 {
1336]b4_location_if([[ yyerror_range[0] = *yylsp;]])[
1337 YYPOPSTACK;
1338 if (yyssp == yyss)
1339 break;
f7ab6a50 1340 yydestruct (YYI18N ("Error: popping"),
80ce3401
PE
1341 yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[);
1342 }
600f9b0c
PE
1343#ifndef yyoverflow
1344 if (yyss != yyssa)
1345 YYSTACK_FREE (yyss);
70ddf897 1346#endif
600f9b0c 1347 return yyresult;
be2a1a68
AD
1348]}
1349
24c0aad7 1350
be2a1a68
AD
1351b4_epilogue
1352m4_if(b4_defines_flag, 0, [],
947427ae 1353[@output @output_header_name@
c76e14da 1354b4_copyright([Skeleton parser for Yacc-like parsing with Bison],
cea1469d 1355 [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005])
0252b55c
PE
1356
1357/* As a special exception, when this file is copied by Bison into a
1358 Bison output file, you may use that output file without restriction.
1359 This special exception was added by the Free Software Foundation
1360 in version 1.24 of Bison. */
c76e14da 1361
0d8bed56 1362b4_token_defines(b4_tokens)
be2a1a68 1363
050c471b 1364#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
e9955c83 1365m4_ifdef([b4_stype],
437c2d80 1366[b4_syncline([b4_stype_line], [b4_filename])
050c471b 1367typedef union m4_bregexp(b4_stype, [^{], [YYSTYPE ])b4_stype YYSTYPE;
996b1c7e 1368/* Line __line__ of yacc.c. */
947427ae 1369b4_syncline([@oline@], [@ofile@])],
050c471b
PE
1370[typedef int YYSTYPE;])
1371# define yystype YYSTYPE /* obsolescent; will be withdrawn */
1372# define YYSTYPE_IS_DECLARED 1
947427ae 1373# define YYSTYPE_IS_TRIVIAL 1
be2a1a68
AD
1374#endif
1375
74310291 1376b4_pure_if([],
be2a1a68
AD
1377[extern YYSTYPE b4_prefix[]lval;])
1378
58612f1d 1379b4_location_if(
050c471b
PE
1380[#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
1381typedef struct YYLTYPE
be2a1a68
AD
1382{
1383 int first_line;
1384 int first_column;
1385 int last_line;
1386 int last_column;
050c471b
PE
1387} YYLTYPE;
1388# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
1389# define YYLTYPE_IS_DECLARED 1
1390# define YYLTYPE_IS_TRIVIAL 1
be2a1a68 1391#endif
ff48177d 1392
be2a1a68
AD
1393m4_if(b4_pure, [0],
1394[extern YYLTYPE b4_prefix[]lloc;])
1395])
be2a1a68 1396])