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); }
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()); }
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)); } } }
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); }
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); }
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); } }