public override Token ProcessOperator(Token leftToken, Token rightToken) { return new Token(DateTime.Parse(leftToken.Content, CultureInfo.InvariantCulture).AddDays( Int32.Parse(rightToken.Content, CultureInfo.InvariantCulture)).ToString( CultureInfo.InvariantCulture), TokenType.Date); }
public override Token ProcessOperator(Token leftToken, Token rightToken) { if (leftToken.TokenType == TokenType.Date && rightToken.TokenType == TokenType.Number) { return new Token(DateTime.Parse(leftToken.Content, CultureInfo.InvariantCulture).AddDays( -Int32.Parse(rightToken.Content, CultureInfo.InvariantCulture)).ToString( CultureInfo.InvariantCulture), TokenType.Date); } else if (leftToken.TokenType == TokenType.Date && rightToken.TokenType == TokenType.Date) { return new Token( DateTime.Parse(leftToken.Content, CultureInfo.InvariantCulture).Subtract( DateTime.Parse(rightToken.Content, CultureInfo.InvariantCulture)).Days.ToString(CultureInfo.InvariantCulture), TokenType.Number ); } else { throw new ArgumentException(String.Format("Operator doesn't support this data types. Lvalue:{0} Rvalue:{1}", leftToken.TokenType, rightToken.TokenType)); } }
public abstract Token ProcessOperator(Token leftToken, Token rightToken);
public override Token ProcessOperator(Token leftToken, Token rightToken) { return new Token(leftToken.Content + rightToken.Content, TokenType.String); }
public static TokenOpeartor Make(Token leftToken, Token rightToken, Token operatorToken) { if (Mapping.ContainsKey(leftToken.TokenType) && Mapping[leftToken.TokenType].ContainsKey(rightToken.TokenType)) return Mapping[leftToken.TokenType][rightToken.TokenType][operatorToken.Content]; else throw new ArgumentException("Operator not found for given types"); }
public static Token ProcessOperator(Token leftToken, Token rightToken, Token operatorToken) { TokenOpeartor to = TokenOperatorFactory.Make(leftToken, rightToken, operatorToken); return to.ProcessOperator(leftToken, rightToken); }
public override Token ProcessOperator(Token leftToken, Token rightToken) { return new Token((Decimal.Parse(leftToken.Content, System.Globalization.CultureInfo.InvariantCulture) - Decimal.Parse(rightToken.Content, System.Globalization.CultureInfo.InvariantCulture)).ToString(System.Globalization.CultureInfo.InvariantCulture), TokenType.Number); }