Commit 2575593e authored by Pavel Machek's avatar Pavel Machek
Browse files

Resolved conflicts, you no longer need to wrap constants in const()

parent 1aa5cf1c
......@@ -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';
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment