private IFilterNode ParseFunctionExpression() { FilterToken function = Expect(FilterTokenType.Function); var functionNode = new FunctionNode { FilterOperator = function.ToFilterOperator() }; Expect(FilterTokenType.LeftParenthesis); functionNode.Arguments.Add(Expression()); while (Is(FilterTokenType.Comma)) { Expect(FilterTokenType.Comma); functionNode.Arguments.Add(Expression()); } Expect(FilterTokenType.RightParenthesis); return(functionNode); }
public void FunctionNode_should_accept_visitor() { visitor.Setup(v => v.StartVisit(It.IsAny<FunctionNode>())).Verifiable(); visitor.Setup(v => v.EndVisit()).Verifiable(); Mock<IFilterNode> first = new Mock<IFilterNode>(); first.Setup(f => f.Accept(It.IsAny<IFilterNodeVisitor>())).Verifiable(); FunctionNode functionNode = new FunctionNode { Arguments = { first.Object } }; functionNode.Accept(visitor.Object); visitor.VerifyAll(); first.Verify(); }
private IFilterNode ParseFunctionExpression() { FilterToken function = Expect(FilterTokenType.Function); var functionNode = new FunctionNode { FilterOperator = function.ToFilterOperator() }; Expect(FilterTokenType.LeftParenthesis); functionNode.Arguments.Add(Expression()); while (Is(FilterTokenType.Comma)) { Expect(FilterTokenType.Comma); functionNode.Arguments.Add(Expression()); } Expect(FilterTokenType.RightParenthesis); return functionNode; }
private IFilterNode ParseComparisonExpression(IFilterNode firstArgument) { if (Is(FilterTokenType.ComparisonOperator)) { FilterToken comparison = Expect(FilterTokenType.ComparisonOperator); IFilterNode secondArgument = PrimaryExpression(); return new ComparisonNode { First = firstArgument, FilterOperator = comparison.ToFilterOperator(), Second = secondArgument }; } FilterToken function = Expect(FilterTokenType.Function); var functionNode = new FunctionNode { FilterOperator = function.ToFilterOperator() }; functionNode.Arguments.Add(firstArgument); functionNode.Arguments.Add(PrimaryExpression()); return functionNode; }