* src/bison.simple: Update and add '%%' directives.

This commit is contained in:
Robert Anisko
2001-08-25 15:21:05 +00:00
parent b6610515d5
commit a8289c62db
2 changed files with 215 additions and 70 deletions

View File

@@ -1,3 +1,7 @@
2001-08-25 Robert Anisko <robert.anisko@epita.fr>
* src/bison.simple: Update and add '%%' directives.
2001-08-25 Robert Anisko <robert.anisko@epita.fr>
* src/reader.c (reader): Remove calls to 'output_headers' and

View File

@@ -1,5 +1,8 @@
/* -*-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.
@@ -28,6 +31,14 @@
It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */
#include <stdio.h>
#ifndef __cplusplus
# ifndef __STDC__
# define const
# endif
#endif
#ifndef YYSTACK_USE_ALLOCA
# ifdef alloca
# define YYSTACK_USE_ALLOCA 1
@@ -78,31 +89,162 @@
# define YYSTACK_ALLOC malloc
#endif
#define YYBISON 1 /* Identify Bison output. */
#define YYPURE %%pure /* Identify pure parsers. */
#ifndef YYDEBUG
# define YYDEBUG %%debug
#endif
#ifndef YYSTYPE
# define YYSTYPE %%stype
#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
/* YYTNAME[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 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) \
if (%%yychar == YYEMPTY && yylen == 1) \
{ \
yychar = (Token); \
yylval = (Value); \
yychar1 = YYTRANSLATE (yychar); \
%%yychar = (Token); \
%%yylval = (Value); \
yychar1 = YYTRANSLATE (%%yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ \
yyerror ("syntax error: cannot back up"); \
%%yyerror ("syntax error: cannot back up"); \
YYERROR; \
} \
while (0)
@@ -110,7 +252,6 @@ while (0)
#define YYTERROR 1
#define YYERRCODE 256
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
are run).
@@ -124,47 +265,45 @@ while (0)
Current.last_column = Rhs[N].last_column;
#endif
/* YYLEX -- calling `yylex' with the right arguments. */
#if YYPURE
# if YYLSP_NEEDED
# ifdef YYLEX_PARAM
# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
# define YYLEX %%yylex (&%%yylval, &yylloc, YYLEX_PARAM)
# else
# define YYLEX yylex (&yylval, &yylloc)
# define YYLEX %%yylex (&%%yylval, &yylloc)
# endif
# else /* !YYLSP_NEEDED */
# ifdef YYLEX_PARAM
# define YYLEX yylex (&yylval, YYLEX_PARAM)
# define YYLEX %%yylex (&%%yylval, YYLEX_PARAM)
# else
# define YYLEX yylex (&yylval)
# define YYLEX %%yylex (&%%yylval)
# endif
# endif /* !YYLSP_NEEDED */
#else /* !YYPURE */
# define YYLEX yylex ()
# define YYLEX %%yylex ()
#endif /* !YYPURE */
/* Enable debugging if requested. */
#if YYDEBUG
# define YYDPRINTF(Args) \
do { \
if (yydebug) \
if (%%yydebug) \
fprintf Args; \
} while (0)
/* Nonzero means print parse trace. [The following comment makes no
sense to me. Could someone clarify it? --akim] Since this is
uninitialized, it does not stop multiple parsers from coexisting.
*/
int yydebug;
int %%yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
#endif /* !YYDEBUG */
/* 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
@@ -174,9 +313,11 @@ int yydebug;
#endif
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
# define YYMAXDEPTH %%maxdepth
#endif
/* 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
@@ -205,10 +346,11 @@ __yy_memcpy (char *to, const char *from, unsigned int count)
while (i-- > 0)
*t++ = *f++;
}
#endif
#line
#line %%line "%%filename"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -232,9 +374,9 @@ __yy_memcpy (char *to, const char *from, unsigned int count)
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
# ifdef YYPARSE_PARAM
int yyparse (void *);
int %%yyparse (void *);
# else
int yyparse (void);
int %%yyparse (void);
# endif
#endif
@@ -243,13 +385,13 @@ int yyparse (void);
#define _YY_DECL_VARIABLES \
/* The lookahead symbol. */ \
int yychar; \
int %%yychar; \
\
/* The semantic value of the lookahead symbol. */ \
YYSTYPE yylval; \
YYSTYPE %%yylval; \
\
/* Number of parse errors so far. */ \
int yynerrs;
int %%yynerrs;
#if YYLSP_NEEDED
# define YY_DECL_VARIABLES \
@@ -262,7 +404,6 @@ YYLTYPE yylloc;
_YY_DECL_VARIABLES
#endif
/* If nonreentrant, generate the variables here. */
#if !YYPURE
@@ -270,7 +411,7 @@ YY_DECL_VARIABLES
#endif /* !YYPURE */
int
yyparse (YYPARSE_PARAM_ARG)
%%yyparse (YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
{
/* If reentrant, generate the variables here. */
@@ -319,7 +460,6 @@ yyparse (YYPARSE_PARAM_ARG)
int yystacksize = YYINITDEPTH;
int yyfree_stacks = 0;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
@@ -335,8 +475,8 @@ yyparse (YYPARSE_PARAM_ARG)
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
%%yynerrs = 0;
%%yychar = YYEMPTY; /* Cause a token to be read. */
/* Initialize stack pointers.
Waste one element of value and location stack
@@ -349,7 +489,6 @@ yyparse (YYPARSE_PARAM_ARG)
yylsp = yyls;
#endif
/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate. |
`------------------------------------------------------------*/
@@ -399,7 +538,7 @@ yynewstate:
/* Extend the stack our own way. */
if (yystacksize >= YYMAXDEPTH)
{
yyerror ("parser stack overflow");
%%yyerror ("parser stack overflow");
if (yyfree_stacks)
{
free (yyss);
@@ -413,7 +552,7 @@ yynewstate:
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));
@@ -445,7 +584,6 @@ yynewstate:
goto yybackup;
/*-----------.
| yybackup. |
`-----------*/
@@ -466,35 +604,35 @@ yybackup:
/* yychar is either YYEMPTY or YYEOF
or a valid token in external form. */
if (yychar == YYEMPTY)
if (%%yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
%%yychar = YYLEX;
}
/* 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"));
}
else
{
yychar1 = YYTRANSLATE (yychar);
yychar1 = YYTRANSLATE (%%yychar);
#if YYDEBUG
/* We have to keep this `#if YYDEBUG', since we use variables
which are defined only if `YYDEBUG' is set. */
if (yydebug)
if (%%yydebug)
{
fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
fprintf (stderr, "Next token is %d (%s", %%yychar, yytname[yychar1]);
/* Give the individual parser a way to print the precise
meaning of a token, for further debugging info. */
# ifdef YYPRINT
YYPRINT (stderr, yychar, yylval);
YYPRINT (stderr, %%yychar, %%yylval);
# endif
fprintf (stderr, ")\n");
}
@@ -528,13 +666,13 @@ yybackup:
YYACCEPT;
/* Shift the lookahead token. */
YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]));
YYDPRINTF ((stderr, "Shifting token %d (%s), ", %%yychar, yytname[yychar1]));
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
if (%%yychar != YYEOF)
%%yychar = YYEMPTY;
*++yyvsp = yylval;
*++yyvsp = %%yylval;
#if YYLSP_NEEDED
*++yylsp = yylloc;
#endif
@@ -585,7 +723,7 @@ yyreduce:
#if YYDEBUG
/* We have to keep this `#if YYDEBUG', since we use variables which
are defined only if `YYDEBUG' is set. */
if (yydebug)
if (%%yydebug)
{
int i;
@@ -598,8 +736,11 @@ yyreduce:
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
}
#endif
%% actions /* The action file replaces this line. */
#line
switch (yyn)
{
%%action /* The action file replaces this line. */
}
#line %%line "%%filename"
yyvsp -= yylen;
yyssp -= yylen;
@@ -608,7 +749,7 @@ yyreduce:
#endif
#if YYDEBUG
if (yydebug)
if (%%yydebug)
{
short *ssp1 = yyss - 1;
fprintf (stderr, "state stack now");
@@ -645,9 +786,9 @@ yyerrlab:
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
++yynerrs;
++%%yynerrs;
#ifdef YYERROR_VERBOSE
#if YYERROR_VERBOSE
yyn = yypact[yystate];
if (yyn > YYFLAG && yyn < YYLAST)
@@ -663,36 +804,36 @@ yyerrlab:
if (yycheck[x + yyn] == x)
size += strlen (yytname[x]) + 15, count++;
size += strlen ("parse error, unexpected `") + 1;
size += strlen (yytname[YYTRANSLATE (yychar)]);
size += strlen (yytname[YYTRANSLATE (%%yychar)]);
msg = (char *) malloc (size);
if (msg != 0)
{
strcpy (msg, "parse error, unexpected `");
strcat (msg, yytname[YYTRANSLATE (yychar)]);
strcat (msg, yytname[YYTRANSLATE (%%yychar)]);
strcat (msg, "'");
if (count < 5)
{
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);
%%yyerror (msg);
free (msg);
}
else
yyerror ("parse error; also virtual memory exceeded");
}
else
%%yyerror ("parse error; also virtual memory exceeded");
}
else
#endif /* YYERROR_VERBOSE */
yyerror ("parse error");
%%yyerror ("parse error");
}
goto yyerrlab1;
@@ -707,11 +848,11 @@ yyerrlab1:
error, discard it. */
/* return failure if at end of input */
if (yychar == YYEOF)
if (%%yychar == YYEOF)
YYABORT;
YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
yychar, yytname[yychar1]));
yychar = YYEMPTY;
%%yychar, yytname[yychar1]));
%%yychar = YYEMPTY;
}
/* Else will try to reuse lookahead token after shifting the error
@@ -752,7 +893,7 @@ yyerrpop:
#endif
#if YYDEBUG
if (yydebug)
if (%%yydebug)
{
short *ssp1 = yyss - 1;
fprintf (stderr, "Error: state stack now");
@@ -790,7 +931,7 @@ yyerrhandle:
YYDPRINTF ((stderr, "Shifting error token, "));
*++yyvsp = yylval;
*++yyvsp = %%yylval;
#if YYLSP_NEEDED
*++yylsp = yylloc;
#endif