From 0b61ebf351a69a3451727254eec2c7e1cc024b4c Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 24 Mar 2012 23:10:10 +0100 Subject: Remove context argument from lexer call --- src/config.l | 21 ++++++++++++--------- src/config.y | 5 +++-- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/config.l b/src/config.l index f18dca7..5e5e666 100644 --- a/src/config.l +++ b/src/config.l @@ -4,11 +4,7 @@ %option reentrant %top { - #define YY_DECL int fastd_config_lex(YYSTYPE *yylval_param, fastd_context *ctx, void *yyscanner) - - #include #include - YY_DECL; } %x STRING @@ -26,8 +22,10 @@ peer { yylval->str = yytext; return TOK_PEER; } address { yylval->str = yytext; return TOK_ADDRESS; } [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} { - if (!inet_pton(AF_INET, yytext, &yylval->addr)) - exit_error(ctx, "config error: invalid address"); + if (!inet_pton(AF_INET, yytext, &yylval->addr)) { + yylval->str = "invalid address"; + return TOK_ERROR; + } return TOK_ADDR; } @@ -48,12 +46,17 @@ tun { yylval->str = yytext; return TOK_TUN; } \[ BEGIN(ADDR6); [^\]]+ { - if (!inet_pton(AF_INET6, yytext, &yylval->addr6)) - exit_error(ctx, "config error: invalid address"); + if (!inet_pton(AF_INET6, yytext, &yylval->addr6)) { + yylval->str = "invalid address"; + return TOK_ERROR; + } return TOK_ADDR6; } \] BEGIN(INITIAL); -. exit_error(ctx, "config error: invalid character"); +. { + yylval->str = "invalid character"; + return TOK_ERROR; + } %% diff --git a/src/config.y b/src/config.y index c81b370..9a0d333 100644 --- a/src/config.y +++ b/src/config.y @@ -1,6 +1,5 @@ %define api.pure %name-prefix "fastd_config_" -%lex-param {fastd_context *ctx} %lex-param {yyscan_t scanner} %parse-param {fastd_context *ctx} %parse-param {fastd_config *conf} @@ -17,6 +16,8 @@ struct in6_addr addr6; } +%token TOK_ERROR; + %token TOK_INTEGER %token TOK_STRING %token TOK_IDENTIFIER @@ -52,7 +53,7 @@ } %code provides { - #include + #include int fastd_config_parse (fastd_context *ctx, fastd_config *conf, void *scanner); } -- cgit v1.2.3