diff --git a/src/libstrongswan/settings/settings_lexer.l b/src/libstrongswan/settings/settings_lexer.l index e8c2b9884..cd9b5ff5e 100644 --- a/src/libstrongswan/settings/settings_lexer.l +++ b/src/libstrongswan/settings/settings_lexer.l @@ -37,8 +37,8 @@ static void include_files(parser_helper_t *ctx); /* due to that disable interactive mode, which requires isatty() */ %option never-interactive -/* don't use global variables, and interact properly with bison */ -%option reentrant bison-bridge +/* don't use global variables */ +%option reentrant /* maintain the line number */ %option yylineno diff --git a/src/libstrongswan/settings/settings_parser.y b/src/libstrongswan/settings/settings_parser.y index cc1c91775..a541e6b9c 100644 --- a/src/libstrongswan/settings/settings_parser.y +++ b/src/libstrongswan/settings/settings_parser.y @@ -55,20 +55,27 @@ static void add_references(parser_helper_t *ctx, array_t *references); * Make sure to call lexer with the proper context */ #undef yylex -static int yylex(YYSTYPE *lvalp, parser_helper_t *ctx) +static int yylex(SETTINGS_PARSER_STYPE *yylval, parser_helper_t *ctx) { - return settings_parser_lex(lvalp, ctx->scanner); + return settings_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 "settings_parser_" +%define api.prefix {settings_parser_} +/* make sure flex uses the right definition */ +%code provides +{ + #define YY_DECL \ + int settings_parser_lex(SETTINGS_PARSER_STYPE *yylval, void *yyscanner) + YY_DECL; +} /* interact properly with the reentrant lexer */ %lex-param {parser_helper_t *ctx} diff --git a/src/starter/parser/lexer.l b/src/starter/parser/lexer.l index 1faec953e..c856af77d 100644 --- a/src/starter/parser/lexer.l +++ b/src/starter/parser/lexer.l @@ -38,8 +38,8 @@ static void include_files(parser_helper_t *ctx); /* due to that disable interactive mode, which requires isatty() */ %option never-interactive -/* don't use global variables, and interact properly with bison */ -%option reentrant bison-bridge +/* don't use global variables */ +%option reentrant /* maintain the line number */ %option yylineno diff --git a/src/starter/parser/parser.y b/src/starter/parser/parser.y index 1371fe931..09325d975 100644 --- a/src/starter/parser/parser.y +++ b/src/starter/parser/parser.y @@ -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}