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