X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/886b69d1973c695205bb176e90d9f8e848edf535..e62f1a899168bdf1658dd6d934dea407491a80ff:/data/c.m4?ds=sidebyside diff --git a/data/c.m4 b/data/c.m4 index dcc0f177..79ce9767 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -1,7 +1,7 @@ m4_divert(-1) -*- Autoconf -*- # C M4 Macros for Bison. -# Copyright (C) 2002 Free Software Foundation, Inc. +# Copyright (C) 2002, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -114,8 +114,8 @@ m4_define([b4_int_type], [m4_if(b4_ints_in($@, [0], [255]), [1], [unsigned char], b4_ints_in($@, [-128], [127]), [1], [signed char], - b4_ints_in($@, [0], [65535]), [1], [unsigned short], - b4_ints_in($@, [-32768], [32767]), [1], [short], + b4_ints_in($@, [0], [65535]), [1], [unsigned short int], + b4_ints_in($@, [-32768], [32767]), [1], [short int], m4_eval([0 <= $1]), [1], [unsigned int], @@ -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]) @@ -339,10 +340,10 @@ m4_popdef([b4_dollar_dollar])dnl ]) -# b4_yydestruct_generate(FUNTION-DECLARATOR) -# ------------------------------------------ +# b4_yydestruct_generate(FUNCTION-DECLARATOR) +# ------------------------------------------- # Generate the "yydestruct" function, which declaration is issued using -# FUNTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C +# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C # or "b4_c_function_def" for K&R. m4_define([b4_yydestruct_generate], [[/*-----------------------------------------------. @@ -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]))[ @@ -369,19 +375,19 @@ m4_define([b4_yydestruct_generate], ]) -# b4_yysymprint_generate(FUNTION-DECLARATOR) -# ------------------------------------------ +# b4_yysymprint_generate(FUNCTION-DECLARATOR) +# ------------------------------------------- # Generate the "yysymprint" function, which declaration is issued using -# FUNTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C +# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C # or "b4_c_function_def" for K&R. m4_define([b4_yysymprint_generate], -[[/*-----------------------------. -| Print this symbol on YYOUT. | -`-----------------------------*/ +[[/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ ]$1([yysymprint], [static void], - [[FILE *yyout], [yyout]], + [[FILE *yyoutput], [yyoutput]], [[int yytype], [yytype]], [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([, [[YYLTYPE *yylocationp], [yylocationp]]])) @@ -390,23 +396,26 @@ m4_define([b4_yysymprint_generate], (void) yyvaluep; b4_location_if([ (void) yylocationp; ])dnl - +[ if (yytype < YYNTOKENS) - { - YYFPRINTF (yyout, "token %s (", yytname[[yytype]]); -# ifdef YYPRINT - YYPRINT (yyout, yytoknum[[yytype]], *yyvaluep); -# endif - } + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else - YYFPRINTF (yyout, "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 (yyout, ")"); + YYFPRINTF (yyoutput, ")"); } -]) +]])