# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
# symbols on RHS.
m4_define([b4_rhs_value],
-[yyvsp@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3])])
+[((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3])])
# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
# on RHS.
m4_define([b4_rhs_location],
-[yyvsp@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yyloc])
+[((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yyloc])
# We do want M4 expansion after # for CPP macros.
m4_changecom()
]/* Line __line__ of glr.c. */
b4_syncline([@oline@], [@ofile@])
[
+#ifndef YYFREE
+# define YYFREE free
+#endif
+#ifndef YYMALLOC
+# define YYMALLOC malloc
+#endif
+#ifndef YYREALLOC
+# define YYREALLOC realloc
+#endif
+
#ifdef __cplusplus
typedef bool yybool;
#else
# endif
#endif
+#ifndef YYASSERT
+# define YYASSERT(condition) ((void) ((condition) || (abort (), 0)))
+#endif
+
#ifndef ATTRIBUTE_UNUSED
# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
#endif
#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) \
- (yyCurrent).first_line = YYRHSLOC(yyRhs,1).first_line; \
- (yyCurrent).first_column = YYRHSLOC(yyRhs,1).first_column; \
- (yyCurrent).last_line = YYRHSLOC(yyRhs,YYN).last_line; \
- (yyCurrent).last_column = YYRHSLOC(yyRhs,YYN).last_column;
+ ((yyCurrent).first_line = YYRHSLOC(yyRhs, 1).first_line, \
+ (yyCurrent).first_column = YYRHSLOC(yyRhs, 1).first_column, \
+ (yyCurrent).last_line = YYRHSLOC(yyRhs, YYN).last_line, \
+ (yyCurrent).last_column = YYRHSLOC(yyRhs, YYN).last_column)
#endif
]],[
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN)
+# define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) ((void) 0)
#endif
])[
s = yyvsp[yylow0].yystate.yypred;
for (i = yylow0-1; i >= yylow1; i -= 1)
{
- if (! s->yyresolved)
- abort ();
+ YYASSERT (s->yyresolved);
yyvsp[i].yystate.yyresolved = yytrue;
yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;
yyvsp[i].yystate.yyloc = s->yyloc;
}
\f
-static YYSTYPE
+static void
yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
{
- YYSTYPE yyval = *yy0;
/* `Use' the arguments. */
(void) yy0;
(void) yy1;
{
b4_mergers
}
- return yyval;
}
[
/* Bison grammar-table manipulation. */
{
yyset->yysize = 1;
yyset->yycapacity = 16;
- yyset->yystates = (yyGLRState**) malloc (16 * sizeof (yyset->yystates[0]));
+ yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]);
yyset->yystates[0] = NULL;
}
static void yyfreeStateSet (yyGLRStateSet* yyset)
{
- free (yyset->yystates);
+ YYFREE (yyset->yystates);
}
/** Initialize STACK to a single empty stack, with total maximum
yynerrs = 0;
yystack->yyspaceLeft = yysize;
yystack->yynextFree = yystack->yyitems =
- (yyGLRStackItem*) malloc (yysize * sizeof (yystack->yynextFree[0]));
+ (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystack->yynextFree[0]);
yystack->yysplitPoint = NULL;
yystack->yylastDeleted = NULL;
yyinitStateSet (&yystack->yytops);
yystack->yytops.yystates[yyn] =
YYRELOC (yystack->yyitems, yynewStack.yyitems,
yystack->yytops.yystates[yyn], yystate);
- free (yystack->yyitems);
+ YYFREE (yystack->yyitems);
yystack->yyitems = yynewStack.yyitems;
yystack->yynextFree = yynewStack.yynextFree + yysize;
yystack->yyspaceLeft = yynewStack.yyspaceLeft - yysize;
static void
yyfreeGLRStack (yyGLRStack* yystack)
{
- free (yystack->yyitems);
+ YYFREE (yystack->yyitems);
yyfreeStateSet (&yystack->yytops);
}
yystack->yytops.yystates[yyj] = yystack->yytops.yystates[yyi];
if (yyj != yyi)
{
- YYDPRINTF ((stderr, "Rename stack %d -> %d.\n", yyi, yyj));
+ YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n",
+ (unsigned long int) yyi, (unsigned long int) yyj));
}
yyj += 1;
}
{
/* Standard special case: single stack. */
yyGLRStackItem* rhs = (yyGLRStackItem*) yystack->yytops.yystates[yyk];
- if (yyk != 0)
- abort ();
+ YYASSERT (yyk == 0);
yystack->yynextFree -= yynrhs;
yystack->yyspaceLeft += yynrhs;
yystack->yytops.yystates[0] = & yystack->yynextFree[-1].yystate;
for (yyi = 0; yyi < yynrhs; yyi += 1)
{
yys = yys->yypred;
- if (yys == NULL)
- abort ();
+ YYASSERT (yys);
}
yyupdateSplit (yystack, yys);
yystack->yytops.yystates[yyk] = yys;
yy_reduce_print (size_t yyk, yyRuleNum yyrule)
{
int yyi;
- unsigned int yylno = yyrline[yyrule];
- YYFPRINTF (stderr, "Reducing stack %d by rule %d (line %u), ",
- yyk, yyrule - 1, yylno);
+ YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu), ",
+ (unsigned long int) yyk, yyrule - 1,
+ (unsigned long int) yyrline[yyrule]);
/* Print the symbols being reduced, and their result. */
for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
YYFPRINTF (stderr, "%s ", yytokenName (yyrhs[yyi]));
0 < yyn; yyn -= 1)
{
yys = yys->yypred;
- if (yys == NULL)
- abort ();
+ YYASSERT (yys);
}
yyupdateSplit (yystack, yys);
yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
YYDPRINTF ((stderr,
- "Reduced stack %d by rule #%d; action deferred. "
- "Now in state %d.\n",
- yyk, yyrule-1, yynewLRState));
+ "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n",
+ (unsigned long int) yyk, yyrule - 1, yynewLRState));
for (yyi = 0; yyi < yystack->yytops.yysize; yyi += 1)
if (yyi != yyk && yystack->yytops.yystates[yyi] != NULL)
{
{
yyaddDeferredAction (yystack, yyp, yys0, yyrule]b4_pure_args[);
yymarkStackDeleted (yystack, yyk);
- YYDPRINTF ((stderr, "Merging stack %d into stack %d.\n",
- yyk, yyi));
+ YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n",
+ (unsigned long int) yyk,
+ (unsigned long int) yyi));
return yyok;
}
yyp = yyp->yypred;
{
if (yystack->yysplitPoint == NULL)
{
- if (yyk != 0)
- abort ();
+ YYASSERT (yyk == 0);
yystack->yysplitPoint = yystack->yytops.yystates[yyk];
}
if (yystack->yytops.yysize >= yystack->yytops.yycapacity)
{
yystack->yytops.yycapacity *= 2;
yystack->yytops.yystates =
- (yyGLRState**) realloc (yystack->yytops.yystates,
- yystack->yytops.yycapacity
- * sizeof (yyGLRState*));
+ (yyGLRState**) YYREALLOC (yystack->yytops.yystates,
+ (yystack->yytops.yycapacity
+ * sizeof yystack->yytops.yystates[0]));
}
yystack->yytops.yystates[yystack->yytops.yysize]
= yystack->yytops.yystates[yyk];
YYRESULTTAG yyflag;
if (0 < yyn)
{
- if (yys->yypred == NULL)
- abort ();
+ YYASSERT (yys->yypred);
yyflag = yyresolveStates (yys->yypred, yyn-1, yystack]b4_user_args[);
if (yyflag != yyok)
return yyflag;
yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
yyx->yyrule);
else
- YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %d .. %d>\n",
+ YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
- yyx->yyrule, yys->yyposn+1, yyx->yystate->yyposn);
+ yyx->yyrule, (unsigned long int) (yys->yyposn + 1),
+ (unsigned long int) yyx->yystate->yyposn);
for (yyi = 1; yyi <= yynrhs; yyi += 1)
{
if (yystates[yyi]->yyresolved)
YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "",
yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]));
else
- YYFPRINTF (stderr, "%*s%s <tokens %d .. %d>\n", yyindent+2, "",
+ YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "",
yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]),
- yystates[yyi-1]->yyposn+1, yystates[yyi]->yyposn);
+ (unsigned long int) (yystates[yyi - 1]->yyposn + 1),
+ (unsigned long int) yystates[yyi]->yyposn);
}
else
yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
YYSTYPE yyval1;
YYLTYPE yydummy;
YYCHK (yyresolveAction (yyp, yystack, &yyval1, &yydummy]b4_user_args[));
- *yyvalp = yyuserMerge (yymerger[yyp->yyrule], yyvalp, &yyval1);
+ yyuserMerge (yymerger[yyp->yyrule], yyvalp, &yyval1);
}
}
return yyok;
yyStateNum yystate = yystack->yytops.yystates[yyk]->yylrState;
YYDPRINTF ((stderr, "Stack %d Entering state %d\n", yyk, yystate));
- if (yystate == YYFINAL)
- abort ();
+ YYASSERT (yystate != YYFINAL);
+
if (yyisDefaultedState (yystate))
{
yyrule = yydefaultAction (yystate);
}
yysize += (sizeof ("syntax error, unexpected ")
+ strlen (yytokenName (*yytokenp)));
- yymsg = (char*) malloc (yysize);
+ yymsg = (char*) YYMALLOC (yysize);
if (yymsg != 0)
{
char* yyp = yymsg;
}
}
yyerror (]b4_lyyerror_args[yymsg);
- free (yymsg);
+ YYFREE (yymsg);
}
else
yyerror (]b4_lyyerror_args["syntax error; also virtual memory exhausted");