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