# SYMBOL-ACTION, SYMBOL-TYPENAME)
# -------------------------------------------------
m4_define([b4_symbol_actions],
-[m4_pushdef([b4_dollar_dollar], [yyvaluep->$6])dnl
+[m4_pushdef([b4_dollar_dollar],
+ [m4_ifval([$6], [(yyvaluep->$6)], [(*yyvaluep)])])dnl
m4_pushdef([b4_at_dollar], [(*yylocationp)])dnl
case $4: /* $3 */
b4_syncline([$2], [$1])
]$1([yydestruct],
[static void],
+ [[const char *yymsg], [yymsg]],
[[int yytype], [yytype]],
[[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([,
[[YYLTYPE *yylocationp], [yylocationp]]]))[
(void) yyvaluep;
]b4_location_if([ (void) yylocationp;
])[
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
switch (yytype)
{
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
(void) yyvaluep;
b4_location_if([ (void) yylocationp;
])dnl
-
+[
if (yytype < YYNTOKENS)
- {
- YYFPRINTF (yyoutput, "token %s (", yytname[[yytype]]);
-# ifdef YYPRINT
- YYPRINT (yyoutput, yytoknum[[yytype]], *yyvaluep);
-# endif
- }
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[[yytype]]);
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+]b4_location_if([ YY_LOCATION_PRINT (yyoutput, *yylocationp);
+ fprintf (yyoutput, ": ");
+])dnl
+[
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
switch (yytype)
{
-m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
- default:
+]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
+[ default:
break;
}
YYFPRINTF (yyoutput, ")");
}
-])
+]])