private static IBoolable BuildTimeComparison(List <Token> tokens) { int index = tokens.TakeWhile(x => !TokenGroups.IsTimeComparingSign(x.GetTokenType())).Count(); if (index == 0 || index == tokens.Count - 1) { return(null); } ComparisonType type = tokens[index].GetTokenType().Equals(TokenType.IsAfter) ? ComparisonType.Bigger : ComparisonType.Smaller; List <Token> leftTokens = tokens.GetRange(0, index); List <Token> rightTokens = tokens.GetRange(index + 1, tokens.Count - index - 1); ITimeable leftL = TimeableBuilder.Build(leftTokens); ITimeable rightL = TimeableBuilder.Build(rightTokens); if (leftL.IsNull() || rightL.IsNull()) { return(null); } return(new TimeComparison(leftL, rightL, type)); }
private static bool ContainsOneTimeComparingToken(List <Token> tokens) { return(tokens.Where(x => TokenGroups.IsTimeComparingSign(x.GetTokenType())).Count() == 1); }