public override void Eval(VM vm) { HeronValue initVal = initial.Eval(vm); VarDesc desc = new VarDesc(name); using (vm.CreateScope()) { vm.AddVar(desc, initVal); while (true) { HeronValue condVal = vm.Eval(condition); bool b = condVal.ToBool(); if (!b) { return; } vm.Eval(body); if (vm.ShouldExitScope()) { return; } vm.Eval(next); } } }
public override void Eval(VM vm) { using (vm.CreateScope()) { foreach (Statement s in statements) { vm.Eval(s); if (vm.ShouldExitScope()) { return; } } } }
public override HeronValue Eval(VM vm) { using (vm.CreateScope()) { vm.AddVar(new VarDesc(acc), vm.Eval(init)); vm.AddVar(new VarDesc(each), HeronValue.Null); foreach (HeronValue x in vm.EvalListAsDotNet(list)) { vm.SetVar(each, x); vm.SetVar(acc, vm.Eval(expr)); } return(vm.LookupName(acc)); } }
public override void Eval(VM vm) { VarDesc desc = new VarDesc(name); foreach (HeronValue x in vm.EvalListAsDotNet(collection)) { using (vm.CreateScope()) { vm.AddVar(desc, x); vm.Eval(body); if (vm.ShouldExitScope()) { return; } } } }
public override void Eval(VM vm) { using (vm.CreateScope()) { foreach (Statement s in statements) { vm.Eval(s); if (vm.ShouldExitScope()) return; } } }
public override void Eval(VM vm) { HeronValue initVal = initial.Eval(vm); VarDesc desc = new VarDesc(name); using (vm.CreateScope()) { vm.AddVar(desc, initVal); while (true) { HeronValue condVal = vm.Eval(condition); bool b = condVal.ToBool(); if (!b) return; vm.Eval(body); if (vm.ShouldExitScope()) return; vm.Eval(next); } } }
public override void Eval(VM vm) { VarDesc desc = new VarDesc(name); foreach (HeronValue x in vm.EvalListAsDotNet(collection)) { using (vm.CreateScope()) { vm.AddVar(desc, x); vm.Eval(body); if (vm.ShouldExitScope()) return; } } }