From 2575593e0fa9fb84a4cc481928c32519b3fea2cd Mon Sep 17 00:00:00 2001 From: Pavel Machek Date: Tue, 9 Mar 1999 14:45:27 +0000 Subject: Resolved conflicts, you no longer need to wrap constants in const() --- filter/config.Y | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'filter') diff --git a/filter/config.Y b/filter/config.Y index bdaedaa..103acd8 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -22,6 +22,7 @@ CF_DECLS CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, DIE, IF) %type term +%type block %type cmds CF_GRAMMAR @@ -65,6 +66,15 @@ cmds: } ; +block: + term ';' { + $$=$1; + } + | '{' cmds '}' { + $$=$2; + } + ; + term: /* EMPTY */ { $$ = NULL; @@ -75,13 +85,7 @@ term: $$->arg1 = $1; $$->arg2 = $3; } - | IF '(' term ')' '{' cmds '}' { - $$ = f_new_inst(); - $$->code = '?'; - $$->arg1 = $3; - $$->arg2 = $6; - } - | IF '(' term ')' term { + | IF '(' term ')' block { $$ = f_new_inst(); $$->code = '?'; $$->arg1 = $3; @@ -93,6 +97,17 @@ term: printf( "New variable\n" ); $$ = NULL; } + | SYM { + $$ = f_new_inst(); + switch ($1->class) { + case SYM_VARIABLE_INT: + $$->code = 'i'; + $$->arg1 = &($1->aux); + break; + default: + cf_error("Can not use this class of symbol as variable" ); + } + } | VAR '(' SYM ')' { $$ = f_new_inst(); switch ($3->class) { @@ -104,6 +119,11 @@ term: cf_error("Can not use this class of symbol as variable" ); } } + | NUM { + $$ = f_new_inst(); + $$->code = 'c'; + $$->arg1 = $1 + } | CONST '(' expr ')' { $$ = f_new_inst(); $$->code = 'c'; -- cgit v1.2.3