private MObject EvalProgram(Program program, Environment env) { MObject rs = null; foreach (var statement in program.Statements) { rs = Eval(statement, env); if (rs == null) { return(rs); } var t = rs.GetType(); if (t == typeof(ReturnValue)) { return(((ReturnValue)rs).value); } else if (t == typeof(Error)) { return(rs); } } return(rs); }
private MObject UnwrapReturnValue(MObject obj) { if (obj.GetType() == typeof(ReturnValue)) { return(((ReturnValue)obj).value); } return(obj); }