mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	Resolved conflicts, you no longer need to wrap constants in const()
This commit is contained in:
		| @@ -22,6 +22,7 @@ CF_DECLS | |||||||
| CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, DIE, IF) | CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, DIE, IF) | ||||||
|  |  | ||||||
| %type <x> term | %type <x> term | ||||||
|  | %type <x> block | ||||||
| %type <x> cmds | %type <x> cmds | ||||||
|  |  | ||||||
| CF_GRAMMAR | CF_GRAMMAR | ||||||
| @@ -65,6 +66,15 @@ cmds: | |||||||
|    } |    } | ||||||
|  ; |  ; | ||||||
|  |  | ||||||
|  | block: | ||||||
|  |    term ';' { | ||||||
|  |      $$=$1; | ||||||
|  |    } | ||||||
|  |  | '{' cmds '}' { | ||||||
|  |      $$=$2; | ||||||
|  |    } | ||||||
|  |  ; | ||||||
|  |  | ||||||
| term: | term: | ||||||
|    /* EMPTY */ {  |    /* EMPTY */ {  | ||||||
|      $$ = NULL; |      $$ = NULL; | ||||||
| @@ -75,13 +85,7 @@ term: | |||||||
|      $$->arg1 = $1; |      $$->arg1 = $1; | ||||||
|      $$->arg2 = $3; |      $$->arg2 = $3; | ||||||
|    } |    } | ||||||
|  | IF '(' term ')' '{' cmds '}' { |  | IF '(' term ')' block { | ||||||
|      $$ = f_new_inst(); |  | ||||||
|      $$->code = '?'; |  | ||||||
|      $$->arg1 = $3; |  | ||||||
|      $$->arg2 = $6; |  | ||||||
|    } |  | ||||||
|  | IF '(' term ')' term { |  | ||||||
|      $$ = f_new_inst(); |      $$ = f_new_inst(); | ||||||
|      $$->code = '?'; |      $$->code = '?'; | ||||||
|      $$->arg1 = $3; |      $$->arg1 = $3; | ||||||
| @@ -93,6 +97,17 @@ term: | |||||||
|      printf( "New variable\n" ); |      printf( "New variable\n" ); | ||||||
|      $$ = NULL; |      $$ = 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 ')' { |  | VAR '(' SYM ')' { | ||||||
|      $$ = f_new_inst(); |      $$ = f_new_inst(); | ||||||
|      switch ($3->class) { |      switch ($3->class) { | ||||||
| @@ -104,6 +119,11 @@ term: | |||||||
| 	 cf_error("Can not use this class of symbol as variable" ); | 	 cf_error("Can not use this class of symbol as variable" ); | ||||||
|      } |      } | ||||||
|    } |    } | ||||||
|  |  | NUM { | ||||||
|  |      $$ = f_new_inst(); | ||||||
|  |      $$->code = 'c'; | ||||||
|  |      $$->arg1 = $1 | ||||||
|  |    } | ||||||
|  | CONST '(' expr ')' { |  | CONST '(' expr ')' { | ||||||
|      $$ = f_new_inst(); |      $$ = f_new_inst(); | ||||||
|      $$->code = 'c'; |      $$->code = 'c'; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user