3 /* A Bison parser, made from %%filename
4 by GNU bison %%version. */
6 /* Skeleton output parser for bison,
7 Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
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
11 the Free Software Foundation; either version 2, or (at your option)
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.
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
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
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
27 in version 1.24 of Bison. */
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. */
36 /* If name_prefix is specify substitute the variables and functions
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
46 /* Copy the user declarations. */
55 #ifndef YYSTACK_USE_ALLOCA
57 # define YYSTACK_USE_ALLOCA 1
58 # else /* alloca not defined */
60 # define YYSTACK_USE_ALLOCA 1
61 # define alloca __builtin_alloca
62 # else /* not GNU C. */
63 # if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
64 # define YYSTACK_USE_ALLOCA 1
66 # else /* not sparc */
67 /* We think this test detects Watcom and Microsoft C. */
68 /* This used to test MSDOS, but that is a bad idea since that
69 symbol is in the user namespace. */
70 # if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
72 /* No need for malloc.h, which pollutes the namespace; instead,
73 just don't use alloca. */
76 # else /* not MSDOS, or __TURBOC__ */
78 /* I don't know what this was needed for, but it pollutes the
79 namespace. So I turned it off. rms, 2 May 1997. */
80 /* #include <malloc.h> */
82 # define YYSTACK_USE_ALLOCA 1
83 # else /* not MSDOS, or __TURBOC__, or _AIX */
85 /* haible@ilog.fr says this works for HPUX 9.05 and up, and on
86 HPUX 10. Eventually we can turn this on. */
88 # define YYSTACK_USE_ALLOCA 1
89 # define alloca __builtin_alloca
92 # endif /* not _AIX */
93 # endif /* not MSDOS, or __TURBOC__ */
94 # endif /* not sparc */
95 # endif /* not GNU C */
96 # endif /* alloca not defined */
97 #endif /* YYSTACK_USE_ALLOCA not defined */
99 #if YYSTACK_USE_ALLOCA
100 # define YYSTACK_ALLOC alloca
102 # define YYSTACK_ALLOC malloc
105 #define YYBISON 1 /* Identify Bison output. */
106 #define YYPURE %%pure /* Identify pure parsers. */
109 # define YYDEBUG %%debug
113 # define YYSTYPE %%stype
117 typedef struct yyltype
124 # define YYLTYPE %%ltype
127 #ifndef YYERROR_VERBOSE
128 # define YYERROR_VERBOSE %%verbose
134 #define YYFINAL %%final
135 #define YYFLAG %%flag
136 #define YYNTBASE %%ntbase
137 #define YYLAST %%last
139 #define YYNTOKENS %%ntokens
140 #define YYNNTS %%nnts
141 #define YYNRULES %%nrules
142 #define YYNSTATES %%nstates
143 #define YYMAXUTOK %%maxtok
145 /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
146 #define YYTRANSLATE(x) ((unsigned)(x) <= %%maxtok ? yytranslate[x] : %%nsym)
148 /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
149 static const char yytranslate[] =
155 static const short yyprhs[] =
160 static const short yyrhs[] =
165 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
166 static const short yyrline[] =
172 #if YYDEBUG || YYERROR_VERBOSE
173 /* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
174 static const char *const yytname[] =
180 /* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX. */
181 static const short yytoknum[] =
186 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
187 static const short yyr1[] =
192 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
193 static const short yyr2[] =
198 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
199 doesn't specify something else to do. Zero means the default is an
201 static const short yydefact[] =
206 static const short yydefgoto[] =
211 static const short yypact[] =
216 static const short yypgoto[] =
221 static const short yytable[] =
226 static const short yycheck[] =
231 #define yyerrok (yyerrstatus = 0)
232 #define yyclearin (yychar = YYEMPTY)
236 #define YYACCEPT goto yyacceptlab
237 #define YYABORT goto yyabortlab
238 #define YYERROR goto yyerrlab1
240 /* Like YYERROR except do call yyerror. This remains here temporarily
241 to ease the transition to the new meaning of YYERROR, for GCC.
242 Once GCC version 2 has supplanted version 1, this can go. */
244 #define YYFAIL goto yyerrlab
246 #define YYRECOVERING() (!!yyerrstatus)
248 #define YYBACKUP(Token, Value) \
250 if (yychar == YYEMPTY && yylen == 1) \
254 yychar1 = YYTRANSLATE (yychar); \
260 yyerror ("syntax error: cannot back up"); \
266 #define YYERRCODE 256
268 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
271 When YYLLOC_DEFAULT is run, CURRENT is set the location of the
272 first token. By default, to implement support for ranges, extend
273 its range to the last symbol. */
275 #ifndef YYLLOC_DEFAULT
276 # define YYLLOC_DEFAULT(Current, Rhs, N) \
277 Current.last_line = Rhs[N].last_line; \
278 Current.last_column = Rhs[N].last_column;
281 /* YYLEX -- calling `yylex' with the right arguments. */
286 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
288 # define YYLEX yylex (&yylval, &yylloc)
290 # else /* !YYLSP_NEEDED */
292 # define YYLEX yylex (&yylval, YYLEX_PARAM)
294 # define YYLEX yylex (&yylval)
296 # endif /* !YYLSP_NEEDED */
298 # define YYLEX yylex ()
301 /* Enable debugging if requested. */
303 # define YYDPRINTF(Args) \
308 /* Nonzero means print parse trace. [The following comment makes no
309 sense to me. Could someone clarify it? --akim] Since this is
310 uninitialized, it does not stop multiple parsers from coexisting.
314 # define YYDPRINTF(Args)
315 #endif /* !YYDEBUG */
317 /* YYINITDEPTH -- initial size of the parser's stacks. */
319 # define YYINITDEPTH %%initdepth
322 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
323 if the built-in stack extension method is used). */
329 # define YYMAXDEPTH %%maxdepth
334 /* Define __yy_memcpy. Note that the size argument
335 should be passed with type unsigned int, because that is what the non-GCC
336 definitions require. With GCC, __builtin_memcpy takes an arg
337 of type size_t, but it can handle unsigned int. */
339 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
340 # define __yy_memcpy(To, From, Count) __builtin_memcpy (To, From, Count)
341 #else /* not GNU C or C++ */
343 /* This is the most reliable way to avoid incompatibilities
344 in available built-in functions on various systems. */
347 __yy_memcpy (to, from, count)
351 # else /* __cplusplus */
352 __yy_memcpy (char *to, const char *from, unsigned int count)
355 register const char *f = from;
356 register char *t = to;
357 register int i = count;
366 #line %%line "%%filename"
368 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
369 into yyparse. The argument should have type void *.
370 It should actually point to an object.
371 Grammar actions can access the variable by casting it
372 to the proper pointer type. */
376 # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
377 # define YYPARSE_PARAM_DECL
378 # else /* !__cplusplus */
379 # define YYPARSE_PARAM_ARG YYPARSE_PARAM
380 # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
381 # endif /* !__cplusplus */
382 #else /* !YYPARSE_PARAM */
383 # define YYPARSE_PARAM_ARG
384 # define YYPARSE_PARAM_DECL
385 #endif /* !YYPARSE_PARAM */
387 /* Prevent warning if -Wstrict-prototypes. */
389 # ifdef YYPARSE_PARAM
390 int yyparse (void *);
396 /* YY_DECL_VARIABLES -- depending whether we use a pure parser,
397 variables are global, or local to YYPARSE. */
399 #define _YY_DECL_VARIABLES \
400 /* The lookahead symbol. */ \
403 /* The semantic value of the lookahead symbol. */ \
406 /* Number of parse errors so far. */ \
410 # define YY_DECL_VARIABLES \
413 /* Location data for the lookahead symbol. */ \
416 # define YY_DECL_VARIABLES \
420 /* If nonreentrant, generate the variables here. */
427 yyparse (YYPARSE_PARAM_ARG)
430 /* If reentrant, generate the variables here. */
435 register int yystate;
437 /* Number of tokens to shift before error messages enabled. */
439 /* Lookahead token as an internal (translated) token number. */
442 /* Three stacks and their tools:
443 `yyss': related to states,
444 `yysv': related to semantic values,
445 `yyls': related to locations.
447 Refer to the stacks thru separate pointers, to allow yyoverflow
448 to reallocate them elsewhere. */
450 /* The state stack. */
451 short yyssa[YYINITDEPTH];
453 register short *yyssp;
455 /* The semantic value stack. */
456 YYSTYPE yyvsa[YYINITDEPTH];
457 YYSTYPE *yyvs = yyvsa;
458 register YYSTYPE *yyvsp;
461 /* The location stack. */
462 YYLTYPE yylsa[YYINITDEPTH];
463 YYLTYPE *yyls = yylsa;
468 # define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
470 # define YYPOPSTACK (yyvsp--, yyssp--)
473 int yystacksize = YYINITDEPTH;
474 int yyfree_stacks = 0;
476 /* The variables used to return semantic value and location from the
483 /* When reducing, the number of symbols on the RHS of the reduced
487 YYDPRINTF ((stderr, "Starting parse\n"));
492 yychar = YYEMPTY; /* Cause a token to be read. */
494 /* Initialize stack pointers.
495 Waste one element of value and location stack
496 so that they stay on the same level as the state stack.
497 The wasted elements are never initialized. */
506 /*------------------------------------------------------------.
507 | yynewstate -- Push a new state, which is found in yystate. |
508 `------------------------------------------------------------*/
510 /* In all cases, when you get here, the value and location stacks
511 have just been pushed. so pushing a state here evens the stacks.
518 if (yyssp >= yyss + yystacksize - 1)
520 /* Give user a chance to reallocate the stack. Use copies of
521 these so that the &'s don't force the real ones into memory.
523 YYSTYPE *yyvs1 = yyvs;
526 YYLTYPE *yyls1 = yyls;
529 /* Get the current used size of the three stacks, in elements. */
530 int size = yyssp - yyss + 1;
533 /* Each stack pointer address is followed by the size of the
534 data in use in that stack, in bytes. */
536 /* This used to be a conditional around just the two extra args,
537 but that might be undefined if yyoverflow is a macro. */
538 yyoverflow ("parser stack overflow",
539 &yyss1, size * sizeof (*yyssp),
540 &yyvs1, size * sizeof (*yyvsp),
541 &yyls1, size * sizeof (*yylsp),
544 yyoverflow ("parser stack overflow",
545 &yyss1, size * sizeof (*yyssp),
546 &yyvs1, size * sizeof (*yyvsp),
550 yyss = yyss1; yyvs = yyvs1;
554 #else /* no yyoverflow */
555 /* Extend the stack our own way. */
556 if (yystacksize >= YYMAXDEPTH)
558 yyerror ("parser stack overflow");
570 if (yystacksize > YYMAXDEPTH)
571 yystacksize = YYMAXDEPTH;
572 # if !YYSTACK_USE_ALLOCA
575 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
576 __yy_memcpy ((char *)yyss, (char *)yyss1,
577 size * (unsigned int) sizeof (*yyssp));
578 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
579 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
580 size * (unsigned int) sizeof (*yyvsp));
582 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
583 __yy_memcpy ((char *)yyls, (char *)yyls1,
584 size * (unsigned int) sizeof (*yylsp));
586 #endif /* no yyoverflow */
588 yyssp = yyss + size - 1;
589 yyvsp = yyvs + size - 1;
591 yylsp = yyls + size - 1;
594 YYDPRINTF ((stderr, "Stack size increased to %d\n", yystacksize));
596 if (yyssp >= yyss + yystacksize - 1)
600 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
609 /* Do appropriate processing given the current state. */
610 /* Read a lookahead token if we need one and don't already have one. */
613 /* First try to decide what to do without reference to lookahead token. */
615 yyn = yypact[yystate];
619 /* Not known => get a lookahead token if don't already have one. */
621 /* yychar is either YYEMPTY or YYEOF
622 or a valid token in external form. */
624 if (yychar == YYEMPTY)
626 YYDPRINTF ((stderr, "Reading a token: "));
630 /* Convert token to internal form (in yychar1) for indexing tables with. */
632 if (yychar <= 0) /* This means end of input. */
635 yychar = YYEOF; /* Don't call YYLEX any more. */
637 YYDPRINTF ((stderr, "Now at end of input.\n"));
641 yychar1 = YYTRANSLATE (yychar);
644 /* We have to keep this `#if YYDEBUG', since we use variables
645 which are defined only if `YYDEBUG' is set. */
648 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
649 /* Give the individual parser a way to print the precise
650 meaning of a token, for further debugging info. */
652 YYPRINT (stderr, yychar, yylval);
654 fprintf (stderr, ")\n");
660 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
665 /* yyn is what to do for this token type in this state.
666 Negative => reduce, -yyn is rule number.
667 Positive => shift, yyn is new state.
668 New state is final state => don't bother to shift,
670 0, or most negative number => error. */
685 /* Shift the lookahead token. */
686 YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]));
688 /* Discard the token being shifted unless it is eof. */
697 /* Count tokens shifted since error; after three, turn off error
706 /*-----------------------------------------------------------.
707 | yydefault -- do the default action for the current state. |
708 `-----------------------------------------------------------*/
710 yyn = yydefact[yystate];
716 /*-----------------------------.
717 | yyreduce -- Do a reduction. |
718 `-----------------------------*/
720 /* yyn is the number of a rule to reduce with. */
723 /* If YYLEN is nonzero, implement the default value of the action:
726 Otherwise, the following line sets YYVAL to the semantic value of
727 the lookahead token. This behavior is undocumented and Bison
728 users should not rely upon it. Assigning to YYVAL
729 unconditionally makes the parser a bit smaller, and it avoids a
730 GCC warning that YYVAL may be used uninitialized. */
731 yyval = yyvsp[1-yylen];
734 /* Similarly for the default location. Let the user run additional
735 commands if for instance locations are ranges. */
736 yyloc = yylsp[1-yylen];
737 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
741 /* We have to keep this `#if YYDEBUG', since we use variables which
742 are defined only if `YYDEBUG' is set. */
747 fprintf (stderr, "Reducing via rule %d (line %d), ",
750 /* Print the symbols being reduced, and their result. */
751 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
752 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
753 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
758 %%action /* The action file replaces this line. */
760 #line %%line "%%filename"
771 short *ssp1 = yyss - 1;
772 fprintf (stderr, "state stack now");
773 while (ssp1 != yyssp)
774 fprintf (stderr, " %d", *++ssp1);
775 fprintf (stderr, "\n");
784 /* Now `shift' the result of the reduction. Determine what state
785 that goes to, based on the state we popped back to and the rule
786 number reduced by. */
790 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
791 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
792 yystate = yytable[yystate];
794 yystate = yydefgoto[yyn - YYNTBASE];
799 /*------------------------------------.
800 | yyerrlab -- here on detecting error |
801 `------------------------------------*/
803 /* If not already recovering from an error, report this error. */
809 yyn = yypact[yystate];
811 if (yyn > YYFLAG && yyn < YYLAST)
818 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
819 for (x = (yyn < 0 ? -yyn : 0);
820 x < (int) (sizeof (yytname) / sizeof (char *)); x++)
821 if (yycheck[x + yyn] == x)
822 size += strlen (yytname[x]) + 15, count++;
823 size += strlen ("parse error, unexpected `") + 1;
824 size += strlen (yytname[YYTRANSLATE (yychar)]);
825 msg = (char *) malloc (size);
828 strcpy (msg, "parse error, unexpected `");
829 strcat (msg, yytname[YYTRANSLATE (yychar)]);
835 for (x = (yyn < 0 ? -yyn : 0);
836 x < (int) (sizeof (yytname) / sizeof (char *)); x++)
837 if (yycheck[x + yyn] == x)
839 strcat (msg, count == 0 ? ", expecting `" : " or `");
840 strcat (msg, yytname[x]);
849 yyerror ("parse error; also virtual memory exceeded");
852 #endif /* YYERROR_VERBOSE */
853 yyerror ("parse error");
858 /*----------------------------------------------------.
859 | yyerrlab1 -- error raised explicitly by an action. |
860 `----------------------------------------------------*/
862 if (yyerrstatus == 3)
864 /* If just tried and failed to reuse lookahead token after an
865 error, discard it. */
867 /* Return failure if at end of input. */
870 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
871 yychar, yytname[yychar1]));
875 /* Else will try to reuse lookahead token after shifting the error
878 yyerrstatus = 3; /* Each real token shifted decrements this. */
883 /*-------------------------------------------------------------------.
884 | yyerrdefault -- current state does not do anything special for the |
886 `-------------------------------------------------------------------*/
889 /* This is wrong; only states that explicitly want error tokens
890 should shift them. */
892 /* If its default is to accept any token, ok. Otherwise pop it. */
893 yyn = yydefact[yystate];
899 /*---------------------------------------------------------------.
900 | yyerrpop -- pop the current state because it cannot handle the |
902 `---------------------------------------------------------------*/
915 short *ssp1 = yyss - 1;
916 fprintf (stderr, "Error: state stack now");
917 while (ssp1 != yyssp)
918 fprintf (stderr, " %d", *++ssp1);
919 fprintf (stderr, "\n");
927 yyn = yypact[yystate];
932 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
949 YYDPRINTF ((stderr, "Shifting error token, "));
960 /*-------------------------------------.
961 | yyacceptlab -- YYACCEPT comes here. |
962 `-------------------------------------*/
975 /*-----------------------------------.
976 | yyabortlab -- YYABORT comes here. |
977 `-----------------------------------*/