# --------------------
# Expansion of $<TYPE>$.
m4_define([b4_lhs_value],
-[(yyval[]m4_ifval([$1], [.$1]))])
+[b4_symbol_value(yyval, [$1])])
# b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
# symbols on RHS.
m4_define([b4_rhs_value],
-[(yyvsp@{($2) - ($1)@}m4_ifval([$3], [.$3]))])
+[b4_symbol_value([yyvsp@{($2) - ($1)@}], [$3])])
/* 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)
{