mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-01-18 15:01:41 +00:00
fix -expr handling. generates sucky code atm, but at least it's generating
code now:P
This commit is contained in:
parent
638cd005b0
commit
0c2cd8633c
2 changed files with 20 additions and 18 deletions
|
@ -1233,6 +1233,8 @@ emit_sub_expr (expr_t *e, def_t *dest)
|
|||
} else {
|
||||
abort ();
|
||||
}
|
||||
if (!dest)
|
||||
dest = PR_GetTempDef (e->e.expr.type, pr_scope);
|
||||
op = PR_Opcode_Find (operator, priority, def_a, def_b, dest);
|
||||
return emit_statement (e->line, op, def_a, def_b, dest);
|
||||
case ex_def:
|
||||
|
|
|
@ -427,26 +427,26 @@ statement
|
|||
;
|
||||
|
||||
expr
|
||||
: expr '=' expr { $$ = binary_expr ('=', $1, $3); }
|
||||
| expr AND expr { $$ = binary_expr (AND, $1, $3); }
|
||||
| expr OR expr { $$ = binary_expr (OR, $1, $3); }
|
||||
| expr EQ expr { $$ = binary_expr (EQ, $1, $3); }
|
||||
| expr NE expr { $$ = binary_expr (NE, $1, $3); }
|
||||
| expr LE expr { $$ = binary_expr (LE, $1, $3); }
|
||||
| expr GE expr { $$ = binary_expr (GE, $1, $3); }
|
||||
| expr LT expr { $$ = binary_expr (LT, $1, $3); }
|
||||
| expr GT expr { $$ = binary_expr (GT, $1, $3); }
|
||||
| expr '+' expr { $$ = binary_expr ('+', $1, $3); }
|
||||
| expr '-' expr { $$ = binary_expr ('-', $1, $3); }
|
||||
| expr '*' expr { $$ = binary_expr ('*', $1, $3); }
|
||||
| expr '/' expr { $$ = binary_expr ('/', $1, $3); }
|
||||
| expr '&' expr { $$ = binary_expr ('&', $1, $3); }
|
||||
| expr '|' expr { $$ = binary_expr ('|', $1, $3); }
|
||||
: expr '=' expr { $$ = binary_expr ('=', $1, $3); }
|
||||
| expr AND expr { $$ = binary_expr (AND, $1, $3); }
|
||||
| expr OR expr { $$ = binary_expr (OR, $1, $3); }
|
||||
| expr EQ expr { $$ = binary_expr (EQ, $1, $3); }
|
||||
| expr NE expr { $$ = binary_expr (NE, $1, $3); }
|
||||
| expr LE expr { $$ = binary_expr (LE, $1, $3); }
|
||||
| expr GE expr { $$ = binary_expr (GE, $1, $3); }
|
||||
| expr LT expr { $$ = binary_expr (LT, $1, $3); }
|
||||
| expr GT expr { $$ = binary_expr (GT, $1, $3); }
|
||||
| expr '+' expr { $$ = binary_expr ('+', $1, $3); }
|
||||
| expr '-' expr { $$ = binary_expr ('-', $1, $3); }
|
||||
| expr '*' expr { $$ = binary_expr ('*', $1, $3); }
|
||||
| expr '/' expr { $$ = binary_expr ('/', $1, $3); }
|
||||
| expr '&' expr { $$ = binary_expr ('&', $1, $3); }
|
||||
| expr '|' expr { $$ = binary_expr ('|', $1, $3); }
|
||||
| expr '(' arg_list ')' { $$ = function_expr ($1, $3); }
|
||||
| expr '(' ')' { $$ = function_expr ($1, 0); }
|
||||
| expr '.' expr { $$ = binary_expr ('.', $1, $3); }
|
||||
| '-' expr { $$ = unary_expr ('-', $2); }
|
||||
| '!' expr { $$ = unary_expr ('!', $2); }
|
||||
| expr '.' expr { $$ = binary_expr ('.', $1, $3); }
|
||||
| '-' expr %prec '!' { $$ = unary_expr ('-', $2); }
|
||||
| '!' expr { $$ = unary_expr ('!', $2); }
|
||||
| NAME
|
||||
{
|
||||
$$ = new_expr ();
|
||||
|
|
Loading…
Reference in a new issue