Ejemplo n.º 1
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.º 2
0
 public void Add(VarDesc v)
 {
     int n = Count;
     vars.Add(v);
     values.Add(HeronValue.Null);
     lookup.Add(v.name, n);
 }
Ejemplo n.º 3
0
 public void Add(VarDesc v, HeronValue x)
 {
     x = v.Coerce(x);
     int n = Count;
     vars.Add(v);
     values.Add(x);
     lookup.Add(v.name, n);
 }
Ejemplo n.º 4
0
        public void Add(VarDesc v)
        {
            int n = Count;

            vars.Add(v);
            values.Add(HeronValue.Null);
            lookup.Add(v.name, n);
        }
Ejemplo n.º 5
0
        public void Add(VarDesc v, HeronValue x)
        {
            x = v.Coerce(x);
            int n = Count;

            vars.Add(v);
            values.Add(x);
            lookup.Add(v.name, n);
        }
Ejemplo n.º 6
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.º 7
0
        public void ResolveTypes(ModuleDefn global, ModuleDefn m)
        {
            foreach (FieldInfo fi in GetInstanceFields())
            {
                if (fi.FieldType.Equals(typeof(HeronType)))
                {
                    HeronType t = fi.GetValue(this) as HeronType;
                    fi.SetValue(this, t.Resolve(global, m));
                }
                else if (fi.FieldType.Equals(typeof(VarDesc)))
                {
                    VarDesc vd = fi.GetValue(this) as VarDesc;
                    vd.ResolveTypes(global, m);
                }
            }

            foreach (Expression x in GetSubExpressions())
            {
                x.ResolveAllTypes(global, m);
            }
        }
Ejemplo n.º 8
0
 public void AddVar(VarDesc v, HeronValue x)
 {
     scopes.Peek().Add(v, x);
 }
Ejemplo n.º 9
0
 public void AddVar(VarDesc v)
 {
     scopes.Peek().Add(v);
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Creates a new variable name in the current scope.
 /// </summary>
 /// <param name="s"></param>
 /// <param name="o"></param>
 public void AddVar(VarDesc v, HeronValue x)
 {
     frames.Peek().AddVar(v, x);
 }
Ejemplo n.º 11
0
 public void AddVar(VarDesc v)
 {
     frames.Peek().AddVar(v);
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Adds a field. FieldDefn must not already exist.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="val"></param>
 public void AddField(VarDesc v)
 {
     AssureFieldDoesntExist(v.name);
     fields.Add(v);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Adds a field. FieldDefn must not already exist.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="val"></param>
 public void AddField(VarDesc v, HeronValue val)
 {
     AssureFieldDoesntExist(v.name);
     fields.Add(v, val);
 }
Ejemplo n.º 14
0
 public void AddVar(VarDesc v, HeronValue x)
 {
     scopes.Peek().Add(v, x);
 }
Ejemplo n.º 15
0
 public void AddVar(VarDesc v)
 {
     scopes.Peek().Add(v);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// Adds a field. FieldDefn must not already exist. 
 /// </summary>
 /// <param name="name"></param>
 /// <param name="val"></param>
 public void AddField(VarDesc v)
 {
     AssureFieldDoesntExist(v.name);
     fields.Add(v);
 }
Ejemplo n.º 17
0
 /// <summary>
 /// Adds a field. FieldDefn must not already exist. 
 /// </summary>
 /// <param name="name"></param>
 /// <param name="val"></param>
 public void AddField(VarDesc v, HeronValue val)
 {
     AssureFieldDoesntExist(v.name);
     fields.Add(v, val);
 }
Ejemplo n.º 18
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.º 19
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.º 20
0
 public void AddVar(VarDesc v)
 {
     frames.Peek().AddVar(v);
 }
Ejemplo n.º 21
0
 /// <summary>
 /// Creates a new variable name in the current scope.
 /// </summary>
 /// <param name="s"></param>
 /// <param name="o"></param>
 public void AddVar(VarDesc v, HeronValue x)
 {
     frames.Peek().AddVar(v, x);
 }