示例#1
0
        /// <summary>
        /// Executa o parse na expressão com uma função.
        /// </summary>
        /// <returns></returns>
        private IFilterNode ParseFunctionExpression()
        {
            FilterToken  token = this.Expect(FilterTokenType.Function);
            FunctionNode node  = new FunctionNode {
                FilterOperator = token.ToFilterOperator()
            };

            this.Expect(FilterTokenType.LeftParenthesis);
            node.Arguments.Add(this.Expression());
            while (this.Is(FilterTokenType.Comma))
            {
                this.Expect(FilterTokenType.Comma);
                node.Arguments.Add(this.Expression());
            }
            this.Expect(FilterTokenType.RightParenthesis);
            return(node);
        }
示例#2
0
        /// <summary>
        /// Executa o parser a expressão de comparação.
        /// </summary>
        /// <param name="firstArgument"></param>
        /// <returns></returns>
        private IFilterNode ParseComparisonExpression(IFilterNode firstArgument)
        {
            if (this.Is(FilterTokenType.ComparisonOperator))
            {
                FilterToken token = this.Expect(FilterTokenType.ComparisonOperator);
                IFilterNode node  = this.PrimaryExpression();
                return(new ComparisonNode {
                    First = firstArgument,
                    FilterOperator = token.ToFilterOperator(),
                    Second = node
                });
            }
            FilterToken  token2 = this.Expect(FilterTokenType.Function);
            FunctionNode node3  = new FunctionNode {
                FilterOperator = token2.ToFilterOperator()
            };

            node3.Arguments.Add(firstArgument);
            node3.Arguments.Add(this.PrimaryExpression());
            return(node3);
        }