X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/55f64b82cd3b4163f4de08bc32f3d360ac57037b..36b5e963e6a0d2992831ab8635963e75ac36671e:/data/c.m4 diff --git a/data/c.m4 b/data/c.m4 index 2a3218bf..8ee6275f 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -96,7 +96,6 @@ m4_define([b4_parse_param], b4_parse_param)) - ## ------------ ## ## Data Types. ## ## ------------ ## @@ -138,6 +137,15 @@ m4_define([b4_int_type_for], ## ------------------ ## +# b4_error_verbose_if(IF-TRUE, IF-FALSE) +# -------------------------------------- +# Expand IF-TRUE, if errors are verbose, IF-FALSE otherwise. +m4_define([b4_error_verbose_if], +[m4_if(b4_error_verbose, [1], + [$1], + [$2])]) + + # b4_location_if(IF-TRUE, IF-FALSE) # --------------------------------- # Expand IF-TRUE, if locations are used, IF-FALSE otherwise. @@ -169,6 +177,16 @@ m4_define([b4_token_define], ]) +# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) +# ------------------------------------------------------- +# Output the definition of the tokens (if there are) as #defines. +m4_define([b4_token_defines], +[m4_if([$@], [[]], [], +[/* Tokens. */ +m4_map([b4_token_define], [$@])]) +]) + + # b4_token_enum(TOKEN-NAME, TOKEN-NUMBER) # --------------------------------------- # Output the definition of this token as an enum. @@ -176,10 +194,10 @@ m4_define([b4_token_enum], [$1 = $2]) -# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ------------------------------------------------------- -# Output the definition of the tokens (if there are) as enums and #define. -m4_define([b4_token_defines], +# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) +# ----------------------------------------------------- +# Output the definition of the tokens (if there are) as enums. +m4_define([b4_token_enums], [m4_if([$@], [[]], [], [/* Tokens. */ #ifndef YYTOKENTYPE @@ -192,8 +210,14 @@ m4_map_sep([ b4_token_enum], [, [$@]) }; #endif -m4_map([b4_token_define], [$@]) -]) +])]) + + +# b4_token_enums_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) +# ------------------------------------------------------------- +# Output the definition of the tokens (if there are) as enums and #defines. +m4_define([b4_token_enums_defines], +[b4_token_enums($@)b4_token_defines($@) ]) @@ -207,7 +231,7 @@ m4_map([b4_token_define], [$@]) # ---------------------------------------------------------- # Declare the function NAME. m4_define([b4_c_function_def], -[#if defined (__STDC__) || defined (__cplusplus) +[#if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus) b4_c_ansi_function_def($@) #else $2 @@ -317,7 +341,6 @@ m4_define([b4_c_arg], ## Synclines. ## ## ----------- ## - # b4_syncline(LINE, FILE) # ----------------------- m4_define([b4_syncline], @@ -348,7 +371,7 @@ m4_popdef([b4_dollar_dollar])dnl # Generate the "yydestruct" function, which declaration is issued using # 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], +m4_define_default([b4_yydestruct_generate], [[/*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ @@ -357,12 +380,12 @@ m4_define([b4_yydestruct_generate], [static void], [[const char *yymsg], [yymsg]], [[int yytype], [yytype]], - [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([, - [[YYLTYPE *yylocationp], [yylocationp]]]))[ + [[YYSTYPE *yyvaluep], [yyvaluep]][]dnl +b4_location_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl +m4_ifset([b4_parse_param], [, b4_parse_param]))[ { - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; -]b4_location_if([ (void) yylocationp; + YYUSE (yyvaluep); +]b4_location_if([ YYUSE (yylocationp); ])[ if (!yymsg) yymsg = "Deleting"; @@ -383,7 +406,7 @@ m4_define([b4_yydestruct_generate], # Generate the "yysymprint" function, which declaration is issued using # 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], +m4_define_default([b4_yysymprint_generate], [[/*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ @@ -392,12 +415,12 @@ m4_define([b4_yysymprint_generate], [static void], [[FILE *yyoutput], [yyoutput]], [[int yytype], [yytype]], - [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([, - [[YYLTYPE *yylocationp], [yylocationp]]])) + [[YYSTYPE *yyvaluep], [yyvaluep]][]dnl +b4_location_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl +m4_ifset([b4_parse_param], [, b4_parse_param]))[ { - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; -b4_location_if([ (void) yylocationp; + YYUSE (yyvaluep); +]b4_location_if([ YYUSE (yylocationp); ])dnl [ if (yytype < YYNTOKENS) @@ -420,5 +443,5 @@ b4_location_if([ (void) yylocationp; break; } YYFPRINTF (yyoutput, ")"); -} -]]) +}]dnl +])