first pass at assignment

This commit is contained in:
Stephen Dolan committed 2012-08-27 10:12:02 +01:00
1 parent a847d2250f
commit 6c8b55793a
8 files changed
+117 -11

No files matched your search

+18
View File
@@ -28,6 +28,8 @@
%token EQ "=="
%token AS "as"
%token DEF "def"
%token SETPIPE "|="
%nonassoc '=' SETPIPE
%nonassoc EQ
%left '+'
@@ -76,6 +78,22 @@ Term "as" '$' IDENT '|' Exp {
block_append(&$$, block_bind(gen_op_var_unbound(STOREV, $4), $6, OP_HAS_VARIABLE));
} |
Exp '=' Exp {
block assign = gen_op_simple(DUP);
block_append(&assign, $3);
block_append(&assign, gen_op_simple(SWAP));
block_append(&assign, $1);
block_append(&assign, gen_op_simple(SWAP));
$$ = gen_assign(assign);
} |
Exp "|=" Exp {
block assign = $1;
block_append(&assign, gen_op_simple(DUP));
block_append(&assign, $3);
$$ = gen_assign(assign);
} |
Exp '|' Exp {
$$ = block_join($1, $3);
} |