diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2011-03-23 12:49:53 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2011-03-23 12:49:53 +0100 |
commit | 26d92bb8921ac4e022cdc88bde8fc7bc617f8766 (patch) | |
tree | 5e900b466e46e1848b4d2bd98a5894cf6214b08b /conf | |
parent | 6bcef22580010aec695fb2b559c7b33ee00261b0 (diff) | |
download | bird-26d92bb8921ac4e022cdc88bde8fc7bc617f8766.tar bird-26d92bb8921ac4e022cdc88bde8fc7bc617f8766.zip |
A hack to distinguish if..else from else: in case.
The old BIRD grammar needs two lookaheads to distinguish if..else from
else: in case, which caused the parser to fail on some combinations of
both expressions.
This patch replaces two tokens 'else' ':' by one token 'else:' to fix
that.
Diffstat (limited to 'conf')
-rw-r--r-- | conf/cf-lex.l | 5 | ||||
-rw-r--r-- | conf/confbase.Y | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l index c6e9a0e..828dfd2 100644 --- a/conf/cf-lex.l +++ b/conf/cf-lex.l @@ -137,6 +137,11 @@ WHITE [ \t] return NUM; } +else: { + /* Hack to distinguish if..else from else: in case */ + return ELSECOL; +} + ({ALPHA}{ALNUM}*|[']({ALNUM}|[-])*[']) { if(*yytext == '\'') { yytext[yyleng-1] = 0; diff --git a/conf/confbase.Y b/conf/confbase.Y index ce844ba..68960c2 100644 --- a/conf/confbase.Y +++ b/conf/confbase.Y @@ -48,7 +48,7 @@ CF_DECLS struct timeformat *tf; } -%token END CLI_MARKER INVALID_TOKEN +%token END CLI_MARKER INVALID_TOKEN ELSECOL %token GEQ LEQ NEQ AND OR %token PO PC %token <i> NUM ENUM |