From 492dacbc342b4b7435bed2eac9ea99909e0b0aea Mon Sep 17 00:00:00 2001 From: Theophile Ranquet Date: Tue, 15 Jan 2013 17:54:44 +0100 Subject: bench: compatibility for Bison <= 2.7 There used to be a bug in some skeletons, which caused the expansion of 'yylval' and 'yylloc', generating these errors: input.cc:547:16: error: expected ',' or '...' before '(' token #define yylval (yystackp->yyval) ^ input.yy:29:39: note: in expansion of macro 'yylval' int yylex (yy::parser::semantic_type *yylval) ^ This bug is fixed by 'skel: better aliasing of identifiers', but a workaround is useful when benchmarking against older versions of Bison, which are still affected by the bug. * etc/bench.pl.in: Rename yylval to yylvalp and yylloc to yyllocp in base grammar 'list'. --- etc/bench.pl.in | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'etc') diff --git a/etc/bench.pl.in b/etc/bench.pl.in index 83176d5e..aaaf1430 100755 --- a/etc/bench.pl.in +++ b/etc/bench.pl.in @@ -610,8 +610,8 @@ $directives #if USE_TOKEN_CTOR yy::parser::symbol_type yylex(); #else - yy::parser::token_type yylex(yy::parser::semantic_type* yylval, - yy::parser::location_type* yylloc); + yy::parser::token_type yylex(yy::parser::semantic_type* yylvalp, + yy::parser::location_type* yyllocp); #endif // Conversion to string. @@ -682,8 +682,8 @@ static #if USE_TOKEN_CTOR yy::parser::symbol_type yylex() #else -yy::parser::token_type yylex(yy::parser::semantic_type* yylval, - yy::parser::location_type* yylloc) +yy::parser::token_type yylex(yy::parser::semantic_type* yylvalp, + yy::parser::location_type* yyllocp) #endif { typedef yy::parser::location_type location_type; @@ -695,7 +695,7 @@ yy::parser::token_type yylex(yy::parser::semantic_type* yylval, #if USE_TOKEN_CTOR return yy::parser::make_END_OF_FILE (location_type ()); #else - *yylloc = location_type (); + *yyllocp = location_type (); return token::END_OF_FILE; #endif } @@ -705,13 +705,13 @@ yy::parser::token_type yylex(yy::parser::semantic_type* yylval, return yy::parser::make_NUMBER (stage, location_type ()); #else # if defined ONE_STAGE_BUILD - yylval->build(stage); + yylvalp->build(stage); # elif USE_VARIANTS - yylval->build() = stage; + yylvalp->build() = stage; # else - yylval->ival = stage; + yylvalp->ival = stage; # endif - *yylloc = location_type (); + *yyllocp = location_type (); return token::NUMBER; #endif } @@ -721,13 +721,13 @@ yy::parser::token_type yylex(yy::parser::semantic_type* yylval, return yy::parser::make_TEXT ("A string.", location_type ()); #else # if defined ONE_STAGE_BUILD - yylval->build(std::string("A string.")); + yylvalp->build(std::string("A string.")); # elif USE_VARIANTS - yylval->build() = std::string("A string."); + yylvalp->build() = std::string("A string."); # else - yylval->sval = new std::string("A string."); + yylvalp->sval = new std::string("A string."); # endif - *yylloc = location_type (); + *yyllocp = location_type (); return token::TEXT; #endif } -- cgit v1.2.1