Пример #1
0
        public int PushLocal(string name, EvalObject val)
        {
            var id = idCounter++;

            locals.Add(new Local(id, name, val));
            return(id);
        }
Пример #2
0
            public EvalObject Call(EvalObject arg, Environment env)
            {
                var i   = env.PushLocal(param, arg);
                var res = Evaluator.Instance.Eval(body);

                env.PopLocal(i);
                return(res);
            }
Пример #3
0
 public EvalObject Assign(string name, EvalObject val)
 {
     for (int i = locals.Count - 1; i >= 0; --i)
     {
         var l = locals[i];
         if (l.name == name)
         {
             return(l.val = val);
         }
     }
     return(values[name] = val);
 }
Пример #4
0
 public Local(int id, string name, EvalObject val)
 {
     this.id   = id;
     this.name = name;
     this.val  = val;
 }
Пример #5
0
 public EvalObject Call(EvalObject arg)
 {
     return(val(arg));
 }