# We do want M4 expansion after # for CPP macros.
m4_changecom()
m4_divert_push(0)dnl
-@output(b4_parser_file_name@)
+@output(b4_parser_file_name@)@
b4_copyright([Skeleton implementation for Bison's Yacc-like parsers in C],dnl '
[1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])[
/* Used to determine if this is the first time this instance has
been used. */
int yynew;
- };
+ };]b4_pure_if([], [[
-]b4_pull_if([b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
+static char yypstate_allocated = 0;]])b4_pull_if([
+
+b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
{
return yypull_parse (0]m4_ifset([b4_parse_param],
[[, ]b4_c_args(b4_parse_param)])[);
-}]b4_pure_if([], [[
-
-static char yypstate_allocated = 0;]])[
+}
]b4_c_function_def([[yypull_parse]], [[int]],
[[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [,
b4_parse_param]))[
{
int yystatus;
- yypstate *yyps_local;
-]b4_pure_if([[ int yychar;
- YYSTYPE yylval;
-]b4_locations_if([[ YYLTYPE yylloc;
-]])])[
+ yypstate *yyps_local;]b4_pure_if([[
+ int yychar;
+ YYSTYPE yylval;]b4_locations_if([[
+ YYLTYPE yylloc;]])])[
if (yyps == 0)
{
yyps_local = yypstate_new ();
if (yyps == 0)
yypstate_delete (yyps_local);
return yystatus;
-}
-]])[
+}]])[
+
/* Initialize the parser data structure. */
]b4_c_function_def([[yypstate_new]], [[yypstate *]])[
{
yypstate *yyps;]b4_pure_if([], [[
if (yypstate_allocated)
- {
- yyerror (]b4_yyerror_args[YY_("cannot allocate multiple impure push-parser instances"));
- return 0;
- }]])[
+ return 0;]])[
yyps = (yypstate *) malloc (sizeof *yyps);
if (!yyps)
return 0;
int yytoken;
/* The variables used to return semantic value and location from the
action routines. */
- YYSTYPE yyval;
-]b4_locations_if([[ YYLTYPE yyloc;
-]])[
+ YYSTYPE yyval;]b4_locations_if([[
+ YYLTYPE yyloc;]])[
+
#if YYERROR_VERBOSE
/* Buffer for error messages, and its allocated size. */
char yymsgbuf[128];
/* The number of symbols on the RHS of the reduced rule.
Keep to zero when no symbol should be popped. */
- int yylen = 0;
-]b4_push_if([[
+ int yylen = 0;]b4_push_if([[
+
if (!yyps->yynew)
{
yyn = yypact[yystate];
goto yyread_pushed_token;
- }
-]])[
+ }]])[
+
yytoken = 0;
yyss = yyssa;
- yyvs = yyvsa;
-]b4_locations_if([[ yyls = yylsa;
-]])[
+ yyvs = yyvsa;]b4_locations_if([[
+ yyls = yylsa;]])[
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
/* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
- {
-]b4_push_if([[ if (!yyps->yynew)
- {
-]b4_use_push_for_pull_if([],
-[[ YYDPRINTF ((stderr, "Return for a new token:\n"));
-]])[ yyresult = YYPUSH_MORE;
+ {]b4_push_if([[
+ if (!yyps->yynew)
+ {]b4_use_push_for_pull_if([], [[
+ YYDPRINTF ((stderr, "Return for a new token:\n"));]])[
+ yyresult = YYPUSH_MORE;
goto yypushreturn;
}
- yyps->yynew = 0;
-]b4_pure_if([], [[
+ yyps->yynew = 0;]b4_pure_if([], [[
/* Restoring the pushed token is only necessary for the first
yypush_parse invocation since subsequent invocations don't overwrite
it before jumping to yyread_pushed_token. */
yychar = yypushed_char;
- yylval = yypushed_val;
- ]b4_locations_if([[yylloc = yypushed_loc;
-]])])[
-yyread_pushed_token:
-]])[ YYDPRINTF ((stderr, "Reading a token: "));
-]b4_push_if([b4_pure_if([[ yychar = yypushed_char;
+ yylval = yypushed_val;]b4_locations_if([[
+ yylloc = yypushed_loc;]])])[
+yyread_pushed_token:]])[
+ YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[
+ yychar = yypushed_char;
if (yypushed_val)
- yylval = *yypushed_val;
-]b4_locations_if([[ if (yypushed_loc)
- yylloc = *yypushed_loc;
-]])])],
-[[ yychar = YYLEX;
-]])[ }
+ yylval = *yypushed_val;]b4_locations_if([[
+ if (yypushed_loc)
+ yylloc = *yypushed_loc;]])])], [[
+ yychar = YYLEX;]])[
+ }
if (yychar <= YYEOF)
{
]b4_epilogue
b4_defines_if(
-[@output(b4_spec_defines_file@)
+[@output(b4_spec_defines_file@)@
b4_copyright([Skeleton interface for Bison's Yacc-like parsers in C],dnl '
[1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006])