瀏覽代碼

Block_eval() executes its body in a new environment

master
Ian Piumarta 1 年之前
父節點
當前提交
bc3aae1dcb
共有 1 個文件被更改,包括 4 次插入2 次删除
  1. +4
    -2
      minproto.leg

+ 4
- 2
minproto.leg 查看文件

@ -1,6 +1,6 @@
# minproto.leg -- minimal prototype langauge for semantic experiments
#
# last edited: 2024-05-07 14:39:10 by piumarta on zora-1034.local
# last edited: 2024-05-07 23:23:22 by piumarta on m1mbp
%{
;
@ -1578,7 +1578,9 @@ oop Block_eval(oop exp, oop env)
oop *indexed = _get(body, Object,indexed);
int size = _get(body, Object,isize);
oop result = nil;
for (int i = 0; i < size; ++i) result = eval(indexed[i], env);
oop env2 = new(pObject);
_setDelegate(env2, env);
for (int i = 0; i < size; ++i) result = eval(indexed[i], env2);
return result;
}

Loading…
取消
儲存