X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/a79986b830496018e87d8e122d2938d237e93a8d..fab5b110fb6f6ce81a10818537f491b0fa524ba5:/src/bison.simple diff --git a/src/bison.simple b/src/bison.simple index 0e121d22..0482a0ea 100644 --- a/src/bison.simple +++ b/src/bison.simple @@ -1,7 +1,8 @@ +%%{section} %%{body} %%".c" %%{yacc} /* -*- C -*- */ -/* A Bison parser, made from %%filename - by GNU bison %%version. */ +/* 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. @@ -35,14 +36,31 @@ #define YYBISON 1 /* Pure parsers. */ -#define YYPURE %%pure +#define YYPURE %%{pure} /* Using locations. */ -#define YYLSP_NEEDED %%locations-flag +#define YYLSP_NEEDED %%{locations-flag} + +/* If NAME_PREFIX is specified 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 +#if YYLSP_NEEDED +# define yylloc %%{prefix}lloc +#endif + + +/* Copy the user declarations. */ +%%{prologue} /* Enabling traces. */ #ifndef YYDEBUG -# define YYDEBUG %%debug +# define YYDEBUG %%{debug} #endif /* Enabling verbose error messages. */ @@ -50,21 +68,11 @@ # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else -# define YYERROR_VERBOSE %%error-verbose +# define YYERROR_VERBOSE %%{error-verbose} #endif -/* 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 - #ifndef YYSTYPE -typedef %%stype yystype; +typedef %%{stype} yystype; # define YYSTYPE yystype #endif @@ -76,15 +84,11 @@ typedef struct yyltype int last_line; int last_column; } yyltype; -# define YYLTYPE %%ltype +# define YYLTYPE %%{ltype} #endif -/* Copy the user declarations. */ -%%prologue - -#line %%line "%%skeleton" - -#include +/* Line %%{skeleton-line} of %%{skeleton}. */ +#line %%{line} "%%{parser-file-name}" /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local @@ -93,32 +97,28 @@ typedef struct yyltype define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -#if ! defined (yyoverflow) || YYERROR_VERBOSE +#ifdef __cplusplus +# define YYSTD(x) std::x +#else +# define YYSTD(x) x +#endif + +#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE) /* The parser invokes alloca or malloc; define the necessary symbols. */ # if YYSTACK_USE_ALLOCA # define YYSTACK_ALLOC alloca -# define YYSIZE_T size_t +# define YYSIZE_T YYSTD (size_t) # else # ifndef YYSTACK_USE_ALLOCA # if defined (alloca) || defined (_ALLOCA_H) # define YYSTACK_ALLOC alloca -# define YYSIZE_T size_t +# define YYSIZE_T YYSTD (size_t) # else -# if defined (__GNUC__) || defined (_AIX) || defined (__hpux) +# ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # endif -# ifndef __GNUC__ -# ifdef _AIX - # pragma alloca -# endif -# if defined (__sgi) || defined (__sparc__) || defined (__sparc) || defined (__sun) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSTACK_ALLOC alloca -# define YYSIZE_T size_t -# endif -# endif # endif # endif # endif @@ -130,16 +130,14 @@ typedef struct yyltype # ifdef __cplusplus # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T std::size_t -# define YYSTACK_ALLOC std::malloc -# define YYSTACK_FREE std::free # else # ifdef __STDC__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # endif -# define YYSTACK_ALLOC malloc -# define YYSTACK_FREE free # endif +# define YYSTACK_ALLOC YYSTD (malloc) +# define YYSTACK_FREE YYSTD (free) # endif /* A type that is properly aligned for any stack member. */ @@ -187,70 +185,78 @@ union yyalloc #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ /* 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. */ +%%{tokendef} + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL %%{final} +#define YYFLAG %%{flag} +#define YYLAST %%{last} + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS %%{ntokens} +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS %%{nnts} +/* YYNRULES -- Number of rules. */ +#define YYNRULES %%{nrules} +/* YYNRULES -- Number of states. */ +#define YYNSTATES %%{nstates} +#define YYMAXUTOK %%{maxtok} + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYTRANSLATE(x) ((unsigned)(x) <= %%{maxtok} ? yytranslate[x] : %%{nsym}) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const char yytranslate[] = { - %%translate + %%{translate} }; #if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ static const short yyprhs[] = { - %%prhs + %%{prhs} }; +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short yyrhs[] = { - %%rhs + %%{rhs} }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const short yyrline[] = { - %%rline + %%{rline} }; #endif -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ +#if (YYDEBUG) || YYERROR_VERBOSE +/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - %%tname + %%{tname} }; #endif /* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX. */ static const short yytoknum[] = { - %%toknum + %%{toknum} }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const short yyr1[] = { - %%r1 + %%{r1} }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const short yyr2[] = { - %%r2 + %%{r2} }; /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE @@ -258,32 +264,39 @@ static const short yyr2[] = error. */ static const short yydefact[] = { - %%defact + %%{defact} }; +/* YYPGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { - %%defgoto + %%{defgoto} }; +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const short yypact[] = { - %%pact + %%{pact} }; +/* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { - %%pgoto + %%{pgoto} }; +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. */ static const short yytable[] = { - %%table + %%{table} }; static const short yycheck[] = { - %%check + %%{check} }; @@ -330,14 +343,14 @@ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ - yylval = (Value); \ + yylval = (Value); \ yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ { \ - yyerror ("syntax error: cannot back up"); \ + yyerror ("syntax error: cannot back up"); \ YYERROR; \ } \ while (0) @@ -384,13 +397,11 @@ while (0) # ifndef YYFPRINTF # ifdef __cplusplus # include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF std::fprintf -# define YYSTDERR std::stderr # else # include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# define YYSTDERR stderr # endif +# define YYFPRINTF YYSTD (fprintf) +# define YYSTDERR YYSTD (stderr) # endif # define YYDPRINTF(Args) \ @@ -409,7 +420,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -# define YYINITDEPTH %%initdepth +# define YYINITDEPTH %%{initdepth} #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only @@ -424,7 +435,7 @@ int yydebug; #endif #ifndef YYMAXDEPTH -# define YYMAXDEPTH %%maxdepth +# define YYMAXDEPTH %%{maxdepth} #endif @@ -511,8 +522,6 @@ yystpcpy (yydest, yysrc) -#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 *. It should actually point to an object. @@ -885,19 +894,21 @@ yyreduce: int yyi; YYFPRINTF (YYSTDERR, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); + yyn - 1, yyrline[yyn]); /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) + for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++) YYFPRINTF (YYSTDERR, "%s ", yytname[yyrhs[yyi]]); YYFPRINTF (YYSTDERR, " -> %s\n", yytname[yyr1[yyn]]); } #endif switch (yyn) { -%%actions + %%{actions} } -#line %%line "%%skeleton" + +/* Line %%{skeleton-line} of %%{skeleton}. */ +#line %%{line} "%%{parser-file-name}" yyvsp -= yylen; yyssp -= yylen; @@ -927,11 +938,11 @@ yyreduce: yyn = yyr1[yyn]; - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else - yystate = yydefgoto[yyn - YYNTBASE]; + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; @@ -1128,4 +1139,4 @@ yyreturn: return yyresult; } -%%epilogue +%%{epilogue}