Exemplo n.º 1
0
        public override float EvaluateToFloat()
        {
            float mul = 1;

            for (int index = 0; index < Children.Count; index++)
            {
                ICanEvaluateToFloat floater = (ICanEvaluateToFloat)Children[index];
                mul *= floater.EvaluateToFloat();
            }
            return(mul);
        }
Exemplo n.º 2
0
        public float TryEvaluateToFloat()
        {
            ICanEvaluateToFloat floater = this as ICanEvaluateToFloat;

            if (floater == null)
            {
                throw new InvalidOperationException(
                          string.Format(
                              "{0} can't be evaluated to float!",
                              GetType().Name));
            }
            return(floater.EvaluateToFloat());
        }
Exemplo n.º 3
0
 protected override void ValidateChildren(LispParser.MethodNode node)
 {
     base.ValidateChildren(node);
     foreach (LispOperator <TBb> child in Children)
     {
         ICanEvaluateToFloat floater = child as ICanEvaluateToFloat;
         if (floater == null)
         {
             throw new InvalidOperationException(
                       string.Format(
                           "Arguments for {0} must be evaluatable to float. {1} isn't!",
                           Name,
                           child.GetType().Name));
         }
     }
 }
Exemplo n.º 4
0
        public override float EvaluateToFloat()
        {
            float div = 0;

            for (int index = 0; index < Children.Count; index++)
            {
                ICanEvaluateToFloat floater = (ICanEvaluateToFloat)Children[index];
                if (index == 0)
                {
                    div = floater.EvaluateToFloat();
                }
                else
                {
                    div /= floater.EvaluateToFloat();
                }
            }
            return(div);
        }
Exemplo n.º 5
0
        public override float EvaluateToFloat()
        {
            float sum = 0;

            for (int index = 0; index < Children.Count; index++)
            {
                ICanEvaluateToFloat floater = (ICanEvaluateToFloat)Children[index];
                if (index == 0)
                {
                    sum = floater.EvaluateToFloat();
                }
                else
                {
                    sum -= floater.EvaluateToFloat();
                }
            }
            return(sum);
        }
Exemplo n.º 6
0
        public override string EvaluateToString()
        {
            List <object> arguments = new List <object>();

            foreach (LispOperator <TBb> @op in Children.Skip(1))
            {
                ICanEvaluateToBool canEvaluateToBool = @op as ICanEvaluateToBool;
                if (canEvaluateToBool != null)
                {
                    arguments.Add(canEvaluateToBool.EvaluateToBool());
                    continue;
                }

                ICanEvaluateToFloat canEvaluateToFloat = @op as ICanEvaluateToFloat;
                if (canEvaluateToFloat != null)
                {
                    arguments.Add(canEvaluateToFloat.EvaluateToFloat());
                    continue;
                }

                ICanEvaluateToString canEvaluateToString = @op as ICanEvaluateToString;
                if (canEvaluateToString != null)
                {
                    arguments.Add(canEvaluateToString.EvaluateToString());
                    continue;
                }

                throw new InvalidOperationException(string.Format("Argument can't be evaluated to string: {0}", @op));
            }

            string formatString = Children.First().TryEvaluateToString();

            try
            {
                return(string.Format(formatString, arguments.ToArray()));
            }
            catch
            {
                return("BAD FORMAT: " + formatString);
            }
        }