From 2f4f028d8bb527ebdab2476f76aac58f07f5b767 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 5 Oct 2005 06:39:08 +0000 Subject: [PATCH] Undo the parts of the unlocked-I/O change that substituted putc or puts for printf. This might hurt performance a bit, but some people prefer the printf style. * data/c.m4 (yysymprint): Prefer printf to puts and putc. * data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): Remove. All uses replaced by YYFPRINTF and YYDPRINTF. * data/yacc.c: Likewise. * lib/bitset.c (bitset_print): Likewise. * lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer printf to putc and puts. * lib/lbitset.c (debug_lbitset): Likewise. * src/closure.c (print_firsts, print_fderives): Likewise. * src/gram.c (grammar_dump): Likewise. * src/lalr.c (look_ahead_tokens_print): Likewise. * src/output.c (escaped_output): Likewise. (user_actions_output): Break apart two printfs. * src/parse-gram.y (%printer): Prefer printf to putc and puts. * src/reduce.c (reduce_print): Likewise. * src/state.c (state_rule_look_ahead_tokens_print): Likewise. * src/system.h: Include unlocked-io.h rathe than stdio.h. --- ChangeLog | 25 ++++++++++++++++++++-- data/c.m4 | 4 ++-- data/glr.c | 55 +++++++++++++++++++----------------------------- data/yacc.c | 29 ++++++------------------- lib/bitset.c | 4 ++-- lib/bitsetv.c | 4 ++-- lib/lbitset.c | 2 +- src/closure.c | 8 +++---- src/gram.c | 19 ++++++++--------- src/lalr.c | 4 ++-- src/output.c | 7 +++--- src/parse-gram.y | 2 +- src/reduce.c | 2 +- src/state.c | 4 ++-- 14 files changed, 82 insertions(+), 87 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5da560bb..859fead3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,26 @@ 2005-10-04 Paul Eggert + Undo the parts of the unlocked-I/O change that substituted + putc or puts for printf. This might hurt performance a bit, + but some people prefer the printf style. + * data/c.m4 (yysymprint): Prefer printf to puts and putc. + * data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): Remove. + All uses replaced by YYFPRINTF and YYDPRINTF. + * data/yacc.c: Likewise. + * lib/bitset.c (bitset_print): Likewise. + * lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer printf to + putc and puts. + * lib/lbitset.c (debug_lbitset): Likewise. + * src/closure.c (print_firsts, print_fderives): Likewise. + * src/gram.c (grammar_dump): Likewise. + * src/lalr.c (look_ahead_tokens_print): Likewise. + * src/output.c (escaped_output): Likewise. + (user_actions_output): Break apart two printfs. + * src/parse-gram.y (%printer): Prefer printf to putc and puts. + * src/reduce.c (reduce_print): Likewise. + * src/state.c (state_rule_look_ahead_tokens_print): Likewise. + * src/system.h: Include unlocked-io.h rathe than stdio.h. + * data/glr.c (yyuserMerge, yyreportAmbiguity, yyreportSyntaxError): Use assignments rather than casts-to-void to suppress unused-variable warnings. This pacifies 'lint'. @@ -33,10 +54,10 @@ * src/lalr.c (look_ahead_tokens_print): Likewise. * src/output.c (escaped_output): Likewise. (user_actions_output): Coalesce two printfs. - * src/parse-gram.h (%printer): Prefer putc and puts to printf. + * src/parse-gram.y (%printer): Prefer putc and puts to printf. * src/reduce.c (reduce_print): Likewise. * src/state.c (state_rule_look_ahead_tokens_print): Likewise. - * src/system.h: Include unlocked-io.h rathe than stdio.h. + * src/system.h: Include unlocked-io.h rather than stdio.h. * data/lalr1.cc: Don't put an unmatched ' in a dnl comment, as this confuses xgettext. diff --git a/data/c.m4 b/data/c.m4 index 56b749e6..03f20ff7 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -431,7 +431,7 @@ b4_location_if([ (void) yylocationp; YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); ]b4_location_if([ YY_LOCATION_PRINT (yyoutput, *yylocationp); - YYFPUTS (": ", yyoutput); + YYFPRINTF (yyoutput, ": "); ])dnl [ # ifdef YYPRINT @@ -444,6 +444,6 @@ b4_location_if([ (void) yylocationp; [ default: break; } - YYFPUTC (')', yyoutput); + YYFPRINTF (yyoutput, ")"); } ]]) diff --git a/data/glr.c b/data/glr.c index fa6bde67..848579b6 100644 --- a/data/glr.c +++ b/data/glr.c @@ -519,14 +519,9 @@ typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; #if YYDEBUG -# ifdef YYFPRINTF -# define YYFPUTC(Char, Stream) YYFPRINTF (Stream, "%c", Char) -# define YYFPUTS(Char, Stream) YYFPRINTF (Stream, "%s", String) -# else +#if ! defined (YYFPRINTF) # define YYFPRINTF fprintf -# define YYFPUTC fputc -# define YYFPUTS fputs -# endif +#endif # define YYDPRINTF(Args) \ do { \ @@ -534,12 +529,6 @@ do { \ YYFPRINTF Args; \ } while (0) -# define YYDPUTS(String, Stream) \ -do { \ - if (yydebug) \ - YYFPUTS (String, Stream); \ -} while (0) - ]b4_yysymprint_generate([b4_c_ansi_function_def])[ # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ @@ -549,7 +538,7 @@ do { \ YYFPRINTF (stderr, "%s ", Title); \ yysymprint (stderr, \ Type, Value]b4_location_if([, Location])[); \ - YYFPUTC ('\n', stderr); \ + YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -559,7 +548,6 @@ int yydebug; #else /* !YYDEBUG */ -# define YYDPUTS(String, File) # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) @@ -925,7 +913,7 @@ yydestroyGLRState (char const *yymsg, yyGLRState *yys) YYFPRINTF (stderr, "%s unresolved ", yymsg); yysymprint (stderr, yystos[yys->yylrState], &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); - YYFPUTC ('\n', stderr); + YYFPRINTF (stderr, "\n"); } #endif @@ -1190,7 +1178,7 @@ yyundeleteLastStack (yyGLRStack* yystack) return; yystack->yytops.yystates[0] = yystack->yylastDeleted; yystack->yytops.yysize = 1; - YYDPUTS ("Restoring last deleted stack as stack #0.\n", stderr); + YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n")); yystack->yylastDeleted = NULL; } @@ -1205,7 +1193,7 @@ yyremoveDeletes (yyGLRStack* yystack) { if (yyi == yyj) { - YYDPUTS ("Removing dead stacks.\n", stderr); + YYDPRINTF ((stderr, "Removing dead stacks.\n")); } yystack->yytops.yysize -= 1; } @@ -1638,11 +1626,12 @@ yyreportAmbiguity (yySemanticOption* yyx0, yySemanticOption* yyx1, yyx1 = yyx1; #if YYDEBUG - YYFPUTS ("Ambiguity detected.\nOption 1,\n", stderr); + YYFPRINTF (stderr, "Ambiguity detected.\n"); + YYFPRINTF (stderr, "Option 1,\n"); yyreportTree (yyx0, 2); - YYFPUTS ("\nOption 2,\n", stderr); + YYFPRINTF (stderr, "\nOption 2,\n"); yyreportTree (yyx1, 2); - YYFPUTC ('\n', stderr); + YYFPRINTF (stderr, "\n"); #endif yyFail (yystack][]b4_pure_args[, YY_("syntax is ambiguous")); } @@ -1798,7 +1787,7 @@ yyprocessOneStack (yyGLRStack* yystack, size_t yyk, { if (*yytokenp == YYEMPTY) { - YYDPUTS ("Reading a token: ", stderr); + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; *yytokenp = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", *yytokenp, yylvalp, yyllocp); @@ -1981,7 +1970,7 @@ yyrecoverSyntaxError (yyGLRStack* yystack, yydestruct ("Error: discarding", *yytokenp, yylvalp]b4_location_if([, yyllocp])[); } - YYDPUTS ("Reading a token: ", stderr); + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; *yytokenp = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", *yytokenp, yylvalp, yyllocp); @@ -2081,7 +2070,7 @@ yyrecoverSyntaxError (yyGLRStack* yystack, YYSTYPE* const yylvalp = &yylval; YYLTYPE* const yyllocp = &yylloc; - YYDPUTS ("Starting parse\n", stderr); + YYDPRINTF ((stderr, "Starting parse\n")); yytoken = YYEMPTY; yylval = yyval_default; @@ -2145,7 +2134,7 @@ b4_syncline([@oline@], [@ofile@])])dnl { if (yytoken == YYEMPTY) { - YYDPUTS ("Reading a token: ", stderr); + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, yylvalp, yyllocp); @@ -2190,7 +2179,7 @@ b4_syncline([@oline@], [@ofile@])])dnl if (yystack.yytops.yysize == 0) yyFail (&yystack][]b4_lpure_args[, YY_("syntax error")); YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); - YYDPUTS ("Returning to deterministic operation.\n", stderr); + YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); ]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = *yyllocp;]])[ yyreportSyntaxError (&yystack, yylvalp, yyllocp]b4_user_args[); goto yyuser_error; @@ -2198,7 +2187,7 @@ b4_syncline([@oline@], [@ofile@])])dnl else if (yystack.yytops.yysize == 1) { YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); - YYDPUTS ("Returning to deterministic operation.\n", stderr); + YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); yycompressStack (&yystack); break; } @@ -2265,7 +2254,7 @@ yy_yypstack (yyGLRState* yys) if (yys->yypred) { yy_yypstack (yys->yypred); - fputs (" -> ", stderr); + fprintf (stderr, " -> "); } fprintf (stderr, "%d@@%lu", yys->yylrState, (unsigned long int) yys->yyposn); } @@ -2274,10 +2263,10 @@ static void yypstates (yyGLRState* yyst) { if (yyst == NULL) - fputs ("", stderr); + fprintf (stderr, ""); else yy_yypstack (yyst); - fputc ('\n', stderr); + fprintf (stderr, "\n"); } static void @@ -2315,13 +2304,13 @@ yypdumpstack (yyGLRStack* yystack) (long int) YYINDEX (yyp->yyoption.yystate), (long int) YYINDEX (yyp->yyoption.yynext)); } - fputc ('\n', stderr); + fprintf (stderr, "\n"); } - fputs ("Tops:", stderr); + fprintf (stderr, "Tops:"); for (yyi = 0; yyi < yystack->yytops.yysize; yyi += 1) fprintf (stderr, "%lu: %ld; ", (unsigned long int) yyi, (long int) YYINDEX (yystack->yytops.yystates[yyi])); - fputc ('\n', stderr); + fprintf (stderr, "\n"); } #endif ] diff --git a/data/yacc.c b/data/yacc.c index a8b4e6c9..cbce25b1 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -604,14 +604,9 @@ while (0) /* Enable debugging if requested. */ #if YYDEBUG -# ifdef YYFPRINTF -# define YYFPUTC(Char, Stream) YYFPRINTF (Stream, "%c", Char) -# define YYFPUTS(Char, Stream) YYFPRINTF (Stream, "%s", String) -# else +# ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf -# define YYFPUTC fputc -# define YYFPUTS fputs # endif # define YYDPRINTF(Args) \ @@ -620,12 +615,6 @@ do { \ YYFPRINTF Args; \ } while (0) -# define YYDPUTS(String, Stream) \ -do { \ - if (yydebug) \ - YYFPUTS (String, Stream); \ -} while (0) - # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ @@ -633,7 +622,7 @@ do { \ YYFPRINTF (stderr, "%s ", Title); \ yysymprint (stderr, \ Type, Value]b4_location_if([, Location])[); \ - YYFPUTC ('\n', stderr); \ + YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -646,10 +635,10 @@ do { \ [[short int *bottom], [bottom]], [[short int *top], [top]])[ { - YYFPUTS ("Stack now", stderr); + YYFPRINTF (stderr, "Stack now"); for (/* Nothing. */; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); - YYFPUTC ('\n', stderr); + YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ @@ -685,15 +674,11 @@ do { \ /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; - #else /* !YYDEBUG */ - -# define YYDPUTS(String, File) # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) - #endif /* !YYDEBUG */ @@ -1035,7 +1020,7 @@ b4_c_function_def([yyparse], [int], b4_parse_param) rule. */ int yylen; - YYDPUTS ("Starting parse\n", stderr); + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; @@ -1173,14 +1158,14 @@ yybackup: /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { - YYDPUTS ("Reading a token: ", stderr); + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; - YYDPUTS ("Now at end of input.\n", stderr); + YYDPRINTF ((stderr, "Now at end of input.\n")); } else { diff --git a/lib/bitset.c b/lib/bitset.c index 24bfb879..ddbef843 100644 --- a/lib/bitset.c +++ b/lib/bitset.c @@ -303,7 +303,7 @@ bitset_print (FILE *file, bitset bset, bool verbose) { if (pos > 70) { - fputc ('\n', file); + fprintf (file, "\n"); pos = 0; } @@ -312,7 +312,7 @@ bitset_print (FILE *file, bitset bset, bool verbose) }; if (verbose) - fputs ("}\n", file); + fprintf (file, "}\n"); } diff --git a/lib/bitsetv.c b/lib/bitsetv.c index 16fa4c07..db2aa1af 100644 --- a/lib/bitsetv.c +++ b/lib/bitsetv.c @@ -153,7 +153,7 @@ bitsetv_dump (FILE *file, char const *title, char const *subtitle, bitset_dump (file, bsetv[i]); } - fputc ('\n', file); + fprintf (file, "\n"); } @@ -168,5 +168,5 @@ debug_bitsetv (bitsetv bsetv) debug_bitset (bsetv[i]); } - fputc ('\n', stderr); + fprintf (stderr, "\n"); } diff --git a/lib/lbitset.c b/lib/lbitset.c index b1fbd77c..9d3d9573 100644 --- a/lib/lbitset.c +++ b/lib/lbitset.c @@ -1400,7 +1400,7 @@ debug_lbitset (bitset bset) for (j = 0; j < LBITSET_WORD_BITS; j++) if ((word & ((bitset_word) 1 << j))) fprintf (stderr, " %u", j); - fputc ('\n', stderr); + fprintf (stderr, "\n"); } } } diff --git a/src/closure.c b/src/closure.c index 8652a22b..eb53ee05 100644 --- a/src/closure.c +++ b/src/closure.c @@ -75,7 +75,7 @@ print_firsts (void) { symbol_number i, j; - fputs ("FIRSTS\n", stderr); + fprintf (stderr, "FIRSTS\n"); for (i = ntokens; i < nsyms; i++) { bitset_iterator iter; @@ -86,7 +86,7 @@ print_firsts (void) symbols[j + ntokens]->tag); } } - fputs ("\n\n", stderr); + fprintf (stderr, "\n\n"); } @@ -96,7 +96,7 @@ print_fderives (void) int i; rule_number r; - fputs ("FDERIVES\n", stderr); + fprintf (stderr, "FDERIVES\n"); for (i = ntokens; i < nsyms; i++) { bitset_iterator iter; @@ -107,7 +107,7 @@ print_fderives (void) rule_rhs_print (&rules[r], stderr); } } - fputs ("\n\n", stderr); + fprintf (stderr, "\n\n"); } /*------------------------------------------------------------------. diff --git a/src/gram.c b/src/gram.c index dd77a766..4636f4e1 100644 --- a/src/gram.c +++ b/src/gram.c @@ -247,24 +247,23 @@ grammar_dump (FILE *out, const char *title) ntokens, nvars, nsyms, nrules, nritems); - fputs (("Variables\n---------\n\n" - "Value Sprec Sassoc Tag\n"), - out); + fprintf (out, "Variables\n---------\n\n"); { symbol_number i; + fprintf (out, "Value Sprec Sassoc Tag\n"); + for (i = ntokens; i < nsyms; i++) fprintf (out, "%5d %5d %5d %s\n", i, symbols[i]->prec, symbols[i]->assoc, symbols[i]->tag); + fprintf (out, "\n\n"); } - fputs ("\n\n", out); - fputs (("Rules\n-----\n\n" - "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n"), - out); + fprintf (out, "Rules\n-----\n\n"); { rule_number i; + fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n"); for (i = 0; i < nrules + nuseless_productions; i++) { rule *rule_i = &rules[i]; @@ -288,9 +287,9 @@ grammar_dump (FILE *out, const char *title) fprintf (out, " [%d]\n", item_number_as_rule_number (*rp)); } } - fputs ("\n\n", out); + fprintf (out, "\n\n"); - fputs ("Rules interpreted\n-----------------\n\n", out); + fprintf (out, "Rules interpreted\n-----------------\n\n"); { rule_number r; for (r = 0; r < nrules + nuseless_productions; r++) @@ -299,7 +298,7 @@ grammar_dump (FILE *out, const char *title) rule_print (&rules[r], out); } } - fputs ("\n\n", out); + fprintf (out, "\n\n"); } diff --git a/src/lalr.c b/src/lalr.c index 6d72d05a..8627f1cb 100644 --- a/src/lalr.c +++ b/src/lalr.c @@ -410,7 +410,7 @@ look_ahead_tokens_print (FILE *out) { state_number i; int j, k; - fputs ("Look-ahead tokens: BEGIN\n", out); + fprintf (out, "Look-ahead tokens: BEGIN\n"); for (i = 0; i < nstates; ++i) { reductions *reds = states[i]->reductions; @@ -434,7 +434,7 @@ look_ahead_tokens_print (FILE *out) reds->rules[j]->number); }; } - fputs ("Look-ahead tokens: END\n", out); + fprintf (out, "Look-ahead tokens: END\n"); } void diff --git a/src/output.c b/src/output.c index 3dcd2287..1f3bbcaa 100644 --- a/src/output.c +++ b/src/output.c @@ -119,7 +119,7 @@ static void escaped_output (FILE *out, char const *string) { char const *p; - fputs ("[[", out); + fprintf (out, "[["); for (p = quotearg_style (c_quoting_style, string); *p; p++) switch (*p) @@ -131,7 +131,7 @@ escaped_output (FILE *out, char const *string) default: fputc (*p, out); break; } - fputs ("]]", out); + fprintf (out, "]]"); } @@ -302,7 +302,8 @@ user_actions_output (FILE *out) fprintf (out, "]b4_syncline(%d, ", rules[r].action_location.start.line); escaped_output (out, rules[r].action_location.start.file); - fprintf (out, ")[\n %s\n break;\n\n", + fprintf (out, ")[\n"); + fprintf (out, " %s\n break;\n\n", rules[r].action); } fputs ("]])\n\n", out); diff --git a/src/parse-gram.y b/src/parse-gram.y index 027a773d..4a986300 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -181,7 +181,7 @@ static int current_prec = 0; %type INT %printer { fprintf (stderr, "%d", $$); } INT %type ID symbol string_as_id -%printer { fputs ($$->tag, stderr); } ID symbol string_as_id +%printer { fprintf (stderr, "%s", $$->tag); } ID symbol string_as_id %type ID_COLON %printer { fprintf (stderr, "%s:", $$->tag); } ID_COLON %type precedence_declarator diff --git a/src/reduce.c b/src/reduce.c index d53dc159..a6b9e629 100644 --- a/src/reduce.c +++ b/src/reduce.c @@ -407,7 +407,7 @@ reduce_print (void) "%d useless rules", nuseless_productions), nuseless_productions); - fputc ('\n', stderr); + fprintf (stderr, "\n"); } void diff --git a/src/state.c b/src/state.c index 8030811a..89d0c870 100644 --- a/src/state.c +++ b/src/state.c @@ -237,13 +237,13 @@ state_rule_look_ahead_tokens_print (state *s, rule *r, FILE *out) bitset_iterator biter; int k; char const *sep = ""; - fputs (" [", out); + fprintf (out, " ["); BITSET_FOR_EACH (biter, reds->look_ahead_tokens[red], k, 0) { fprintf (out, "%s%s", sep, symbols[k]->tag); sep = ", "; } - fputc (']', out); + fprintf (out, "]"); } } -- 2.47.2