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'.
#if USE_TOKEN_CTOR
yy::parser::symbol_type yylex();
#else
#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.
#endif
// Conversion to string.
#if USE_TOKEN_CTOR
yy::parser::symbol_type yylex()
#else
#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;
#endif
{
typedef yy::parser::location_type location_type;
#if USE_TOKEN_CTOR
return yy::parser::make_END_OF_FILE (location_type ());
#else
#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
}
return token::END_OF_FILE;
#endif
}
return yy::parser::make_NUMBER (stage, location_type ());
#else
# if defined ONE_STAGE_BUILD
return yy::parser::make_NUMBER (stage, location_type ());
#else
# if defined ONE_STAGE_BUILD
- yylval->build<int>() = stage;
+ yylvalp->build<int>() = stage;
- *yylloc = location_type ();
+ *yyllocp = location_type ();
return token::NUMBER;
#endif
}
return token::NUMBER;
#endif
}
return yy::parser::make_TEXT ("A string.", location_type ());
#else
# if defined ONE_STAGE_BUILD
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."));
- yylval->build<std::string>() = std::string("A string.");
+ yylvalp->build<std::string>() = std::string("A string.");
- yylval->sval = new std::string("A string.");
+ yylvalp->sval = new std::string("A string.");
- *yylloc = location_type ();
+ *yyllocp = location_type ();
return token::TEXT;
#endif
}
return token::TEXT;
#endif
}