public override object Evaluate(NameEnv env) { object t = target.Evaluate(env); object i = index.Evaluate(env); return(Ops.GetIndex(t, i)); }
public override object Evaluate(NameEnv env) { //!!! not right for compare object l = left.Evaluate(env); object r = right.Evaluate(env); return(op.Evaluate(l, r)); }
public override object Evaluate(NameEnv env) { object e1 = slStart.Evaluate(env); object e2 = slStop.Evaluate(env); object e3 = slStep.Evaluate(env); return(Ops.MakeSlice(e1, e2, e3)); }
public override object Execute(NameEnv env) { object v = rhs.Evaluate(env); foreach (Expr e in lhs) { e.Assign(v, env); } return(NextStmt); }
public override object Evaluate(NameEnv env) { object ret = left.Evaluate(env); if (!Ops.IsTrue(ret)) { return(right.Evaluate(env)); } else { return(ret); } }
public override object Execute(NameEnv env) { object ret = NextStmt; while (Ops.IsTrue(test.Evaluate(env))) { ret = body.Execute(env); if (ret != NextStmt) { break; } } return(ret); // if (else_ != null) { // else_.exec(env); // } }
public override object Execute(NameEnv env) { object ret = Stmt.NextStmt; IEnumerator i = Ops.GetEnumerator(list.Evaluate(env)); while (i.MoveNext()) { lhs.Assign(i.Current, env); ret = body.Execute(env); if (ret != NextStmt) { return(ret); } } return(ret); // if (else_ != null) { // else_.exec(env); // } }
public override object Evaluate(NameEnv env) { object callee = target.Evaluate(env); object[] cargs = new object[args.Length]; int index = 0; foreach (Arg arg in args) { if (arg.name != null) { throw new NotImplementedException("keywords"); } cargs[index++] = arg.expr.Evaluate(env); } switch (cargs.Length) { case 0: return(Ops.Call(callee)); default: return(Ops.Call(callee, cargs)); } }
public override object Execute(NameEnv env) { expr.Evaluate(env); //!!! print it if in the right env return(NextStmt); }
public override object Execute(NameEnv env) { return(expr.Evaluate(env)); }
public override object Evaluate(NameEnv env) { return(Ops.Repr(expr.Evaluate(env))); }
public override object Evaluate(NameEnv env) { object t = target.Evaluate(env); return(Ops.GetAttr(env.globals, t, SymbolTable.StringToId(name.GetString()))); }
public object MakeFunction(NameEnv env) { string[] names = Name.ToStrings(makeNames(parameters)); object[] defaults = Expr.Evaluate(this.defaults, env); return(new InterpFunction(name.GetString(), names, defaults, body, env.globals)); }