X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/779e7ceb9395424c2cf90d43c75302ababc8ee72..e62f1a899168bdf1658dd6d934dea407491a80ff:/data/c.m4 diff --git a/data/c.m4 b/data/c.m4 index a72f059a..79ce9767 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -327,7 +327,8 @@ m4_define([b4_syncline], # 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]) @@ -351,6 +352,7 @@ m4_define([b4_yydestruct_generate], ]$1([yydestruct], [static void], + [[const char *yymsg], [yymsg]], [[int yytype], [yytype]], [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([, [[YYLTYPE *yylocationp], [yylocationp]]]))[ @@ -359,6 +361,10 @@ m4_define([b4_yydestruct_generate], (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]))[ @@ -390,23 +396,26 @@ m4_define([b4_yysymprint_generate], (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, ")"); } -]) +]])