Ejemplo n.º 1
0
 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("");
 }
Ejemplo n.º 2
0
 public override void Eval(VM vm)
 {
     if (value != null)
     {
         HeronValue v = vm.Eval(value);
         vm.AddVar(vardesc, v);
     }
     else
     {
         vm.AddVar(vardesc);
     }
 }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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);
                }
            }
        }
Ejemplo n.º 5
0
 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]);
     }
 }
Ejemplo n.º 6
0
        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]);
            }
        }
Ejemplo n.º 7
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 8
0
 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);
         }
     }
 }
Ejemplo n.º 9
0
 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;
         }
     }
 }
Ejemplo n.º 10
0
 public override void Eval(VM vm)
 {
     if (value != null)
     {
         HeronValue v = vm.Eval(value);
         vm.AddVar(vardesc, v);
     }
     else
     {
         vm.AddVar(vardesc);
     }
 }