mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
* src/bison.simple: Update and add '%%' directives.
This commit is contained in:
@@ -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
|
||||
|
||||
281
src/bison.simple
281
src/bison.simple
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user