Esempio n. 1
0
 private IFilterNode ParseComparisonExpression(IFilterNode firstArgument)
 {
     if (Is(FilterTokenType.ComparisonOperator))
     {
         FilterToken token      = Expect(FilterTokenType.ComparisonOperator);
         IFilterNode filterNode = PrimaryExpression();
         return(new ComparisonNode
         {
             First = firstArgument,
             FilterOperator = token.ToFilterOperator(),
             Second = filterNode
         });
     }
     else
     {
         FilterToken token        = Expect(FilterTokenType.Function);
         var         functionNode = new FunctionNode
         {
             FilterOperator = token.ToFilterOperator()
         };
         functionNode.Arguments.Add(firstArgument);
         functionNode.Arguments.Add(PrimaryExpression());
         return(functionNode);
     }
 }
Esempio n. 2
0
        private IFilterNode ParseFunctionExpression()
        {
            FilterToken token        = Expect(FilterTokenType.Function);
            var         functionNode = new FunctionNode
            {
                FilterOperator = token.ToFilterOperator()
            };

            Expect(FilterTokenType.LeftParenthesis);
            functionNode.Arguments.Add(Expression());
            while (Is(FilterTokenType.Comma))
            {
                Expect(FilterTokenType.Comma);
                functionNode.Arguments.Add(Expression());
            }
            Expect(FilterTokenType.RightParenthesis);
            return(functionNode);
        }