private ISearchExpression ParseSimpleExpression() { string s1 = ParseWordExpression(); string s2; ISearchExpression exp; switch (this.token) { case TokenType.Eq: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.Eq(s1, s2)); case TokenType.NotEq: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.NotEq(s1, s2)); case TokenType.EqProperty: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.EqProperty(s1, s2)); case TokenType.Gt: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.Gt(s1, s2)); case TokenType.Ge: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.Ge(s1, s2)); case TokenType.Lt: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.Lt(s1, s2)); case TokenType.Le: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.Le(s1, s2)); case TokenType.InG: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.InG(s1, GetArrayList(s2))); case TokenType.GInG: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.GInG(s1, GetArrayList(s2))); case TokenType.Like: this.MoveNext(); s2 = ParseWordExpression(); return(SearchExpression.Like(s1, s2)); case TokenType.IsNull: exp = SearchExpression.IsNull(s1); this.MoveNext(); return(exp); case TokenType.IsNotNull: exp = SearchExpression.IsNotNull(s1); this.MoveNext(); return(exp); case TokenType.Sql: exp = SearchExpression.Sql(s1); this.MoveNext(); return(exp); default: throw new ArgumentException("Invalid token of " + token); } }