public static List <Item> Eval(BoolExpr expr) { if (expr.IsLeaf()) { return(expr.Lit); } if (expr.Op == BoolExpr.BOP.OR) { return(Eval(expr.Left).Union(Eval(expr.Right)).ToList()); } if (expr.Op == BoolExpr.BOP.AND) { return(Eval(expr.Left).Intersect(Eval(expr.Right)).ToList()); } throw new ArgumentException(); }
public Boolean IsAtomic() { return(IsLeaf() || _left.IsLeaf()); }