示例#1
0
        public dynamic Call(NyaObject env, List <NyaObject> arguments)
        {
            //It's a method call
            var e = new Env(env);

            for (var i = 0; i < @params.Count; i++)
            {
                var param = @params[i];
                if (e.locals.ContainsKey(param))
                {
                    e.locals[param] = arguments[i];
                }
                else
                {
                    e.locals.Add(param, arguments[i]);
                }
            }
            return(body.eval(e));
        }
示例#2
0
        public NyaClass(NyaClass @base)
        {
            base_class = @base;

            //To solve chicken-egg problem
            NyaClass runtime_class = null;

            if (RuntimeFactory.Runtime != null)
            {
                runtime_class = (NyaClass)RuntimeFactory.Runtime["Class"];
                if (base_class == null)
                {
                    base_class = (NyaClass)RuntimeFactory.Runtime["Class"];
                }
            }
            else
            {
                runtime_class = null;
            }

            //Csharp do not allow init parent after child
            base.Init(runtime_class);
        }
示例#3
0
 public Env(NyaObject currentSelf, NyaClass currentClass)
 {
     locals        = new Dictionary <string, dynamic>();
     current_self  = currentSelf;
     current_class = currentClass;
 }
示例#4
0
 public Env(NyaObject currentSelf) : this(currentSelf, currentSelf.runtime_class)
 {
 }