public static List <IRacketObject>?ParseAny(string str) { string[] args = str.Split(" "); List <IRacketObject> arguments = new List <IRacketObject>(); string predicate = ""; for (int i = 0; i < args.Length; i++) { string currentToken = predicate + args[i]; IRacketObject?newRacketObject = RacketBoolean.Parse(currentToken) ?? RacketNumber.Parse(currentToken) ?? RacketString.Parse(currentToken) ?? (IRacketObject?)RacketExpression.Parse(currentToken); if (newRacketObject != null) { arguments.Add(newRacketObject); predicate = ""; continue; } predicate += $"{args[i]} "; } if (predicate != "") { return(null); } return(arguments); }
public override RacketBoolean Evaluate() { RacketBoolean currentBool = (RacketBoolean)arguments[0].Evaluate(); bool retValue = currentBool.Value; for (int i = 1; i < arguments.Count; i++) { currentBool = (RacketBoolean)arguments[i].Evaluate(); retValue = retValue || currentBool.Value; } return(new RacketBoolean(retValue)); }
public override RacketBoolean Evaluate() { RacketBoolean currentBool = (RacketBoolean)arguments[0].Evaluate(); return(new RacketBoolean(!currentBool.Value)); }