From: Paul Eggert Date: Fri, 9 Dec 2005 22:14:36 +0000 (+0000) Subject: Cleanups so that Bison-generated parsers have less lint. X-Git-Tag: v2.3b~560 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/12ce2df60d16961eaa03a5aa009eeaa645e4e1cb?ds=inline Cleanups so that Bison-generated parsers have less lint. * data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Prepend /*ARGSUSED*/, for lint's sake. * data/glr.c (YYUSE): Properly parenthesize, and use an alternate definition if 'lint' is defined. (YYID): New macro (or function, if lint). All uses of /*CONSTCOND*/0 replaced by YYID(0). * data/yacc.c: Likewise. * data/glr.c (yyuserAction, yyuserMerge, yy_reduce_print): (yyrecoverSyntaxError): Prepend /*ARGSUSED*/. * data/glr.cc (YYLLOC_DEFAULT): Omit /*CONSTCOND*/ since this code is C++ only. * data/lalr1.cc (YYUSE): Just use a cast, since this code is C++ only. * data/yacc.c (YYSTACK_FREE) [defined YYSTACK_ALLOC]: Use YYID(0) rather than 0, for lint. (yystrlen): Rewrite to avoid lint warning about ptrdiff_t overflow. (yysyntax_error): Rewrite to avoid lint warnings about parenthesization. --- diff --git a/data/c.m4 b/data/c.m4 index 1b521c28..b1950c8d 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -401,6 +401,7 @@ m4_define_default([b4_yydestruct_generate], | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ ]$1([yydestruct], [static void], [[const char *yymsg], [yymsg]], @@ -438,6 +439,7 @@ m4_define_default([b4_yysymprint_generate], | Print this symbol on YYOUTPUT. | `--------------------------------*/ +/*ARGSUSED*/ ]$1([yysymprint], [static void], [[FILE *yyoutput], [yyoutput]], diff --git a/data/glr.c b/data/glr.c index f72e8bbb..b4077c9f 100644 --- a/data/glr.c +++ b/data/glr.c @@ -257,10 +257,20 @@ b4_syncline([@oline@], [@ofile@]) #endif /* Suppress unused-variable warnings by "using" E. */ -#if __cplusplus -# define YYUSE(e) (void) (e) +#ifndef lint +# define YYUSE(e) ((void) (e)) #else -# define YYUSE(e) do {;} while (/*CONSTCOND*/ yyfalse && (e)) +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +]b4_c_function_def([YYID], [static int], [[int i], [i]])[ +{ + return i; +} #endif #ifndef YYFREE @@ -499,7 +509,7 @@ static const ]b4_int_type_for([b4_stos])[ yystos[] = (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (/*CONSTCOND*/ 0) + while (YYID (0)) /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know @@ -544,7 +554,7 @@ typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; #define YYCHK(YYE) \ do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \ - while (/*CONSTCOND*/ 0) + while (YYID (0)) #if YYDEBUG @@ -556,7 +566,7 @@ typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; do { \ if (yydebug) \ YYFPRINTF Args; \ -} while (/*CONSTCOND*/ 0) +} while (YYID (0)) ]b4_yysymprint_generate([b4_c_ansi_function_def])[ @@ -569,7 +579,7 @@ do { \ Type, Value]b4_location_if([, Location])[]b4_user_args[); \ YYFPRINTF (stderr, "\n"); \ } \ -} while (/*CONSTCOND*/ 0) +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -620,13 +630,13 @@ int yydebug; do { \ if (Yystack->yyspaceLeft < YYHEADROOM) \ yyexpandGLRStack (Yystack); \ - } while (/*CONSTCOND*/ 0) + } while (YYID (0)) #else # define YY_RESERVE_GLRSTACK(Yystack) \ do { \ if (Yystack->yyspaceLeft < YYHEADROOM) \ yyMemoryExhausted (Yystack); \ - } while (/*CONSTCOND*/ 0) + } while (YYID (0)) #endif @@ -862,7 +872,7 @@ yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal) * value ($$), and yylocp points to place for location information * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT, * yyerr for YYERROR, yyabort for YYABORT. */ -static YYRESULTTAG +/*ARGSUSED*/ static YYRESULTTAG yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, YYSTYPE* yyvalp, YYLTYPE* YYOPTIONAL_LOC (yylocp), @@ -919,7 +929,7 @@ b4_syncline([@oline@], [@ofile@]) } -static void +/*ARGSUSED*/ static void yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1) { YYUSE (yy0); @@ -1360,13 +1370,13 @@ yydoAction (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule, do { \ if (yydebug) \ yy_reduce_print Args; \ -} while (/*CONSTCOND*/ 0) +} while (YYID (0)) /*----------------------------------------------------------. | Report that the RULE is going to be reduced on stack #K. | `----------------------------------------------------------*/ -static inline void +/*ARGSUSED*/ static inline void yy_reduce_print (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule, YYSTYPE* yyvalp, YYLTYPE* yylocp]b4_user_formals[) { @@ -2003,7 +2013,7 @@ yyreportSyntaxError (yyGLRStack* yystack, /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP, YYLVALP, and YYLLOCP point to the syntactic category, semantic value, and location of the look-ahead. */ -static void +/*ARGSUSED*/ static void yyrecoverSyntaxError (yyGLRStack* yystack, YYSTYPE* yylvalp, YYLTYPE* YYOPTIONAL_LOC (yyllocp) @@ -2108,7 +2118,7 @@ yyrecoverSyntaxError (yyGLRStack* yystack, default: \ goto yybuglab; \ } \ - } while (/*CONSTCOND*/ 0) + } while (YYID (0)) /*----------. diff --git a/data/glr.cc b/data/glr.cc index a9c85522..52551f03 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -243,7 +243,7 @@ b4_syncline([@oline@], [@ofile@])[ { \ (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ } \ - while (/*CONSTCOND*/ 0) + while (0) #endif namespace yy diff --git a/data/lalr1.cc b/data/lalr1.cc index 38c567ac..d0f3a730 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -321,7 +321,7 @@ b4_syncline([@oline@], [@ofile@])[ #endif /* Suppress unused-variable warnings by "using" E. */ -#define YYUSE(e) do {;} while (false && (e)) +#define YYUSE(e) ((void) (e)) /* A pseudo ostream that takes yydebug_ into account. */ # define YYCDEBUG \ diff --git a/data/yacc.c b/data/yacc.c index e2fa768c..79fc63dc 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -261,7 +261,21 @@ b4_syncline([@oline@], [@ofile@])[ #endif /* Suppress unused-variable warnings by "using" E. */ -#define YYUSE(e) do {;} while (/*CONSTCOND*/ 0 && (e)) +#ifndef lint +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +]b4_c_function_def([YYID], [static int], [[int i], [i]])[ +{ + return i; +} +#endif #if ! defined (yyoverflow) || YYERROR_VERBOSE @@ -292,7 +306,7 @@ b4_syncline([@oline@], [@ofile@])[ # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -369,7 +383,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ - while (/*CONSTCOND*/ 0) + while (YYID (0)) # endif # endif @@ -387,7 +401,7 @@ union yyalloc yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ - while (/*CONSTCOND*/ 0) + while (YYID (0)) #endif @@ -558,7 +572,7 @@ do \ yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \ YYERROR; \ } \ -while (/*CONSTCOND*/ 0) +while (YYID (0)) #define YYTERROR 1 @@ -587,7 +601,7 @@ while (/*CONSTCOND*/ 0) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (/*CONSTCOND*/ 0) + while (YYID (0)) #endif @@ -627,7 +641,7 @@ while (/*CONSTCOND*/ 0) do { \ if (yydebug) \ YYFPRINTF Args; \ -} while (/*CONSTCOND*/ 0) +} while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ @@ -638,7 +652,7 @@ do { \ Type, Value]b4_location_if([, Location])[]b4_user_args[); \ YYFPRINTF (stderr, "\n"); \ } \ -} while (/*CONSTCOND*/ 0) +} while (YYID (0)) ]b4_yysymprint_generate([b4_c_function_def])[ @@ -661,7 +675,7 @@ do { \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ -} while (/*CONSTCOND*/ 0) +} while (YYID (0)) /*------------------------------------------------. @@ -695,7 +709,7 @@ do { \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, ]b4_location_if([yylsp, ])[Rule]b4_user_args[); \ -} while (/*CONSTCOND*/ 0) +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -741,12 +755,10 @@ yystrlen (yystr) const char *yystr; # endif { - const char *yys = yystr; - - while (*yys++ != '\0') + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) continue; - - return yys - yystr - 1; + return yylen; } # endif # endif @@ -894,7 +906,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar) } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= yysize1 < yysize; + yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; @@ -902,7 +914,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar) yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= yysize1 < yysize; + yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) @@ -915,7 +927,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar) produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; - while ((*yyp = *yyf)) + while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) {