Example #1
0
 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);
        }
Example #3
0
        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();
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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;
 }
Example #7
0
 public void Visit(GroupedExpression expression)
 {
     Write("(");
     Visit(expression.Group);
     Write(")");
 }
Example #8
0
 public void Visit(GroupedExpression groupedExpression)
 {
 }