0
0
Fork 0
mirror of https://git.code.sf.net/p/quake/quakeforge synced 2025-03-23 10:50:58 +00:00

make the expressions in for (a;b;c) optional

This commit is contained in:
Bill Currie 2001-08-01 06:29:09 +00:00
parent e8c0af9c40
commit d89cd91e4b

View file

@ -65,7 +65,7 @@ typedef struct {
%type <type> type maybe_func
%type <def> param param_list def_item def_list def_name
%type <expr> const expr arg_list
%type <expr> const opt_expr expr arg_list
%type <expr> statement statements statement_block
%type <function> begin_function
@ -408,7 +408,7 @@ statement
append_expr ($$, $7);
append_expr ($$, l2);
}
| FOR '(' expr ';' expr ';' expr ')' statement
| FOR '(' opt_expr ';' opt_expr ';' opt_expr ')' statement
{
expr_t *l1 = new_label_expr ();
expr_t *l2 = new_label_expr ();
@ -416,11 +416,13 @@ statement
$$ = new_block_expr ();
append_expr ($$, $3);
append_expr ($$, new_binary_expr ('n', test_expr ($5, 1), l2));
if ($5)
append_expr ($$, new_binary_expr ('n', test_expr ($5, 1), l2));
append_expr ($$, l1);
append_expr ($$, $9);
append_expr ($$, $7);
append_expr ($$, new_binary_expr ('i', test_expr ($5, 1), l1));
if ($5)
append_expr ($$, new_binary_expr ('i', test_expr ($5, 1), l1));
append_expr ($$, l2);
}
| expr ';'
@ -429,6 +431,13 @@ statement
}
;
opt_expr
: expr
| /* empty */
{
$$ = 0;
}
expr
: expr '=' expr { $$ = binary_expr ('=', $1, $3); }
| expr AND expr { $$ = binary_expr (AND, $1, $3); }