From b8cc390e7ed724a9ad605453227d1e4686f3a11b Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Fri, 6 May 2011 22:00:54 +0200 Subject: Fixes several problems in filter syntax. - Fixes several conflicts in the grammar. - Fixes a bug in (a..b, c) pair patterns. - Makes pair patterns orthogonal. - Allows term expressions in pair patterns without additional ( ). - Allows several comma separated values in switch cases. --- conf/cf-lex.l | 4 ++++ conf/confbase.Y | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'conf') diff --git a/conf/cf-lex.l b/conf/cf-lex.l index 828dfd25..a5f70fff 100644 --- a/conf/cf-lex.l +++ b/conf/cf-lex.l @@ -172,6 +172,10 @@ else: { return CLI_MARKER; } +\.\. { + return DDOT; +} + [={}:;,.()+*/%<>~\[\]?!\|-] { return yytext[0]; } diff --git a/conf/confbase.Y b/conf/confbase.Y index 68960c2e..499a770e 100644 --- a/conf/confbase.Y +++ b/conf/confbase.Y @@ -24,6 +24,15 @@ CF_HDR /* FIXME: Turn on YYERROR_VERBOSE and work around lots of bison bugs? */ +CF_DEFINES + +static void +check_u16(unsigned val) +{ + if (val > 0xFFFF) + cf_error("Value %d out of range (0-65535)", val); +} + CF_DECLS %union { @@ -48,7 +57,7 @@ CF_DECLS struct timeformat *tf; } -%token END CLI_MARKER INVALID_TOKEN ELSECOL +%token END CLI_MARKER INVALID_TOKEN ELSECOL DDOT %token GEQ LEQ NEQ AND OR %token PO PC %token NUM ENUM @@ -96,6 +105,8 @@ expr: | SYM { if ($1->class != SYM_NUMBER) cf_error("Number expected"); else $$ = $1->aux; } ; +/* expr_u16: expr { check_u16($1); $$ = $1; }; */ + CF_ADDTO(conf, definition) definition: DEFINE SYM '=' expr ';' { -- cgit v1.2.3