From 26d92bb8921ac4e022cdc88bde8fc7bc617f8766 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Wed, 23 Mar 2011 12:49:53 +0100 Subject: 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. --- conf/cf-lex.l | 5 +++++ conf/confbase.Y | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'conf') 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 NUM ENUM -- cgit v1.2.3