Replace two deprecated parser generator directives

There is a conflict between Flex's bison-bridge and Bison's api.prefix
options.  Apparently, the former was added without consulting the Bison
devs and requires YYSTYPE, which is not added to the header anymore by
the latter.  Instead, we just provide the proper definition of yyflex()
manually (as recommended by the Bison docs), so the option is not
required anymore.
This commit is contained in:
Tobias Brunner
2020-12-15 10:42:43 +01:00
parent 8468b43891
commit 192581e785
4 changed files with 26 additions and 12 deletions
+11 -4
View File
@@ -48,20 +48,27 @@ static void conf_parser_error(parser_helper_t *ctx, const char *s);
* Make sure to call lexer with the proper context
*/
#undef yylex
static int yylex(YYSTYPE *lvalp, parser_helper_t *ctx)
static int yylex(CONF_PARSER_STYPE *yylval, parser_helper_t *ctx)
{
return conf_parser_lex(lvalp, ctx->scanner);
return conf_parser_lex(yylval, ctx->scanner);
}
%}
%debug
/* generate verbose error messages */
%error-verbose
%define parse.error verbose
/* generate a reentrant parser */
%define api.pure
/* prefix function/variable declarations */
%name-prefix "conf_parser_"
%define api.prefix {conf_parser_}
/* make sure flex uses the right definition */
%code provides
{
#define YY_DECL \
int conf_parser_lex(CONF_PARSER_STYPE *yylval, void *yyscanner)
YY_DECL;
}
/* interact properly with the reentrant lexer */
%lex-param {parser_helper_t *ctx}