X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/d1a2daf76a5bac01d02a7d8b27fb4232412985a9..8850be4b1ca69c2d4269f4127fda58a1e0a00447:/src/bison.simple diff --git a/src/bison.simple b/src/bison.simple index 700a9edb..872ee38b 100644 --- a/src/bison.simple +++ b/src/bison.simple @@ -33,9 +33,21 @@ #include +/* 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. */ -%%definitions +#line %%input_line "%%filename" +%%prologue +#line %%line "%%skeleton" #ifndef __cplusplus # ifndef __STDC__ # define const @@ -86,10 +98,31 @@ # endif /* alloca not defined */ #endif /* YYSTACK_USE_ALLOCA not defined */ +#ifndef YYSTACK_USE_ALLOCA +# define YYSTACK_USE_ALLOCA 0 +#endif + +/* Realloc WHAT from SIZE to YYSTACKSIZE elements of TYPE. + If WHAT was malloc'ed (not the original automatic ARRAY), free it. */ #if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca +# define YYSTACK_REALLOC(Type, What, Array) \ +do { \ + Type *old = What; \ + What = (Type *) alloca (yystacksize * sizeof (Type)); \ + __yy_memcpy ((char *) What, (char *) old, \ + (size) * (unsigned int) sizeof (Type)); \ +} while (0) #else -# define YYSTACK_ALLOC malloc +# define YYSTACK_REALLOC(Type, What, Array) \ +do { \ + Type *old = What; \ + What = (Type *) malloc (yystacksize * sizeof (Type)); \ + __yy_memcpy ((char *) What, (char *) old, \ + (size) * (unsigned int) sizeof (Type)); \ + yyfree_stacks = 1; \ + if (old != Array) \ + free (old); \ +} while (0) #endif #define YYBISON 1 /* Identify Bison output. */ @@ -99,8 +132,10 @@ # define YYDEBUG %%debug #endif +#line %%input_line "%%filename" #ifndef YYSTYPE -# define YYSTYPE %%stype +typedef %%stype yystype; +# define YYSTYPE yystype #endif #ifndef YYLTYPE @@ -114,11 +149,13 @@ typedef struct yyltype # define YYLTYPE %%ltype #endif -#ifndef YYERROR_VERBOSE -# define YYERROR_VERBOSE %%verbose +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE #endif -/* Tokens. */ +#define YYERROR_VERBOSE %%error_verbose + +/* Tokens. */ %%tokendef #define YYFINAL %%final @@ -160,8 +197,8 @@ static const short yyrline[] = #endif #if YYDEBUG || YYERROR_VERBOSE -/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ -static const char* const yytname[] = +/* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ +static const char *const yytname[] = { %%tname }; @@ -219,7 +256,7 @@ static const short yycheck[] = }; #define yyerrok (yyerrstatus = 0) -#define yyclearin (%%yychar = YYEMPTY) +#define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 @@ -237,17 +274,17 @@ static const short yycheck[] = #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) @@ -268,38 +305,41 @@ while (0) Current.last_column = Rhs[N].last_column; #endif +/* Definition of YYLSP_NEEDED. */ +#define YYLSP_NEEDED %%locations_flag + /* 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 */ @@ -353,7 +393,7 @@ __yy_memcpy (char *to, const char *from, unsigned int count) -#line %%line "%%filename" +#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 *. @@ -377,9 +417,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 @@ -388,13 +428,13 @@ int %%yyparse (void); #define _YY_DECL_VARIABLES \ /* The lookahead symbol. */ \ -int %%yychar; \ +int yychar; \ \ -/* The semantic value of the lookahead symbol. */ \ -YYSTYPE %%yylval; \ +/* The semantic value of the lookahead symbol. */ \ +YYSTYPE yylval; \ \ /* Number of parse errors so far. */ \ -int %%yynerrs; +int yynerrs; #if YYLSP_NEEDED # define YY_DECL_VARIABLES \ @@ -407,17 +447,17 @@ YYLTYPE yylloc; _YY_DECL_VARIABLES #endif -/* If nonreentrant, generate the variables here. */ +/* 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 reentrant, generate the variables here. */ #if YYPURE YY_DECL_VARIABLES #endif /* !YYPURE */ @@ -431,13 +471,13 @@ int /* Three stacks and their tools: `yyss': related to states, - `yysv': related to semantic values, + `yyvs': related to semantic values, `yyls': related to locations. 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; @@ -471,15 +511,15 @@ int # endif /* When reducing, the number of symbols on the RHS of the reduced - rule. */ + rule. */ int yylen; YYDPRINTF ((stderr, "Starting parse\n")); 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 @@ -496,56 +536,54 @@ int /*------------------------------------------------------------. | 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++; -yysetstate: + yysetstate: *yyssp = yystate; if (yyssp >= yyss + yystacksize - 1) { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into memory. - */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#if YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - /* Get the current used size of the three stacks, in elements. */ 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. */ + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; + + /* 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", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); + YYLTYPE *yyls1 = yyls; + /* 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", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; # else - yyoverflow ("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -# endif - - yyss = yyss1; yyvs = yyvs1; -# if YYLSP_NEEDED - yyls = yyls1; + yyoverflow ("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); # endif + yyss = yyss1; + yyvs = yyvs1; + } #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); @@ -559,19 +597,11 @@ yysetstate: yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -# if !YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -# endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); + + YYSTACK_REALLOC (short, yyss, yyssa); + YYSTACK_REALLOC (YYSTYPE, yyvs, yyvsa); # if YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); + YYSTACK_REALLOC (YYLTYPE, yyls, yylsa); # endif #endif /* no yyoverflow */ @@ -611,35 +641,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 */ + /* 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"); } @@ -673,13 +703,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 @@ -730,7 +760,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; @@ -745,9 +775,9 @@ yyreduce: #endif switch (yyn) { - %%action /* The action file replaces this line. */ + %%action } -#line %%line "%%filename" +#line %%line "%%skeleton" yyvsp -= yylen; yyssp -= yylen; @@ -756,7 +786,7 @@ yyreduce: #endif #if YYDEBUG - if (%%yydebug) + if (yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "state stack now"); @@ -793,7 +823,7 @@ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { - ++%%yynerrs; + ++yynerrs; #if YYERROR_VERBOSE yyn = yypact[yystate]; @@ -805,67 +835,66 @@ yyerrlab: int x, count; count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); + /* Start X at -YYN if negative to avoid negative indexes in + YYCHECK. */ + for (x = yyn < 0 ? -yyn : 0; 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 ("parse error, unexpected ") + 1; + size += strlen (yytname[YYTRANSLATE (yychar)]); msg = (char *) malloc (size); if (msg != 0) { - strcpy (msg, "parse error, unexpected `"); - strcat (msg, yytname[YYTRANSLATE (%%yychar)]); - strcat (msg, "'"); + strcpy (msg, "parse error, unexpected "); + strcat (msg, yytname[YYTRANSLATE (yychar)]); if (count < 5) { count = 0; - for (x = (yyn < 0 ? -yyn : 0); + for (x = yyn < 0 ? -yyn : 0; x < (int) (sizeof (yytname) / sizeof (char *)); x++) if (yycheck[x + yyn] == x) { - strcat (msg, count == 0 ? ", expecting `" : " or `"); + 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"); + yyerror ("parse error; also virtual memory exhausted"); } 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 */ - if (%%yychar == YYEOF) + /* Return failure if at end of input. */ + 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 token. */ - yyerrstatus = 3; /* Each real token shifted decrements this */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ goto yyerrhandle; @@ -888,7 +917,7 @@ yyerrdefault: /*---------------------------------------------------------------. | yyerrpop -- pop the current state because it cannot handle the | -| error token | +| error token. | `---------------------------------------------------------------*/ yyerrpop: if (yyssp == yyss) @@ -900,7 +929,7 @@ yyerrpop: #endif #if YYDEBUG - if (%%yydebug) + if (yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "Error: state stack now"); @@ -938,7 +967,7 @@ yyerrhandle: YYDPRINTF ((stderr, "Shifting error token, ")); - *++yyvsp = %%yylval; + *++yyvsp = yylval; #if YYLSP_NEEDED *++yylsp = yylloc; #endif @@ -976,3 +1005,6 @@ yyabortlab: } return 1; } + +#line %%input_line "%%filename" +%%epilogue