Beispiel #1
0
        public override IElement Action(ArgumentContainer Args)
        {
            var cond = Args.GetRawArgument("if", true);
            var then = Args.GetRawArgument("then", true);
            var el   = Args.GetRawArgument("else", true);

            if (cond == null)
            {
                return(new Noop());
            }

            if (then == null)
            {
                throw new TypeException("IF must recieve at least 2 parameters!");
            }

            var testResult = Interpreter.VisitAndGetResult(cond);

            if (testResult is TrueFalse tf)
            {
                if (tf.Value == true)
                {
                    return(Interpreter.VisitAndGetResult(then));
                }
                else if (el != null)
                {
                    return(Interpreter.VisitAndGetResult(el));
                }
            }
            else
            {
                throw new TypeException("Returned value to IF was not a boolean value!");
            }

            return(new Noop());
        }