diff options
author | Theophile Ranquet <ranquet@lrde.epita.fr> | 2013-01-15 17:54:44 +0100 |
---|---|---|
committer | Theophile Ranquet <ranquet@lrde.epita.fr> | 2013-01-21 15:54:04 +0100 |
commit | 492dacbc342b4b7435bed2eac9ea99909e0b0aea (patch) | |
tree | 11ad3957916733c052d704809215023472288e1f /etc | |
parent | 733fb7c593486846eca5a60d1e3ff6880ce358d7 (diff) | |
download | bison-492dacbc342b4b7435bed2eac9ea99909e0b0aea.tar.gz |
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'.
Diffstat (limited to 'etc')
-rwxr-xr-x | etc/bench.pl.in | 26 |
1 files changed, 13 insertions, 13 deletions
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<int>() = stage; + yylvalp->build<int>() = 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>() = std::string("A string."); + yylvalp->build<std::string>() = 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 } |