]> git.saurik.com Git - bison.git/blame - src/bison.simple
* src/system.h (ngettext): Now that we use ngettext, be sure to
[bison.git] / src / bison.simple
CommitLineData
a8289c62
RA
1/* -*- C -*- */
2
3/* A Bison parser, made from %%filename
4 by GNU bison %%version. */
5
10fa2066 6/* Skeleton output parser for bison,
fabd3b43 7 Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
10fa2066
RS
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
21b14802 11 the Free Software Foundation; either version 2, or (at your option)
10fa2066
RS
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
c49a8e71
JT
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
10fa2066 23
c71f8bba
RS
24/* As a special exception, when this file is copied by Bison into a
25 Bison output file, you may use that output file without restriction.
26 This special exception was added by the Free Software Foundation
cfeaeb52 27 in version 1.24 of Bison. */
10fa2066 28
71da9eea
AD
29/* This is the parser code that is written into each bison parser when
30 the %semantic_parser declaration is not specified in the grammar.
31 It was written by Richard Stallman by simplifying the hairy parser
32 used when %semantic_parser is specified. */
444fbf65 33
a8289c62
RA
34#include <stdio.h>
35
17da6427
PB
36/* If name_prefix is specify substitute the variables and functions
37 names. */
38#define yyparse %%prefix##parse
39#define yylex %%prefix##lex
40#define yyerror %%prefix##error
41#define yylval %%prefix##lval
42#define yychar %%prefix##char
43#define yydebug %%prefix##debug
44#define yynerrs %%prefix##nerrs
45
d1a2daf7 46/* Copy the user declarations. */
c51d1a19 47#line %%input_line "%%filename"
63c2d5de 48%%prologue
d1a2daf7 49
c51d1a19 50#line %%line "%%skeleton"
a8289c62
RA
51#ifndef __cplusplus
52# ifndef __STDC__
53# define const
54# endif
55#endif
56
70ddf897 57#ifndef YYSTACK_USE_ALLOCA
361f60b3 58# ifdef alloca
78d09da9 59# define YYSTACK_USE_ALLOCA 1
361f60b3
AD
60# else /* alloca not defined */
61# ifdef __GNUC__
78d09da9 62# define YYSTACK_USE_ALLOCA 1
361f60b3
AD
63# define alloca __builtin_alloca
64# else /* not GNU C. */
65# if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
78d09da9 66# define YYSTACK_USE_ALLOCA 1
361f60b3
AD
67# include <alloca.h>
68# else /* not sparc */
69 /* We think this test detects Watcom and Microsoft C. */
70 /* This used to test MSDOS, but that is a bad idea since that
71 symbol is in the user namespace. */
72# if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
73# if 0
74 /* No need for malloc.h, which pollutes the namespace; instead,
75 just don't use alloca. */
76# include <malloc.h>
77# endif
78# else /* not MSDOS, or __TURBOC__ */
79# if defined(_AIX)
80 /* I don't know what this was needed for, but it pollutes the
81 namespace. So I turned it off. rms, 2 May 1997. */
82 /* #include <malloc.h> */
bbb5bcc6 83 #pragma alloca
78d09da9 84# define YYSTACK_USE_ALLOCA 1
361f60b3
AD
85# else /* not MSDOS, or __TURBOC__, or _AIX */
86# if 0
87 /* haible@ilog.fr says this works for HPUX 9.05 and up, and on
88 HPUX 10. Eventually we can turn this on. */
89# ifdef __hpux
78d09da9 90# define YYSTACK_USE_ALLOCA 1
361f60b3
AD
91# define alloca __builtin_alloca
92# endif /* __hpux */
93# endif
94# endif /* not _AIX */
95# endif /* not MSDOS, or __TURBOC__ */
96# endif /* not sparc */
97# endif /* not GNU C */
98# endif /* alloca not defined */
70ddf897
RS
99#endif /* YYSTACK_USE_ALLOCA not defined */
100
631aa1d3
AD
101#ifndef YYSTACK_USE_ALLOCA
102# define YYSTACK_USE_ALLOCA 0
103#endif
104
e9e4c321
AD
105/* Realloc WHAT from SIZE to YYSTACKSIZE elements of TYPE.
106 If WHAT was malloc'ed (not the original automatic ARRAY), free it. */
78d09da9 107#if YYSTACK_USE_ALLOCA
e9e4c321
AD
108# define YYSTACK_REALLOC(Type, What, Array) \
109do { \
110 Type *old = What; \
111 What = (Type *) malloc (yystacksize * sizeof (Type)); \
112 __yy_memcpy ((char *) What, (char *) old, \
113 (size) * (unsigned int) sizeof (Type)); \
114 yyfree_stacks = 1; \
115 if (old != Array) \
116 free (old); \
117} while (0)
70ddf897 118#else
e9e4c321
AD
119# define YYSTACK_REALLOC(Type, What, Array) \
120do { \
121 Type *old = What; \
122 What = (Type *) alloca (yystacksize * sizeof (Type)); \
123 __yy_memcpy ((char *) What, (char *) old, \
124 (size) * (unsigned int) sizeof (Type)); \
125} while (0)
70ddf897 126#endif
10fa2066 127
a8289c62
RA
128#define YYBISON 1 /* Identify Bison output. */
129#define YYPURE %%pure /* Identify pure parsers. */
130
131#ifndef YYDEBUG
132# define YYDEBUG %%debug
133#endif
134
180d45ba 135#line %%input_line "%%filename"
a8289c62 136#ifndef YYSTYPE
5f7e0832
AD
137typedef %%stype yystype;
138# define YYSTYPE yystype
a8289c62
RA
139#endif
140
141#ifndef YYLTYPE
142typedef struct yyltype
143{
144 int first_line;
145 int first_column;
146 int last_line;
147 int last_column;
148} yyltype;
149# define YYLTYPE %%ltype
150#endif
151
152#ifndef YYERROR_VERBOSE
153# define YYERROR_VERBOSE %%verbose
154#endif
155
e8cb70b9 156/* Tokens. */
a8289c62
RA
157%%tokendef
158
159#define YYFINAL %%final
160#define YYFLAG %%flag
161#define YYNTBASE %%ntbase
162#define YYLAST %%last
163
164#define YYNTOKENS %%ntokens
165#define YYNNTS %%nnts
166#define YYNRULES %%nrules
167#define YYNSTATES %%nstates
168#define YYMAXUTOK %%maxtok
169
170/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
171#define YYTRANSLATE(x) ((unsigned)(x) <= %%maxtok ? yytranslate[x] : %%nsym)
172
173/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
174static const char yytranslate[] =
175{
176 %%translate
177};
178
179#if YYDEBUG
180static const short yyprhs[] =
181{
182 %%prhs
183};
184
185static const short yyrhs[] =
186{
187 %%rhs
188};
189
190/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
191static const short yyrline[] =
192{
193 %%rline
194};
195#endif
196
197#if YYDEBUG || YYERROR_VERBOSE
e8cb70b9
PB
198/* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
199static const char *const yytname[] =
a8289c62
RA
200{
201 %%tname
202};
203#endif
204
205/* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX. */
206static const short yytoknum[] =
207{
208 %%toknum
209};
210
211/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
212static const short yyr1[] =
213{
214 %%r1
215};
216
217/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
218static const short yyr2[] =
219{
220 %%r2
221};
222
223/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
224 doesn't specify something else to do. Zero means the default is an
225 error. */
226static const short yydefact[] =
227{
228 %%defact
229};
230
231static const short yydefgoto[] =
232{
233 %%defgoto
234};
235
236static const short yypact[] =
237{
238 %%pact
239};
240
241static const short yypgoto[] =
242{
243 %%pgoto
244};
245
246static const short yytable[] =
247{
248 %%table
249};
250
251static const short yycheck[] =
252{
253 %%check
254};
255
10fa2066 256#define yyerrok (yyerrstatus = 0)
17da6427 257#define yyclearin (yychar = YYEMPTY)
10fa2066
RS
258#define YYEMPTY -2
259#define YYEOF 0
a8289c62 260
70ddf897 261#define YYACCEPT goto yyacceptlab
a8289c62 262#define YYABORT goto yyabortlab
10fa2066 263#define YYERROR goto yyerrlab1
a8289c62 264
71da9eea
AD
265/* Like YYERROR except do call yyerror. This remains here temporarily
266 to ease the transition to the new meaning of YYERROR, for GCC.
10fa2066 267 Once GCC version 2 has supplanted version 1, this can go. */
a8289c62 268
10fa2066 269#define YYFAIL goto yyerrlab
a8289c62 270
10fa2066 271#define YYRECOVERING() (!!yyerrstatus)
a8289c62 272
69b4e0c5 273#define YYBACKUP(Token, Value) \
10fa2066 274do \
17da6427 275 if (yychar == YYEMPTY && yylen == 1) \
71da9eea 276 { \
17da6427
PB
277 yychar = (Token); \
278 yylval = (Value); \
279 yychar1 = YYTRANSLATE (yychar); \
10fa2066
RS
280 YYPOPSTACK; \
281 goto yybackup; \
282 } \
283 else \
71da9eea 284 { \
17da6427 285 yyerror ("syntax error: cannot back up"); \
71da9eea
AD
286 YYERROR; \
287 } \
10fa2066
RS
288while (0)
289
290#define YYTERROR 1
291#define YYERRCODE 256
292
3abcd459
AD
293/* YYLLOC_DEFAULT -- Compute the default location (before the actions
294 are run).
295
296 When YYLLOC_DEFAULT is run, CURRENT is set the location of the
297 first token. By default, to implement support for ranges, extend
298 its range to the last symbol. */
299
300#ifndef YYLLOC_DEFAULT
ca96bc2d
MA
301# define YYLLOC_DEFAULT(Current, Rhs, N) \
302 Current.last_line = Rhs[N].last_line; \
303 Current.last_column = Rhs[N].last_column;
3abcd459
AD
304#endif
305
9e644e64
MA
306/* Definition of YYLSP_NEEDED. */
307#define YYLSP_NEEDED %%locations_flag
308
3abcd459 309/* YYLEX -- calling `yylex' with the right arguments. */
553e2b22
AD
310
311#if YYPURE
5af1f549 312# if YYLSP_NEEDED
b07b484a 313# ifdef YYLEX_PARAM
17da6427 314# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
b07b484a 315# else
17da6427 316# define YYLEX yylex (&yylval, &yylloc)
b07b484a 317# endif
71da9eea 318# else /* !YYLSP_NEEDED */
b07b484a 319# ifdef YYLEX_PARAM
17da6427 320# define YYLEX yylex (&yylval, YYLEX_PARAM)
b07b484a 321# else
17da6427 322# define YYLEX yylex (&yylval)
b07b484a 323# endif
71da9eea 324# endif /* !YYLSP_NEEDED */
553e2b22 325#else /* !YYPURE */
17da6427 326# define YYLEX yylex ()
553e2b22
AD
327#endif /* !YYPURE */
328
5a35a6cb 329/* Enable debugging if requested. */
0d533154 330#if YYDEBUG
5a35a6cb
AD
331# define YYDPRINTF(Args) \
332do { \
17da6427 333 if (yydebug) \
5a35a6cb
AD
334 fprintf Args; \
335} while (0)
336/* Nonzero means print parse trace. [The following comment makes no
337 sense to me. Could someone clarify it? --akim] Since this is
338 uninitialized, it does not stop multiple parsers from coexisting.
339 */
17da6427 340int yydebug;
5a35a6cb
AD
341#else /* !YYDEBUG */
342# define YYDPRINTF(Args)
343#endif /* !YYDEBUG */
344
345/* YYINITDEPTH -- initial size of the parser's stacks. */
10fa2066 346#ifndef YYINITDEPTH
a8289c62 347# define YYINITDEPTH %%initdepth
10fa2066
RS
348#endif
349
5a35a6cb
AD
350/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
351 if the built-in stack extension method is used). */
10fa2066 352#if YYMAXDEPTH == 0
b07b484a 353# undef YYMAXDEPTH
10fa2066
RS
354#endif
355
356#ifndef YYMAXDEPTH
a8289c62 357# define YYMAXDEPTH %%maxdepth
10fa2066 358#endif
a8289c62 359
10fa2066 360\f
a8289c62 361
5e02f2ad
RS
362/* Define __yy_memcpy. Note that the size argument
363 should be passed with type unsigned int, because that is what the non-GCC
364 definitions require. With GCC, __builtin_memcpy takes an arg
365 of type size_t, but it can handle unsigned int. */
366
10fa2066 367#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
5a35a6cb 368# define __yy_memcpy(To, From, Count) __builtin_memcpy (To, From, Count)
10fa2066 369#else /* not GNU C or C++ */
10fa2066
RS
370
371/* This is the most reliable way to avoid incompatibilities
372 in available built-in functions on various systems. */
373static void
5a009f2c 374# ifndef __cplusplus
c245d0d3 375__yy_memcpy (to, from, count)
10fa2066 376 char *to;
5a009f2c 377 const char *from;
5e02f2ad 378 unsigned int count;
b07b484a 379# else /* __cplusplus */
5a009f2c
MA
380__yy_memcpy (char *to, const char *from, unsigned int count)
381# endif
10fa2066 382{
5a009f2c 383 register const char *f = from;
10fa2066
RS
384 register char *t = to;
385 register int i = count;
386
387 while (i-- > 0)
388 *t++ = *f++;
389}
bbb5bcc6 390#endif
a8289c62 391
10fa2066 392\f
a8289c62 393
f508cb0a 394#line %%line "%%skeleton"
b658bf92
RS
395
396/* The user can define YYPARSE_PARAM as the name of an argument to be passed
397 into yyparse. The argument should have type void *.
398 It should actually point to an object.
399 Grammar actions can access the variable by casting it
400 to the proper pointer type. */
401
402#ifdef YYPARSE_PARAM
b07b484a
AD
403# ifdef __cplusplus
404# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
405# define YYPARSE_PARAM_DECL
71da9eea 406# else /* !__cplusplus */
b07b484a
AD
407# define YYPARSE_PARAM_ARG YYPARSE_PARAM
408# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
71da9eea
AD
409# endif /* !__cplusplus */
410#else /* !YYPARSE_PARAM */
b07b484a
AD
411# define YYPARSE_PARAM_ARG
412# define YYPARSE_PARAM_DECL
71da9eea 413#endif /* !YYPARSE_PARAM */
b658bf92 414
1b181651
PE
415/* Prevent warning if -Wstrict-prototypes. */
416#ifdef __GNUC__
b07b484a 417# ifdef YYPARSE_PARAM
17da6427 418int yyparse (void *);
b07b484a 419# else
17da6427 420int yyparse (void);
b07b484a 421# endif
1b181651
PE
422#endif
423
a35f64ea
AD
424/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
425 variables are global, or local to YYPARSE. */
426
427#define _YY_DECL_VARIABLES \
428/* The lookahead symbol. */ \
17da6427 429int yychar; \
a35f64ea 430 \
e8cb70b9 431/* The semantic value of the lookahead symbol. */ \
17da6427 432YYSTYPE yylval; \
a35f64ea
AD
433 \
434/* Number of parse errors so far. */ \
17da6427 435int yynerrs;
a35f64ea
AD
436
437#if YYLSP_NEEDED
438# define YY_DECL_VARIABLES \
439_YY_DECL_VARIABLES \
440 \
441/* Location data for the lookahead symbol. */ \
442YYLTYPE yylloc;
443#else
444# define YY_DECL_VARIABLES \
445_YY_DECL_VARIABLES
446#endif
447
e8cb70b9 448/* If nonreentrant, generate the variables here. */
a35f64ea
AD
449
450#if !YYPURE
451YY_DECL_VARIABLES
452#endif /* !YYPURE */
453
10fa2066 454int
17da6427 455yyparse (YYPARSE_PARAM_ARG)
b658bf92 456 YYPARSE_PARAM_DECL
10fa2066 457{
e8cb70b9 458 /* If reentrant, generate the variables here. */
a35f64ea
AD
459#if YYPURE
460 YY_DECL_VARIABLES
461#endif /* !YYPURE */
462
10fa2066
RS
463 register int yystate;
464 register int yyn;
b07b484a
AD
465 /* Number of tokens to shift before error messages enabled. */
466 int yyerrstatus;
467 /* Lookahead token as an internal (translated) token number. */
468 int yychar1 = 0;
10fa2066 469
bb10be54
AD
470 /* Three stacks and their tools:
471 `yyss': related to states,
e9e4c321 472 `yyvs': related to semantic values,
bb10be54
AD
473 `yyls': related to locations.
474
475 Refer to the stacks thru separate pointers, to allow yyoverflow
476 to reallocate them elsewhere. */
477
e8cb70b9 478 /* The state stack. */
b07b484a 479 short yyssa[YYINITDEPTH];
bb10be54
AD
480 short *yyss = yyssa;
481 register short *yyssp;
482
b07b484a
AD
483 /* The semantic value stack. */
484 YYSTYPE yyvsa[YYINITDEPTH];
b07b484a 485 YYSTYPE *yyvs = yyvsa;
bb10be54 486 register YYSTYPE *yyvsp;
10fa2066 487
5af1f549 488#if YYLSP_NEEDED
b07b484a
AD
489 /* The location stack. */
490 YYLTYPE yylsa[YYINITDEPTH];
10fa2066
RS
491 YYLTYPE *yyls = yylsa;
492 YYLTYPE *yylsp;
bb10be54 493#endif
10fa2066 494
5af1f549 495#if YYLSP_NEEDED
b07b484a 496# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
10fa2066 497#else
b07b484a 498# define YYPOPSTACK (yyvsp--, yyssp--)
10fa2066
RS
499#endif
500
501 int yystacksize = YYINITDEPTH;
70ddf897 502 int yyfree_stacks = 0;
10fa2066 503
6666f98f
AD
504 /* The variables used to return semantic value and location from the
505 action routines. */
bb10be54 506 YYSTYPE yyval;
5af1f549 507# if YYLSP_NEEDED
6666f98f
AD
508 YYLTYPE yyloc;
509# endif
10fa2066 510
6666f98f 511 /* When reducing, the number of symbols on the RHS of the reduced
e8cb70b9 512 rule. */
10fa2066
RS
513 int yylen;
514
5a35a6cb 515 YYDPRINTF ((stderr, "Starting parse\n"));
10fa2066
RS
516
517 yystate = 0;
518 yyerrstatus = 0;
17da6427
PB
519 yynerrs = 0;
520 yychar = YYEMPTY; /* Cause a token to be read. */
10fa2066
RS
521
522 /* Initialize stack pointers.
523 Waste one element of value and location stack
524 so that they stay on the same level as the state stack.
525 The wasted elements are never initialized. */
526
cbd89906 527 yyssp = yyss;
10fa2066 528 yyvsp = yyvs;
5af1f549 529#if YYLSP_NEEDED
10fa2066
RS
530 yylsp = yyls;
531#endif
cbd89906 532 goto yysetstate;
10fa2066 533
71da9eea
AD
534/*------------------------------------------------------------.
535| yynewstate -- Push a new state, which is found in yystate. |
536`------------------------------------------------------------*/
342b8b6e 537 yynewstate:
71da9eea
AD
538 /* In all cases, when you get here, the value and location stacks
539 have just been pushed. so pushing a state here evens the stacks.
540 */
cbd89906
PE
541 yyssp++;
542
342b8b6e 543 yysetstate:
cbd89906 544 *yyssp = yystate;
10fa2066
RS
545
546 if (yyssp >= yyss + yystacksize - 1)
547 {
71da9eea
AD
548 /* Give user a chance to reallocate the stack. Use copies of
549 these so that the &'s don't force the real ones into memory.
550 */
10fa2066
RS
551 YYSTYPE *yyvs1 = yyvs;
552 short *yyss1 = yyss;
5af1f549 553#if YYLSP_NEEDED
10fa2066
RS
554 YYLTYPE *yyls1 = yyls;
555#endif
556
557 /* Get the current used size of the three stacks, in elements. */
558 int size = yyssp - yyss + 1;
559
560#ifdef yyoverflow
69b4e0c5
AD
561 /* Each stack pointer address is followed by the size of the
562 data in use in that stack, in bytes. */
5af1f549 563# if YYLSP_NEEDED
be4bf877
RS
564 /* This used to be a conditional around just the two extra args,
565 but that might be undefined if yyoverflow is a macro. */
bb10be54
AD
566 yyoverflow ("parser stack overflow",
567 &yyss1, size * sizeof (*yyssp),
568 &yyvs1, size * sizeof (*yyvsp),
569 &yyls1, size * sizeof (*yylsp),
570 &yystacksize);
b07b484a 571# else
bb10be54
AD
572 yyoverflow ("parser stack overflow",
573 &yyss1, size * sizeof (*yyssp),
574 &yyvs1, size * sizeof (*yyvsp),
575 &yystacksize);
b07b484a 576# endif
10fa2066
RS
577
578 yyss = yyss1; yyvs = yyvs1;
5af1f549 579# if YYLSP_NEEDED
10fa2066 580 yyls = yyls1;
b07b484a 581# endif
10fa2066
RS
582#else /* no yyoverflow */
583 /* Extend the stack our own way. */
584 if (yystacksize >= YYMAXDEPTH)
585 {
17da6427 586 yyerror ("parser stack overflow");
70ddf897
RS
587 if (yyfree_stacks)
588 {
589 free (yyss);
590 free (yyvs);
5af1f549 591# if YYLSP_NEEDED
70ddf897 592 free (yyls);
b07b484a 593# endif
70ddf897 594 }
10fa2066
RS
595 return 2;
596 }
597 yystacksize *= 2;
598 if (yystacksize > YYMAXDEPTH)
599 yystacksize = YYMAXDEPTH;
e9e4c321
AD
600
601 YYSTACK_REALLOC (short, yyss, yyssa);
602 YYSTACK_REALLOC (YYSTYPE, yyvs, yyvsa);
5af1f549 603# if YYLSP_NEEDED
e9e4c321 604 YYSTACK_REALLOC (YYLTYPE, yyls, yylsa);
b07b484a 605# endif
10fa2066
RS
606#endif /* no yyoverflow */
607
608 yyssp = yyss + size - 1;
609 yyvsp = yyvs + size - 1;
5af1f549 610#if YYLSP_NEEDED
10fa2066
RS
611 yylsp = yyls + size - 1;
612#endif
613
5a35a6cb 614 YYDPRINTF ((stderr, "Stack size increased to %d\n", yystacksize));
10fa2066
RS
615
616 if (yyssp >= yyss + yystacksize - 1)
617 YYABORT;
618 }
619
5a35a6cb 620 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
10fa2066
RS
621
622 goto yybackup;
71da9eea 623
71da9eea
AD
624/*-----------.
625| yybackup. |
626`-----------*/
627yybackup:
10fa2066
RS
628
629/* Do appropriate processing given the current state. */
630/* Read a lookahead token if we need one and don't already have one. */
631/* yyresume: */
632
633 /* First try to decide what to do without reference to lookahead token. */
634
635 yyn = yypact[yystate];
636 if (yyn == YYFLAG)
637 goto yydefault;
638
639 /* Not known => get a lookahead token if don't already have one. */
640
641 /* yychar is either YYEMPTY or YYEOF
642 or a valid token in external form. */
643
17da6427 644 if (yychar == YYEMPTY)
10fa2066 645 {
5a35a6cb 646 YYDPRINTF ((stderr, "Reading a token: "));
17da6427 647 yychar = YYLEX;
10fa2066
RS
648 }
649
e8cb70b9 650 /* Convert token to internal form (in yychar1) for indexing tables with. */
10fa2066 651
17da6427 652 if (yychar <= 0) /* This means end of input. */
10fa2066
RS
653 {
654 yychar1 = 0;
17da6427 655 yychar = YYEOF; /* Don't call YYLEX any more. */
10fa2066 656
5a35a6cb 657 YYDPRINTF ((stderr, "Now at end of input.\n"));
10fa2066
RS
658 }
659 else
660 {
17da6427 661 yychar1 = YYTRANSLATE (yychar);
10fa2066 662
0d533154
AD
663#if YYDEBUG
664 /* We have to keep this `#if YYDEBUG', since we use variables
665 which are defined only if `YYDEBUG' is set. */
17da6427 666 if (yydebug)
10fa2066 667 {
17da6427 668 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
0d533154
AD
669 /* Give the individual parser a way to print the precise
670 meaning of a token, for further debugging info. */
b07b484a 671# ifdef YYPRINT
17da6427 672 YYPRINT (stderr, yychar, yylval);
b07b484a 673# endif
10fa2066
RS
674 fprintf (stderr, ")\n");
675 }
0d533154 676#endif
10fa2066
RS
677 }
678
679 yyn += yychar1;
680 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
681 goto yydefault;
682
683 yyn = yytable[yyn];
684
685 /* yyn is what to do for this token type in this state.
686 Negative => reduce, -yyn is rule number.
687 Positive => shift, yyn is new state.
688 New state is final state => don't bother to shift,
689 just return success.
690 0, or most negative number => error. */
691
692 if (yyn < 0)
693 {
694 if (yyn == YYFLAG)
695 goto yyerrlab;
696 yyn = -yyn;
697 goto yyreduce;
698 }
699 else if (yyn == 0)
700 goto yyerrlab;
701
702 if (yyn == YYFINAL)
703 YYACCEPT;
704
705 /* Shift the lookahead token. */
17da6427 706 YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]));
10fa2066
RS
707
708 /* Discard the token being shifted unless it is eof. */
17da6427
PB
709 if (yychar != YYEOF)
710 yychar = YYEMPTY;
10fa2066 711
17da6427 712 *++yyvsp = yylval;
5af1f549 713#if YYLSP_NEEDED
10fa2066
RS
714 *++yylsp = yylloc;
715#endif
716
71da9eea
AD
717 /* Count tokens shifted since error; after three, turn off error
718 status. */
719 if (yyerrstatus)
720 yyerrstatus--;
10fa2066
RS
721
722 yystate = yyn;
723 goto yynewstate;
724
10fa2066 725
71da9eea
AD
726/*-----------------------------------------------------------.
727| yydefault -- do the default action for the current state. |
728`-----------------------------------------------------------*/
729yydefault:
10fa2066
RS
730 yyn = yydefact[yystate];
731 if (yyn == 0)
732 goto yyerrlab;
71da9eea 733 goto yyreduce;
10fa2066 734
71da9eea
AD
735
736/*-----------------------------.
737| yyreduce -- Do a reduction. |
738`-----------------------------*/
10fa2066 739yyreduce:
71da9eea 740 /* yyn is the number of a rule to reduce with. */
10fa2066 741 yylen = yyr2[yyn];
da9abf43
AD
742
743 /* If YYLEN is nonzero, implement the default value of the action:
573c1d9f 744 `$$ = $1'.
da9abf43
AD
745
746 Otherwise, the following line sets YYVAL to the semantic value of
747 the lookahead token. This behavior is undocumented and Bison
748 users should not rely upon it. Assigning to YYVAL
749 unconditionally makes the parser a bit smaller, and it avoids a
750 GCC warning that YYVAL may be used uninitialized. */
751 yyval = yyvsp[1-yylen];
3abcd459 752
5af1f549 753#if YYLSP_NEEDED
3abcd459
AD
754 /* Similarly for the default location. Let the user run additional
755 commands if for instance locations are ranges. */
756 yyloc = yylsp[1-yylen];
ca96bc2d 757 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
6666f98f 758#endif
10fa2066 759
0de741ca
AD
760#if YYDEBUG
761 /* We have to keep this `#if YYDEBUG', since we use variables which
762 are defined only if `YYDEBUG' is set. */
17da6427 763 if (yydebug)
10fa2066
RS
764 {
765 int i;
766
767 fprintf (stderr, "Reducing via rule %d (line %d), ",
768 yyn, yyrline[yyn]);
769
770 /* Print the symbols being reduced, and their result. */
771 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
772 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
773 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
774 }
775#endif
a8289c62
RA
776 switch (yyn)
777 {
1c8c2190 778 %%action
a8289c62 779 }
f508cb0a 780#line %%line "%%skeleton"
10fa2066
RS
781\f
782 yyvsp -= yylen;
783 yyssp -= yylen;
5af1f549 784#if YYLSP_NEEDED
10fa2066
RS
785 yylsp -= yylen;
786#endif
787
5a35a6cb 788#if YYDEBUG
17da6427 789 if (yydebug)
10fa2066
RS
790 {
791 short *ssp1 = yyss - 1;
792 fprintf (stderr, "state stack now");
793 while (ssp1 != yyssp)
794 fprintf (stderr, " %d", *++ssp1);
795 fprintf (stderr, "\n");
796 }
5a35a6cb 797#endif
10fa2066
RS
798
799 *++yyvsp = yyval;
5af1f549 800#if YYLSP_NEEDED
6666f98f 801 *++yylsp = yyloc;
10fa2066
RS
802#endif
803
41aca2e0
AD
804 /* Now `shift' the result of the reduction. Determine what state
805 that goes to, based on the state we popped back to and the rule
806 number reduced by. */
10fa2066
RS
807
808 yyn = yyr1[yyn];
809
810 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
811 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
812 yystate = yytable[yystate];
813 else
814 yystate = yydefgoto[yyn - YYNTBASE];
815
816 goto yynewstate;
817
10fa2066 818
71da9eea
AD
819/*------------------------------------.
820| yyerrlab -- here on detecting error |
821`------------------------------------*/
822yyerrlab:
823 /* If not already recovering from an error, report this error. */
824 if (!yyerrstatus)
10fa2066 825 {
17da6427 826 ++yynerrs;
10fa2066 827
a8289c62 828#if YYERROR_VERBOSE
10fa2066
RS
829 yyn = yypact[yystate];
830
831 if (yyn > YYFLAG && yyn < YYLAST)
832 {
833 int size = 0;
834 char *msg;
835 int x, count;
836
837 count = 0;
838 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
839 for (x = (yyn < 0 ? -yyn : 0);
3419715d 840 x < (int) (sizeof (yytname) / sizeof (char *)); x++)
10fa2066 841 if (yycheck[x + yyn] == x)
71da9eea 842 size += strlen (yytname[x]) + 15, count++;
75bbe78d 843 size += strlen ("parse error, unexpected `") + 1;
17da6427 844 size += strlen (yytname[YYTRANSLATE (yychar)]);
75bbe78d 845 msg = (char *) malloc (size);
10fa2066
RS
846 if (msg != 0)
847 {
75bbe78d 848 strcpy (msg, "parse error, unexpected `");
17da6427 849 strcat (msg, yytname[YYTRANSLATE (yychar)]);
75bbe78d 850 strcat (msg, "'");
10fa2066
RS
851
852 if (count < 5)
853 {
854 count = 0;
855 for (x = (yyn < 0 ? -yyn : 0);
a8289c62 856 x < (int) (sizeof (yytname) / sizeof (char *)); x++)
10fa2066
RS
857 if (yycheck[x + yyn] == x)
858 {
a8289c62
RA
859 strcat (msg, count == 0 ? ", expecting `" : " or `");
860 strcat (msg, yytname[x]);
75bbe78d 861 strcat (msg, "'");
10fa2066
RS
862 count++;
863 }
864 }
17da6427 865 yyerror (msg);
75bbe78d 866 free (msg);
10fa2066 867 }
a8289c62 868 else
17da6427 869 yyerror ("parse error; also virtual memory exceeded");
a8289c62 870 }
10fa2066
RS
871 else
872#endif /* YYERROR_VERBOSE */
17da6427 873 yyerror ("parse error");
10fa2066 874 }
10fa2066 875 goto yyerrlab1;
10fa2066 876
71da9eea 877
e8cb70b9
PB
878/*----------------------------------------------------.
879| yyerrlab1 -- error raised explicitly by an action. |
880`----------------------------------------------------*/
71da9eea 881yyerrlab1:
10fa2066
RS
882 if (yyerrstatus == 3)
883 {
71da9eea
AD
884 /* If just tried and failed to reuse lookahead token after an
885 error, discard it. */
10fa2066 886
e8cb70b9 887 /* Return failure if at end of input. */
17da6427 888 if (yychar == YYEOF)
10fa2066 889 YYABORT;
5a35a6cb 890 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
17da6427
PB
891 yychar, yytname[yychar1]));
892 yychar = YYEMPTY;
10fa2066
RS
893 }
894
71da9eea
AD
895 /* Else will try to reuse lookahead token after shifting the error
896 token. */
10fa2066 897
e8cb70b9 898 yyerrstatus = 3; /* Each real token shifted decrements this. */
10fa2066
RS
899
900 goto yyerrhandle;
901
10fa2066 902
71da9eea
AD
903/*-------------------------------------------------------------------.
904| yyerrdefault -- current state does not do anything special for the |
905| error token. |
906`-------------------------------------------------------------------*/
907yyerrdefault:
10fa2066
RS
908#if 0
909 /* This is wrong; only states that explicitly want error tokens
910 should shift them. */
71da9eea
AD
911
912 /* If its default is to accept any token, ok. Otherwise pop it. */
913 yyn = yydefact[yystate];
914 if (yyn)
915 goto yydefault;
10fa2066
RS
916#endif
917
10fa2066 918
71da9eea
AD
919/*---------------------------------------------------------------.
920| yyerrpop -- pop the current state because it cannot handle the |
e8cb70b9 921| error token. |
71da9eea
AD
922`---------------------------------------------------------------*/
923yyerrpop:
924 if (yyssp == yyss)
925 YYABORT;
10fa2066
RS
926 yyvsp--;
927 yystate = *--yyssp;
5af1f549 928#if YYLSP_NEEDED
10fa2066
RS
929 yylsp--;
930#endif
931
5a35a6cb 932#if YYDEBUG
17da6427 933 if (yydebug)
10fa2066
RS
934 {
935 short *ssp1 = yyss - 1;
936 fprintf (stderr, "Error: state stack now");
937 while (ssp1 != yyssp)
938 fprintf (stderr, " %d", *++ssp1);
939 fprintf (stderr, "\n");
940 }
5a35a6cb 941#endif
10fa2066 942
71da9eea
AD
943/*--------------.
944| yyerrhandle. |
945`--------------*/
946yyerrhandle:
10fa2066
RS
947 yyn = yypact[yystate];
948 if (yyn == YYFLAG)
949 goto yyerrdefault;
950
951 yyn += YYTERROR;
952 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
953 goto yyerrdefault;
954
955 yyn = yytable[yyn];
956 if (yyn < 0)
957 {
958 if (yyn == YYFLAG)
959 goto yyerrpop;
960 yyn = -yyn;
961 goto yyreduce;
962 }
963 else if (yyn == 0)
964 goto yyerrpop;
965
966 if (yyn == YYFINAL)
967 YYACCEPT;
968
5a35a6cb 969 YYDPRINTF ((stderr, "Shifting error token, "));
10fa2066 970
17da6427 971 *++yyvsp = yylval;
5af1f549 972#if YYLSP_NEEDED
10fa2066
RS
973 *++yylsp = yylloc;
974#endif
975
976 yystate = yyn;
977 goto yynewstate;
70ddf897 978
71da9eea
AD
979
980/*-------------------------------------.
981| yyacceptlab -- YYACCEPT comes here. |
982`-------------------------------------*/
983yyacceptlab:
70ddf897
RS
984 if (yyfree_stacks)
985 {
986 free (yyss);
987 free (yyvs);
5af1f549 988#if YYLSP_NEEDED
70ddf897
RS
989 free (yyls);
990#endif
991 }
992 return 0;
993
71da9eea
AD
994
995/*-----------------------------------.
996| yyabortlab -- YYABORT comes here. |
997`-----------------------------------*/
998yyabortlab:
70ddf897
RS
999 if (yyfree_stacks)
1000 {
1001 free (yyss);
1002 free (yyvs);
5af1f549 1003#if YYLSP_NEEDED
70ddf897
RS
1004 free (yyls);
1005#endif
1006 }
1007 return 1;
10fa2066 1008}
ff48177d 1009
6f9344da 1010#line %%input_line "%%filename"
63c2d5de 1011%%epilogue