private StringBuilder VisitAndOr( TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression, ExprType kind) { this.m_builder.Append('('); bool flag = true; foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children) { if (!flag) { if (kind == ExprType.And) { this.m_builder.Append(" AND "); } else { this.m_builder.Append(" OR "); } } flag = false; child.Accept <StringBuilder>((Visitor <DomainConstraint <BoolLiteral, Constant>, StringBuilder>) this); } this.m_builder.Append(')'); return(this.m_builder); }
private int VisitTree(TreeExpr <T_Identifier> expression) { int num = 0; foreach (BoolExpr <T_Identifier> child in expression.Children) { num += child.Accept <int>((Visitor <T_Identifier, int>) this); } return(num); }
private IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > VisitTreeNode( TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression) { foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children) { foreach (TermExpr <DomainConstraint <BoolLiteral, Constant> > termExpr in child.Accept <IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > >((Visitor <DomainConstraint <BoolLiteral, Constant>, IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > >) this)) { yield return(termExpr); } } }
private DbExpression VisitAndOr( TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression, Func <DbExpression, DbExpression, DbExpression> op) { DbExpression dbExpression = (DbExpression)null; foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children) { dbExpression = dbExpression != null?op(dbExpression, child.Accept <DbExpression>((Visitor <DomainConstraint <BoolLiteral, Constant>, DbExpression>) this)) : child.Accept <DbExpression>((Visitor <DomainConstraint <BoolLiteral, Constant>, DbExpression>) this); } return(dbExpression); }
internal override BoolExpr <DomainConstraint <BoolLiteral, Constant> > VisitAnd( AndExpr <DomainConstraint <BoolLiteral, Constant> > expression) { BoolExpr <DomainConstraint <BoolLiteral, Constant> > boolExpr = base.VisitAnd(expression); TreeExpr <DomainConstraint <BoolLiteral, Constant> > treeExpr = boolExpr as TreeExpr <DomainConstraint <BoolLiteral, Constant> >; if (treeExpr == null) { return(boolExpr); } Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > set = new Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >(); Set <Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > source = new Set <Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >(); foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in treeExpr.Children) { OrExpr <DomainConstraint <BoolLiteral, Constant> > orExpr = child as OrExpr <DomainConstraint <BoolLiteral, Constant> >; if (orExpr != null) { source.Add(new Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >(orExpr.Children)); } else { set.Add(child); } } source.Add(new Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >) new BoolExpr <DomainConstraint <BoolLiteral, Constant> >[1] { (BoolExpr <DomainConstraint <BoolLiteral, Constant> >) new AndExpr <DomainConstraint <BoolLiteral, Constant> >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)set) })); IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > seed = (IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >) new IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >[1] { Enumerable.Empty <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >() }; IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > boolExprs = source.Aggregate <Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > >(seed, (Func <IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >, Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > >)((accumulator, bucket) => accumulator.SelectMany <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, BoolExpr <DomainConstraint <BoolLiteral, Constant> >, IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >((Func <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >)(accseq => (IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)bucket), (Func <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, BoolExpr <DomainConstraint <BoolLiteral, Constant> >, IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >)((accseq, item) => accseq.Concat <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >) new BoolExpr <DomainConstraint <BoolLiteral, Constant> >[1] { item }))))); List <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > boolExprList = new List <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >(); foreach (IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > children in boolExprs) { boolExprList.Add((BoolExpr <DomainConstraint <BoolLiteral, Constant> >) new AndExpr <DomainConstraint <BoolLiteral, Constant> >(children)); } return((BoolExpr <DomainConstraint <BoolLiteral, Constant> >) new OrExpr <DomainConstraint <BoolLiteral, Constant> >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)boolExprList)); }
private StringBuilder VisitAndOr( TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression, string opAsString) { List <string> stringList = new List <string>(); StringBuilder builder = this.m_builder; foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children) { this.m_builder = new StringBuilder(); child.Accept <StringBuilder>((Visitor <DomainConstraint <BoolLiteral, Constant>, StringBuilder>) this); stringList.Add(this.m_builder.ToString()); } this.m_builder = builder; this.m_builder.Append('('); StringUtil.ToSeparatedStringSorted(this.m_builder, (IEnumerable)stringList, " " + opAsString + " "); this.m_builder.Append(')'); return(this.m_builder); }
private bool VisitAndOr( TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression) { bool flag1 = true; bool flag2 = true; foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children) { if (!(child is FalseExpr <DomainConstraint <BoolLiteral, Constant> >) && !(child is TrueExpr <DomainConstraint <BoolLiteral, Constant> >)) { bool flag3 = child.Accept <bool>((Visitor <DomainConstraint <BoolLiteral, Constant>, bool>) this); if (flag1) { flag2 = flag3; } flag1 = false; } } return(flag2); }