X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/da9abf4366d824a23da3d2416856e9a482794eb1..a8289c62dbd4a28b4c4e55086b2ae47cdbaf73f4:/src/bison.simple diff --git a/src/bison.simple b/src/bison.simple index aee33e27..2da7f273 100644 --- a/src/bison.simple +++ b/src/bison.simple @@ -1,9 +1,10 @@ -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line -/* This file comes from bison-@bison_version@. */ +/* -*- C -*- */ + +/* A Bison parser, made from %%filename + by GNU bison %%version. */ /* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + Copyright 1984, 1989, 1990, 2000, 2001 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 @@ -30,16 +31,24 @@ It was written by Richard Stallman by simplifying the hairy parser used when %semantic_parser is specified. */ +#include + +#ifndef __cplusplus +# ifndef __STDC__ +# define const +# endif +#endif + #ifndef YYSTACK_USE_ALLOCA # ifdef alloca -# define YYSTACK_USE_ALLOCA +# define YYSTACK_USE_ALLOCA 1 # else /* alloca not defined */ # ifdef __GNUC__ -# define YYSTACK_USE_ALLOCA +# define YYSTACK_USE_ALLOCA 1 # define alloca __builtin_alloca # else /* not GNU C. */ # if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -# define YYSTACK_USE_ALLOCA +# define YYSTACK_USE_ALLOCA 1 # include # else /* not sparc */ /* We think this test detects Watcom and Microsoft C. */ @@ -57,13 +66,13 @@ namespace. So I turned it off. rms, 2 May 1997. */ /* #include */ #pragma alloca -# define YYSTACK_USE_ALLOCA +# define YYSTACK_USE_ALLOCA 1 # else /* not MSDOS, or __TURBOC__, or _AIX */ # if 0 /* haible@ilog.fr says this works for HPUX 9.05 and up, and on HPUX 10. Eventually we can turn this on. */ # ifdef __hpux -# define YYSTACK_USE_ALLOCA +# define YYSTACK_USE_ALLOCA 1 # define alloca __builtin_alloca # endif /* __hpux */ # endif @@ -74,41 +83,168 @@ # endif /* alloca not defined */ #endif /* YYSTACK_USE_ALLOCA not defined */ -#ifdef YYSTACK_USE_ALLOCA +#if YYSTACK_USE_ALLOCA # define YYSTACK_ALLOC alloca #else # 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 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) \ + +#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) @@ -116,63 +252,58 @@ while (0) #define YYTERROR 1 #define YYERRCODE 256 -#ifndef YYPURE -# define YYLEX yylex () +/* 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, Rhs, N) \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; #endif -#ifdef YYPURE -# ifdef YYLSP_NEEDED +/* 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 */ -#endif - -/* If nonreentrant, generate the variables here. */ - -#ifndef YYPURE -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; - -# ifdef YYLSP_NEEDED -/* Location data for the lookahead symbol. */ -YYLTYPE yylloc; -# endif - -/* Number of parse errors so far. */ -int yynerrs; -#endif /* !YYPURE */ +#else /* !YYPURE */ +# 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 @@ -182,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 @@ -193,43 +326,31 @@ int yydebug; #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ # define __yy_memcpy(To, From, Count) __builtin_memcpy (To, From, Count) #else /* not GNU C or C++ */ -# ifndef __cplusplus /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void +# ifndef __cplusplus __yy_memcpy (to, from, count) char *to; - char *from; + const char *from; unsigned int count; -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - # else /* __cplusplus */ - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *to, char *from, unsigned int count) +__yy_memcpy (char *to, const char *from, unsigned int count) +# endif { + register const char *f = from; register char *t = to; - register char *f = from; register int i = count; while (i-- > 0) *t++ = *f++; } - -# endif #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 *. @@ -253,16 +374,51 @@ __yy_memcpy (char *to, 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 +/* 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 (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. */ @@ -288,14 +444,14 @@ yyparse (YYPARSE_PARAM_ARG) YYSTYPE *yyvs = yyvsa; register YYSTYPE *yyvsp; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED /* The location stack. */ YYLTYPE yylsa[YYINITDEPTH]; YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; #endif -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED # define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else # define YYPOPSTACK (yyvsp--, yyssp--) @@ -304,20 +460,10 @@ yyparse (YYPARSE_PARAM_ARG) int yystacksize = YYINITDEPTH; int yyfree_stacks = 0; -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -# ifdef YYLSP_NEEDED - YYLTYPE yylloc; -# endif -#endif - - /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -# ifdef YYLSP_NEEDED +# if YYLSP_NEEDED YYLTYPE yyloc; # endif @@ -329,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 @@ -339,11 +485,10 @@ yyparse (YYPARSE_PARAM_ARG) yyssp = yyss - 1; yyvsp = yyvs; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp = yyls; #endif - /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ @@ -360,7 +505,7 @@ yynewstate: */ YYSTYPE *yyvs1 = yyvs; short *yyss1 = yyss; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED YYLTYPE *yyls1 = yyls; #endif @@ -368,9 +513,9 @@ yynewstate: 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. */ -# ifdef YYLSP_NEEDED + /* 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. */ yyoverflow ("parser stack overflow", @@ -386,19 +531,19 @@ yynewstate: # endif yyss = yyss1; yyvs = yyvs1; -# ifdef YYLSP_NEEDED +# if YYLSP_NEEDED yyls = yyls1; # endif #else /* no yyoverflow */ /* Extend the stack our own way. */ if (yystacksize >= YYMAXDEPTH) { - yyerror ("parser stack overflow"); + %%yyerror ("parser stack overflow"); if (yyfree_stacks) { free (yyss); free (yyvs); -# ifdef YYLSP_NEEDED +# if YYLSP_NEEDED free (yyls); # endif } @@ -407,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)); @@ -416,7 +561,7 @@ yynewstate: yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * (unsigned int) sizeof (*yyvsp)); -# ifdef YYLSP_NEEDED +# if YYLSP_NEEDED yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); __yy_memcpy ((char *)yyls, (char *)yyls1, size * (unsigned int) sizeof (*yylsp)); @@ -425,7 +570,7 @@ yynewstate: yyssp = yyss + size - 1; yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp = yyls + size - 1; #endif @@ -439,7 +584,6 @@ yynewstate: goto yybackup; - /*-----------. | yybackup. | `-----------*/ @@ -460,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"); } @@ -522,14 +666,14 @@ 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; -#ifdef YYLSP_NEEDED + *++yyvsp = %%yylval; +#if YYLSP_NEEDED *++yylsp = yylloc; #endif @@ -560,7 +704,7 @@ yyreduce: 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 @@ -568,28 +712,18 @@ yyreduce: unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; -#ifdef 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; - } + +#if YYLSP_NEEDED + /* 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 - yylen), yylen); #endif #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; @@ -602,17 +736,20 @@ yyreduce: fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); } #endif -$ /* The action file replaces this line marked with this dollarsign. */ -#line + switch (yyn) + { + %%action /* The action file replaces this line. */ + } +#line %%line "%%filename" yyvsp -= yylen; yyssp -= yylen; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp -= yylen; #endif #if YYDEBUG - if (yydebug) + if (%%yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "state stack now"); @@ -623,7 +760,7 @@ $ /* The action file replaces this line marked with this dollarsign. */ #endif *++yyvsp = yyval; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED *++yylsp = yyloc; #endif @@ -649,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,40 +800,40 @@ yyerrlab: 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; - 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 < (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; @@ -711,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 @@ -751,12 +888,12 @@ yyerrpop: YYABORT; yyvsp--; yystate = *--yyssp; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp--; #endif #if YYDEBUG - if (yydebug) + if (%%yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "Error: state stack now"); @@ -794,8 +931,8 @@ yyerrhandle: YYDPRINTF ((stderr, "Shifting error token, ")); - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED + *++yyvsp = %%yylval; +#if YYLSP_NEEDED *++yylsp = yylloc; #endif @@ -811,7 +948,7 @@ yyacceptlab: { free (yyss); free (yyvs); -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED free (yyls); #endif } @@ -826,7 +963,7 @@ yyabortlab: { free (yyss); free (yyvs); -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED free (yyls); #endif }