public override object Visit(OrSearchExpression expr, object data) { bool first = true; foreach (var e in expr.Expressions) { if (!first) { writer.Write(" oder "); } else { first = false; } if (e is AndSearchExpression) { writer.Write("("); } Visit(e, data); if (e is AndSearchExpression) { writer.Write(")"); } } return(null); }
/// ListSearchExpression ::= "(" ( AndExpressionList | OrExpressionList ) ")" SearchExpression ListSearchExpression() { Expect(TokenKind.OpenParen); var op = ListOrSearchExpression(); List <SearchExpression> expr = null; if (la.Kind == TokenKind.And) { OperatorList(op, ref expr, TokenKind.And); op = new AndSearchExpression() { Expressions = expr.ToArray() }; } else if (la.Kind == TokenKind.Or) { OperatorList(op, ref expr, TokenKind.Or); op = new OrSearchExpression() { Expressions = expr.ToArray() }; } Expect(TokenKind.CloseParen); return(op); }
public abstract S Visit(OrSearchExpression expr, T data);