public REPL() { vm.AddVar("vm", vm); RegisterFunction("Exit"); Print("Welcome to the Heron interactive interpreter"); Print("To exit, type in 'Exit()' at the prompt"); Print(""); }
public override void Eval(VM vm) { if (value != null) { HeronValue v = vm.Eval(value); vm.AddVar(vardesc, v); } else { vm.AddVar(vardesc); } }
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) { 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); } } }
private void PushArgs(VM vm, HeronValue[] args) { int n = fun.formals.Count; Debug.Assert(n == args.Length); for (int i = 0; i < n; ++i) { vm.AddVar(fun.formals[i], args[i]); } }
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) { 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; } } }