public Expression ParenExpression(ParenExpression expression) { return(expression.Expression.Visit(this)); }
public virtual T ParenExpression(ParenExpression expression) { throw new QueryNotSupportException(); }
private Expression ParseCommonItem() { switch (Current.Type) { case TokenType.Literal: var literal = (LiteralToken)Current; MoveNext(); return(new LiteralExpression(literal.Value, literal.LiteralType)); case TokenType.Syntax: if (Current == SyntaxToken.Negative) { MoveNext(); return(new ArithmeticUnaryExpression(Operator.Negative, ParseCommonItem())); } if (Current == SyntaxToken.ParenOpen) { MoveNext(); ExpectAny(); var result = new ParenExpression(ParseCommon()); Expect(SyntaxToken.ParenClose); return(result); } else { throw new ODataException(ErrorMessages.Parser_ExpectedSyntax); } case TokenType.Identifier: if (Next == SyntaxToken.ParenOpen && !GetOperator(Current).HasValue&& _mode != ParserMode.Path) { return(ParseMethodCall()); } else if (GetOperator(Current) == Operator.Not) { MoveNext(); return(new BoolUnaryExpression(Operator.Not, ParseCommonItem())); } else { var members = new List <MemberExpressionComponent>(); ParseMember(members); while (!AtEnd && Current == SyntaxToken.Slash) { MoveNext(); ExpectAny(); if (IsCollectionMethodCall()) { return(ParseCollectionMethodCall(members)); } ParseMember(members); } return(new MemberExpression(MemberType.Normal, members)); } default: throw new NotSupportedException(); } }