mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
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'.
This commit is contained in:
@@ -610,8 +610,8 @@ $directives
|
|||||||
#if USE_TOKEN_CTOR
|
#if USE_TOKEN_CTOR
|
||||||
yy::parser::symbol_type yylex();
|
yy::parser::symbol_type yylex();
|
||||||
#else
|
#else
|
||||||
yy::parser::token_type yylex(yy::parser::semantic_type* yylval,
|
yy::parser::token_type yylex(yy::parser::semantic_type* yylvalp,
|
||||||
yy::parser::location_type* yylloc);
|
yy::parser::location_type* yyllocp);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Conversion to string.
|
// Conversion to string.
|
||||||
@@ -682,8 +682,8 @@ static
|
|||||||
#if USE_TOKEN_CTOR
|
#if USE_TOKEN_CTOR
|
||||||
yy::parser::symbol_type yylex()
|
yy::parser::symbol_type yylex()
|
||||||
#else
|
#else
|
||||||
yy::parser::token_type yylex(yy::parser::semantic_type* yylval,
|
yy::parser::token_type yylex(yy::parser::semantic_type* yylvalp,
|
||||||
yy::parser::location_type* yylloc)
|
yy::parser::location_type* yyllocp)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
typedef yy::parser::location_type location_type;
|
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
|
#if USE_TOKEN_CTOR
|
||||||
return yy::parser::make_END_OF_FILE (location_type ());
|
return yy::parser::make_END_OF_FILE (location_type ());
|
||||||
#else
|
#else
|
||||||
*yylloc = location_type ();
|
*yyllocp = location_type ();
|
||||||
return token::END_OF_FILE;
|
return token::END_OF_FILE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -705,13 +705,13 @@ yy::parser::token_type yylex(yy::parser::semantic_type* yylval,
|
|||||||
return yy::parser::make_NUMBER (stage, location_type ());
|
return yy::parser::make_NUMBER (stage, location_type ());
|
||||||
#else
|
#else
|
||||||
# if defined ONE_STAGE_BUILD
|
# if defined ONE_STAGE_BUILD
|
||||||
yylval->build(stage);
|
yylvalp->build(stage);
|
||||||
# elif USE_VARIANTS
|
# elif USE_VARIANTS
|
||||||
yylval->build<int>() = stage;
|
yylvalp->build<int>() = stage;
|
||||||
# else
|
# else
|
||||||
yylval->ival = stage;
|
yylvalp->ival = stage;
|
||||||
# endif
|
# endif
|
||||||
*yylloc = location_type ();
|
*yyllocp = location_type ();
|
||||||
return token::NUMBER;
|
return token::NUMBER;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -721,13 +721,13 @@ yy::parser::token_type yylex(yy::parser::semantic_type* yylval,
|
|||||||
return yy::parser::make_TEXT ("A string.", location_type ());
|
return yy::parser::make_TEXT ("A string.", location_type ());
|
||||||
#else
|
#else
|
||||||
# if defined ONE_STAGE_BUILD
|
# if defined ONE_STAGE_BUILD
|
||||||
yylval->build(std::string("A string."));
|
yylvalp->build(std::string("A string."));
|
||||||
# elif USE_VARIANTS
|
# elif USE_VARIANTS
|
||||||
yylval->build<std::string>() = std::string("A string.");
|
yylvalp->build<std::string>() = std::string("A string.");
|
||||||
# else
|
# else
|
||||||
yylval->sval = new std::string("A string.");
|
yylvalp->sval = new std::string("A string.");
|
||||||
# endif
|
# endif
|
||||||
*yylloc = location_type ();
|
*yyllocp = location_type ();
|
||||||
return token::TEXT;
|
return token::TEXT;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user