]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Resolved conflicts, you no longer need to wrap constants in const()
authorPavel Machek <pavel@ucw.cz>
Tue, 9 Mar 1999 14:45:27 +0000 (14:45 +0000)
committerPavel Machek <pavel@ucw.cz>
Tue, 9 Mar 1999 14:45:27 +0000 (14:45 +0000)
filter/config.Y

index bdaedaaf9b19021a8140488807bc0cd05cd6fe6c..103acd8ba8d10e4aa03196864a60d11367441648 100644 (file)
@@ -22,6 +22,7 @@ CF_DECLS
 CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, DIE, IF)
 
 %type <x> term
+%type <x> block
 %type <x> 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';