summaryrefslogtreecommitdiffstats
path: root/conf
diff options
context:
space:
mode:
Diffstat (limited to 'conf')
-rw-r--r--conf/cf-lex.l4
-rw-r--r--conf/confbase.Y13
2 files changed, 16 insertions, 1 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l
index 828dfd2..a5f70ff 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 68960c2..499a770 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 ';' {