diff options
Diffstat (limited to 'conf')
-rw-r--r-- | conf/cf-lex.l | 4 | ||||
-rw-r--r-- | conf/confbase.Y | 13 |
2 files changed, 16 insertions, 1 deletions
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 <i> 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 ';' { |