public override Expression <Func <T, bool> > VisitAnd(RsqlParser.AndContext context) { var right = context.constraint()[0].Accept(this); if (context.constraint().Length == 1) { return(right); } for (var i = 1; i < context.constraint().Length; i++) { var left = context.constraint()[i].Accept(this); right = Expression.Lambda <Func <T, bool> >(Expression.And(left.Body, right.Body), left.Parameters); } return(right); }
/// <summary> /// Visit a parse tree produced by <see cref="RsqlParser.and"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitAnd([NotNull] RsqlParser.AndContext context) { return(VisitChildren(context)); }