summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorStephen Dolan <mu@netsoc.tcd.ie>2013-06-18 01:07:18 +0100
committerStephen Dolan <mu@netsoc.tcd.ie>2013-06-18 01:07:18 +0100
commit824ce76cecd11863f6c86cf04e3a56075cbcd30a (patch)
treec1cff96b8d5e0464a11de677c9e7827d5f6b578c /parser.y
parent2a18f97d12d48dcf92fbbfb15aea0fd02f763283 (diff)
Simplify block functions for variables
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y18
1 files changed, 8 insertions, 10 deletions
diff --git a/parser.y b/parser.y
index 8d451e9d..4ec10383 100644
--- a/parser.y
+++ b/parser.y
@@ -170,24 +170,22 @@ static block gen_format(block a, jv fmt) {
}
static block gen_definedor_assign(block object, block val) {
- block tmp = block_bind(gen_op_var_unbound(STOREV, "tmp"),
- gen_noop(), OP_HAS_VARIABLE);
+ block tmp = gen_op_var_fresh(STOREV, "tmp");
return BLOCK(gen_op_simple(DUP),
val, tmp,
gen_call("_modify", BLOCK(gen_lambda(object),
gen_lambda(gen_definedor(gen_noop(),
- gen_op_var_bound(LOADV, tmp))))));
+ gen_op_bound(LOADV, tmp))))));
}
static block gen_update(block object, block val, int optype) {
- block tmp = block_bind(gen_op_var_unbound(STOREV, "tmp"),
- gen_noop(), OP_HAS_VARIABLE);
+ block tmp = gen_op_var_fresh(STOREV, "tmp");
return BLOCK(gen_op_simple(DUP),
val,
tmp,
gen_call("_modify", BLOCK(gen_lambda(object),
gen_lambda(gen_binop(gen_noop(),
- gen_op_var_bound(LOADV, tmp),
+ gen_op_bound(LOADV, tmp),
optype)))));
}
@@ -337,7 +335,7 @@ FuncDef:
"def" IDENT '(' IDENT ')' ':' Exp ';' {
$$ = gen_function(jv_string_value($2),
- gen_op_block_unbound(CLOSURE_PARAM, jv_string_value($4)),
+ gen_param(jv_string_value($4)),
$7);
jv_free($2);
jv_free($4);
@@ -345,8 +343,8 @@ FuncDef:
"def" IDENT '(' IDENT ';' IDENT ')' ':' Exp ';' {
$$ = gen_function(jv_string_value($2),
- BLOCK(gen_op_block_unbound(CLOSURE_PARAM, jv_string_value($4)),
- gen_op_block_unbound(CLOSURE_PARAM, jv_string_value($6))),
+ BLOCK(gen_param(jv_string_value($4)),
+ gen_param(jv_string_value($6))),
$9);
jv_free($2);
jv_free($4);
@@ -459,7 +457,7 @@ FORMAT {
$$ = BLOCK(gen_subexp(gen_const(jv_object())), $2, gen_op_simple(POP));
} |
'$' IDENT {
- $$ = gen_location(@$, gen_op_var_unbound(LOADV, jv_string_value($2)));
+ $$ = gen_location(@$, gen_op_unbound(LOADV, jv_string_value($2)));
jv_free($2);
} |
IDENT {