Пример #1
0
        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);
        }
Пример #2
0
        private MObject UnwrapReturnValue(MObject obj)
        {
            if (obj.GetType() == typeof(ReturnValue))
            {
                return(((ReturnValue)obj).value);
            }

            return(obj);
        }