bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 'lint' fixes for Bison-generated parsers


From: Akim Demaille
Subject: Re: 'lint' fixes for Bison-generated parsers
Date: Mon, 12 Dec 2005 09:35:44 +0100
User-agent: Gnus/5.110004 (No Gnus v0.4) Emacs/21.4 (gnu/linux)

>>> "Paul" == Paul Eggert <address@hidden> writes:

 > I installed the following patch, which I hope fixes the YYUSE problems
 > discussed in the "%destructor feedback" thread.

 > 2005-12-09  Paul Eggert  <address@hidden>

 >      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.

Congratulations!  That one was quite tricky...  Dare I suggest that
you might want to report this knowledge somewhere, e.g., autoconf.texi?
$0.02 from someone-who-did-nothing-but-suggests-others-to-do-more.

 > @@ -894,7 +906,7 @@ yysyntax_error (char *yyresult, int yyst
 >                }
 >              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;

I don't get that one.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]