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)); }
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); }
public Env(NyaObject currentSelf, NyaClass currentClass) { locals = new Dictionary <string, dynamic>(); current_self = currentSelf; current_class = currentClass; }
public Env(NyaObject currentSelf) : this(currentSelf, currentSelf.runtime_class) { }