/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line
-/* This file comes from bison-@bison_version@. */
-
/* Skeleton output parser for bison,
- Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+ Copyright 1984, 1989, 1990, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
# define YYSTACK_ALLOC malloc
#endif
-/* Note: there must be only one dollar sign in this file.
- It is replaced by the list of actions, each action
- as one case of the switch. */
-
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
Once GCC version 2 has supplanted version 1, this can go. */
#define YYFAIL goto yyerrlab
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
+#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
{ \
#define YYERRCODE 256
-/* YYLEX -- calling `yylex' with the right arguments. */
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+ are run).
+
+ When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+ first token. By default, to implement support for ranges, extend
+ its range to the last symbol. */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Last) \
+ Current.last_line = Last.last_line; \
+ Current.last_column = Last.last_column;
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
#if YYPURE
# if YYLSP_NEEDED
#endif /* !YYPURE */
-/* If nonreentrant, generate the variables here. */
-
-#if !YYPURE
-/* The lookahead symbol. */
-int yychar;
-
-/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;
-
-# if YYLSP_NEEDED
-/* Location data for the lookahead symbol. */
-YYLTYPE yylloc;
-# endif
-
-/* Number of parse errors so far. */
-int yynerrs;
-#endif /* !YYPURE */
-
-
/* Enable debugging if requested. */
#if YYDEBUG
# define YYDPRINTF(Args) \
# endif
#endif
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+ variables are global, or local to YYPARSE. */
+
+#define _YY_DECL_VARIABLES \
+/* The lookahead symbol. */ \
+int yychar; \
+ \
+/* The semantic value of the lookahead symbol. */ \
+YYSTYPE yylval; \
+ \
+/* Number of parse errors so far. */ \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES \
+_YY_DECL_VARIABLES \
+ \
+/* Location data for the lookahead symbol. */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES \
+_YY_DECL_VARIABLES
+#endif
+
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
int
yyparse (YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
{
+ /* If reentrant, generate the variables here. */
+#if YYPURE
+ YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
register int yystate;
register int yyn;
/* Number of tokens to shift before error messages enabled. */
int yystacksize = YYINITDEPTH;
int yyfree_stacks = 0;
-#if YYPURE
- int yychar;
- YYSTYPE yylval;
- int yynerrs;
-# if YYLSP_NEEDED
- YYLTYPE yylloc;
-# endif
-#endif /* !YYPURE */
-
/* The variables used to return semantic value and location from the
action routines. */
int size = yyssp - yyss + 1;
#ifdef yyoverflow
- /* Each stack pointer address is followed by the size of
- the data in use in that stack, in bytes. */
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. */
# if YYLSP_NEEDED
/* This used to be a conditional around just the two extra args,
but that might be undefined if yyoverflow is a macro. */
yylen = yyr2[yyn];
/* If YYLEN is nonzero, implement the default value of the action:
- `{dollar}{dollar} = {dollar}1'.
+ `$$ = $1'.
Otherwise, the following line sets YYVAL to the semantic value of
the lookahead token. This behavior is undocumented and Bison
unconditionally makes the parser a bit smaller, and it avoids a
GCC warning that YYVAL may be used uninitialized. */
yyval = yyvsp[1-yylen];
+
#if YYLSP_NEEDED
- /* Implement default location. If the rhs is empty, extend YYLOC to
- YYLLOC, which corresponds to the current token, otherwise
- implement `@{dollar} = Starts at @1, ends at @YYLEN'. */
- if (yylen > 0)
- {
- yyloc = yylsp[1-yylen];
- yyloc.last_line = yylsp[0].last_line;
- yyloc.last_column = yylsp[0].last_column;
- }
- else
- {
- yyloc.last_line = yylsp[0].last_line;
- yyloc.last_column = yylsp[0].last_column;
- yyloc.text = 0;
- }
+ /* Similarly for the default location. Let the user run additional
+ commands if for instance locations are ranges. */
+ yyloc = yylsp[1-yylen];
+ YYLLOC_DEFAULT (yyloc, yylsp[0]);
#endif
#if YYDEBUG
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
}
#endif
-$ /* The action file replaces this line marked with this dollarsign. */
+%% actions /* The action file replaces this line. */
#line
\f
yyvsp -= yylen;
count = 0;
/* Start X at -yyn if nec to avoid negative indexes in yycheck. */
for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof (yytname) / sizeof (char *)); x++)
+ x < (int) (sizeof (yytname) / sizeof (char *)); x++)
if (yycheck[x + yyn] == x)
size += strlen (yytname[x]) + 15, count++;
size += strlen ("parse error, unexpected `") + 1;
{
count = 0;
for (x = (yyn < 0 ? -yyn : 0);
- x < (sizeof (yytname) / sizeof (char *)); x++)
+ x < (int) (sizeof (yytname) / sizeof (char *)); x++)
if (yycheck[x + yyn] == x)
{
strcat (msg, count == 0 ? ", expecting `" : " or `");