settings: Replace deprecated YYLEX_PARAM with %lex-param

With Bison 3.x support for YYLEX_PARAM has been removed and %lex-param
should be used.  Unfortunately, that option does not take expressions.
Instead we use a wrapper function that calls the lexer with the proper
scanner object, which should also be backward compatible to older Bison
versions.
This commit is contained in:
Tobias Brunner
2014-05-15 11:28:09 +02:00
parent 813e510d69
commit da45f9e994
+7 -3
View File
@@ -50,9 +50,13 @@ static void add_section(parser_helper_t *ctx, section_t *section);
static void add_setting(parser_helper_t *ctx, kv_t *kv);
/**
* Make sure the generated parser code passes the correct object to the lexer
* Make sure to call lexer with the proper context
*/
#define YYLEX_PARAM ctx->scanner
#undef yylex
static int yylex(YYSTYPE *lvalp, parser_helper_t *ctx)
{
return settings_parser_lex(lvalp, ctx->scanner);
}
%}
%debug
@@ -65,7 +69,7 @@ static void add_setting(parser_helper_t *ctx, kv_t *kv);
%name-prefix "settings_parser_"
/* interact properly with the reentrant lexer */
%lex-param {void *scanner}
%lex-param {parser_helper_t *ctx}
%parse-param {parser_helper_t *ctx}
/* types for terminal symbols... (can't use the typedef'd types) */