public void Visit(GroupedExpression groupedExpression) { if (_innerVisitor != null) { groupedExpression.Accept(_innerVisitor); } groupedExpression.Group.Accept(this); }
private GroupedExpression GroupedExpression() { this.Match(TokenType.OpenParen); var groupedFilter = new GroupedExpression(this.Expression()); this.Match(TokenType.CloseParen); return(groupedFilter); }
private IExpression PrimaryExpression() { var token = Current; if (IsConstant()) { return(Constant()); } else if (IsUnaryOp()) { return(UnaryOp()); } else if (CurrentTypeIs(TokenType.K_NULL)) { return(NullExpression()); } else if (IsReference()) { var reference = ReferenceExpression(); if (CurrentTypeIs(TokenType.OpenBracket)) { return(FunctionCall(reference)); } else { return(reference); } } else if (Consume(TokenType.OpenBracket)) { IExpression expression; if (CurrentTypeIs(TokenType.K_SELECT)) { expression = new SelectStatementExpression { Token = token, Statement = Select() } } ; else { expression = new GroupedExpression { Token = token, Group = Expression() } }; Match(TokenType.CloseBracket); return(expression); } else { throw Unexpected(); } }
private IMathExpression ProcessCloseGroup(Match tokenMatch) { Group token = tokenMatch.Groups["CloseGroup"]; if (string.IsNullOrEmpty(token?.Value)) { return(this.ProcessOperator(tokenMatch)); } IMathExpression innerExpression = this.Reduce(); GroupedExpression groupedExpression = this.expressionStack.Pop() as GroupedExpression; if (groupedExpression != null) { groupedExpression.InnerExpression = innerExpression; } return(groupedExpression); }
private List <IMathExpression> GenerateScopeExpressions() { List <IMathExpression> scopedMathExpressions = new List <IMathExpression>(); bool proceedDownTheStack = false; if (this.expressionStack.Count > 0) { do { GroupedExpression groupedExpression = this.expressionStack.Peek() as GroupedExpression; if (groupedExpression == null || groupedExpression.InnerExpression != null) { scopedMathExpressions.Insert(0, this.expressionStack.Pop()); proceedDownTheStack = this.expressionStack.Count > 0; } else { proceedDownTheStack = false; } } while (proceedDownTheStack); } return(scopedMathExpressions); }
public NegatedExpression(GroupedExpression internalGroupedExpression) { this.Expression = internalGroupedExpression; }
public void Visit(GroupedExpression expression) { Write("("); Visit(expression.Group); Write(")"); }
public void Visit(GroupedExpression groupedExpression) { }