예제 #1
0
        public override object Execute(List arguments, ValueEnvironment environment)
        {
            ValueEnvironment newenv;

            newenv = MakeEnvironment((List)arguments.First, environment);
            FSubrProgN progn = new FSubrProgN();

            return(progn.Execute(arguments.Next, newenv));
        }
예제 #2
0
        public override object Execute(List arguments, ValueEnvironment environment)
        {
            if (Predicates.IsFalse(Machine.Evaluate(arguments.First, environment)))
            {
                List       elseexpr = arguments.Next.Next;
                FSubrProgN progn    = new FSubrProgN();
                return(progn.Execute(elseexpr, environment));
            }

            return(Machine.Evaluate(arguments.Next.First, environment));
        }
예제 #3
0
        public override object Execute(List arguments, ValueEnvironment env)
        {
            while (!Predicates.IsNil(arguments))
            {
                List   pair = (List)arguments.First;
                object condition;

                condition = pair.First;

                if (!Predicates.IsFalse(Machine.Evaluate(condition, env)))
                {
                    FSubrProgN progn = new FSubrProgN();

                    return(progn.Execute(pair.Next, env));
                }

                arguments = arguments.Next;
            }

            return(null);
        }
예제 #4
0
        internal object ExecuteBody(ValueEnvironment environment)
        {
            FSubrProgN progn = new FSubrProgN();

            return(progn.Execute(this.body, environment));
        }