-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line
+/* -*- C -*- */
+
+/* A Bison parser, made from %%filename
+ by GNU bison %%version. */
+
/* Skeleton output parser for bison,
Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */
+#include <stdio.h>
+
+/* If name_prefix is specify substitute the variables and functions
+ names. */
+#define yyparse %%prefix##parse
+#define yylex %%prefix##lex
+#define yyerror %%prefix##error
+#define yylval %%prefix##lval
+#define yychar %%prefix##char
+#define yydebug %%prefix##debug
+#define yynerrs %%prefix##nerrs
+
+/* Copy the user declarations. */
+#line %%input_line "%%filename"
+%%prologue
+
+#line %%line "%%skeleton"
+#ifndef __cplusplus
+# ifndef __STDC__
+# define const
+# endif
+#endif
+
#ifndef YYSTACK_USE_ALLOCA
# ifdef alloca
# define YYSTACK_USE_ALLOCA 1
# endif /* alloca not defined */
#endif /* YYSTACK_USE_ALLOCA not defined */
+#ifndef YYSTACK_USE_ALLOCA
+# define YYSTACK_USE_ALLOCA 0
+#endif
+
#if YYSTACK_USE_ALLOCA
# define YYSTACK_ALLOC alloca
#else
# define YYSTACK_ALLOC malloc
#endif
+#define YYBISON 1 /* Identify Bison output. */
+#define YYPURE %%pure /* Identify pure parsers. */
+
+#ifndef YYDEBUG
+# define YYDEBUG %%debug
+#endif
+
+#line %%input_line "%%filename"
+#ifndef YYSTYPE
+typedef %%stype YYSTYPE;
+#endif
+
+#ifndef YYLTYPE
+typedef struct yyltype
+{
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+} yyltype;
+# define YYLTYPE %%ltype
+#endif
+
+#ifndef YYERROR_VERBOSE
+# define YYERROR_VERBOSE %%verbose
+#endif
+
+/* Tokens. */
+%%tokendef
+
+#define YYFINAL %%final
+#define YYFLAG %%flag
+#define YYNTBASE %%ntbase
+#define YYLAST %%last
+
+#define YYNTOKENS %%ntokens
+#define YYNNTS %%nnts
+#define YYNRULES %%nrules
+#define YYNSTATES %%nstates
+#define YYMAXUTOK %%maxtok
+
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
+#define YYTRANSLATE(x) ((unsigned)(x) <= %%maxtok ? yytranslate[x] : %%nsym)
+
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const char yytranslate[] =
+{
+ %%translate
+};
+
+#if YYDEBUG
+static const short yyprhs[] =
+{
+ %%prhs
+};
+
+static const short yyrhs[] =
+{
+ %%rhs
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+ %%rline
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+ %%tname
+};
+#endif
+
+/* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX. */
+static const short yytoknum[] =
+{
+ %%toknum
+};
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+ %%r1
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+ %%r2
+};
+
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+ doesn't specify something else to do. Zero means the default is an
+ error. */
+static const short yydefact[] =
+{
+ %%defact
+};
+
+static const short yydefgoto[] =
+{
+ %%defgoto
+};
+
+static const short yypact[] =
+{
+ %%pact
+};
+
+static const short yypgoto[] =
+{
+ %%pgoto
+};
+
+static const short yytable[] =
+{
+ %%table
+};
+
+static const short yycheck[] =
+{
+ %%check
+};
+
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
+
#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
+#define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
+
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
+
#define YYFAIL goto yyerrlab
+
#define YYRECOVERING() (!!yyerrstatus)
+
#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
{ \
yychar = (Token); \
- yylval = (Value); \
+ yylval = (Value); \
yychar1 = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ \
- yyerror ("syntax error: cannot back up"); \
+ yyerror ("syntax error: cannot back up"); \
YYERROR; \
} \
while (0)
#define YYTERROR 1
#define YYERRCODE 256
-
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
are run).
Current.last_column = Rhs[N].last_column;
#endif
+/* Definition of YYLSP_NEEDED. */
+#define YYLSP_NEEDED %%locations_flag
/* YYLEX -- calling `yylex' with the right arguments. */
# define YYLEX yylex ()
#endif /* !YYPURE */
-
/* Enable debugging if requested. */
#if YYDEBUG
# define YYDPRINTF(Args) \
/* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
+# define YYINITDEPTH %%initdepth
#endif
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
#endif
#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
+# define YYMAXDEPTH %%maxdepth
#endif
+
\f
+
/* Define __yy_memcpy. Note that the size argument
should be passed with type unsigned int, because that is what the non-GCC
definitions require. With GCC, __builtin_memcpy takes an arg
while (i-- > 0)
*t++ = *f++;
}
-
#endif
+
\f
-#line
+
+#line %%line "%%skeleton"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
/* The lookahead symbol. */ \
int yychar; \
\
-/* The semantic value of the lookahead symbol. */ \
+/* The semantic value of the lookahead symbol. */ \
YYSTYPE yylval; \
\
/* Number of parse errors so far. */ \
_YY_DECL_VARIABLES
#endif
-
-/* If nonreentrant, generate the variables here. */
+/* If nonreentrant, generate the variables here. */
#if !YYPURE
YY_DECL_VARIABLES
yyparse (YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
{
- /* If reentrant, generate the variables here. */
+ /* If reentrant, generate the variables here. */
#if YYPURE
YY_DECL_VARIABLES
#endif /* !YYPURE */
Refer to the stacks thru separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
- /* The state stack. */
+ /* The state stack. */
short yyssa[YYINITDEPTH];
short *yyss = yyssa;
register short *yyssp;
int yystacksize = YYINITDEPTH;
int yyfree_stacks = 0;
-
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
# endif
/* When reducing, the number of symbols on the RHS of the reduced
- rule. */
+ rule. */
int yylen;
YYDPRINTF ((stderr, "Starting parse\n"));
so that they stay on the same level as the state stack.
The wasted elements are never initialized. */
- yyssp = yyss - 1;
+ yyssp = yyss;
yyvsp = yyvs;
#if YYLSP_NEEDED
yylsp = yyls;
#endif
-
+ goto yysetstate;
/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate. |
`------------------------------------------------------------*/
-yynewstate:
+ yynewstate:
/* In all cases, when you get here, the value and location stacks
have just been pushed. so pushing a state here evens the stacks.
*/
- *++yyssp = yystate;
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
if (yyssp >= yyss + yystacksize - 1)
{
yystacksize *= 2;
if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH;
-# ifndef YYSTACK_USE_ALLOCA
+# if !YYSTACK_USE_ALLOCA
yyfree_stacks = 1;
# endif
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
goto yybackup;
-
/*-----------.
| yybackup. |
`-----------*/
yychar = YYLEX;
}
- /* Convert token to internal form (in yychar1) for indexing tables with */
+ /* Convert token to internal form (in yychar1) for indexing tables with. */
- if (yychar <= 0) /* This means end of input. */
+ if (yychar <= 0) /* This means end of input. */
{
yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
+ yychar = YYEOF; /* Don't call YYLEX any more. */
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
}
#endif
-%% actions /* The action file replaces this line. */
-#line
+ switch (yyn)
+ {
+ %%action
+ }
+#line %%line "%%skeleton"
\f
yyvsp -= yylen;
yyssp -= yylen;
{
++yynerrs;
-#ifdef YYERROR_VERBOSE
+#if YYERROR_VERBOSE
yyn = yypact[yystate];
if (yyn > YYFLAG && yyn < YYLAST)
{
count = 0;
for (x = (yyn < 0 ? -yyn : 0);
- x < (int) (sizeof (yytname) / sizeof (char *)); x++)
+ x < (int) (sizeof (yytname) / sizeof (char *)); x++)
if (yycheck[x + yyn] == x)
{
- strcat (msg, count == 0 ? ", expecting `" : " or `");
- strcat (msg, yytname[x]);
+ strcat (msg, count == 0 ? ", expecting `" : " or `");
+ strcat (msg, yytname[x]);
strcat (msg, "'");
count++;
}
yyerror (msg);
free (msg);
}
- else
+ else
yyerror ("parse error; also virtual memory exceeded");
- }
+ }
else
#endif /* YYERROR_VERBOSE */
- yyerror ("parse error");
+ yyerror ("parse error");
}
goto yyerrlab1;
-/*--------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action |
-`--------------------------------------------------*/
+/*----------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action. |
+`----------------------------------------------------*/
yyerrlab1:
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
error, discard it. */
- /* return failure if at end of input */
+ /* Return failure if at end of input. */
if (yychar == YYEOF)
YYABORT;
YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
/* Else will try to reuse lookahead token after shifting the error
token. */
- yyerrstatus = 3; /* Each real token shifted decrements this */
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
goto yyerrhandle;
/*---------------------------------------------------------------.
| yyerrpop -- pop the current state because it cannot handle the |
-| error token |
+| error token. |
`---------------------------------------------------------------*/
yyerrpop:
if (yyssp == yyss)
}
return 1;
}
+
+#line %%input_line "%%filename"
+%%epilogue