The bison 1.875 will produce the following code: #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) __attribute__ ((__unused__)) #endif When the `__attribute__ ((__unused__))' be compiled, we'll get the following error msg: parser.tab.cxx: In function `int yyparse()': parser.tab.cxx:2754: error: expected primary-expression My g++ is system builtin version, 3.4.2 [FreeBSD] 20040728. Fix: The solution refers to http://lists.gnu.org/archive/html/bison-patches/2003-01/msg00047.html and I reproduce a patch file here: How-To-Repeat: Any yacc source code which could trigger that conditional compilation. You can search from Google by the keywords `bison', `__attribute__', and `__unused__' for more information.
Responsible Changed From-To: freebsd-ports-bugs->seanc Over to maintainer.
corrected patch. --- data/yacc.c.orig Fri Dec 3 11:52:11 2004 +++ data/yacc.c Fri Dec 3 11:52:11 2004 @@ -465,7 +465,14 @@ #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 +#define YYERROR ]b4_location_if([do \ + { \ + yylerrsp = ylap; \ + *++yylerrsp = yyloc; \ + goto yyerrlab1; \ + } \ + while (0)], + [goto yyerrlab1])[ /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. @@ -1103,7 +1110,7 @@ /* Else will try to reuse lookahead token after shifting the error token. */ - goto yyerrlab2; + goto yyerrlab1; /*----------------------------------------------------. @@ -1111,21 +1118,6 @@ `----------------------------------------------------*/ yyerrlab1: - /* Suppress GCC warning that yyerrlab1 is unused when no action - invokes YYERROR. */ -#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) - __attribute__ ((__unused__)) -#endif - -]b4_location_if([ yylerrsp = yylsp; - *++yylerrsp = yyloc;])[ - goto yyerrlab2; - - -/*---------------------------------------------------------------. -| yyerrlab2 -- pop states until the error token can be shifted. | -`---------------------------------------------------------------*/ -yyerrlab2: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;)
State Changed From-To: open->closed Patch committed, thank you!!!