/// <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); }
/// <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); }