예제 #1
0
        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));
        }
예제 #2
0
 private static bool ContainsOneTimeComparingToken(List <Token> tokens)
 {
     return(tokens.Where(x => TokenGroups.IsTimeComparingSign(x.GetTokenType())).Count() == 1);
 }