public CSetSreExpr Difference(CSetSreExpr x, CSetSreExpr[] y) { IntSet cset = x.Node.Characters; foreach (var excluded in y) { cset = cset.Except(excluded.Node.Characters); } return(CSet(cset)); }
public SreExpr CSet(CSetSreExpr cset) { return(new SreExpr { Node = cset.Node }); }
public SreExpr Lookahead(CSetSreExpr cset) { return(new SreExpr { Node = new LookaheadNode(cset.Node.Characters) }); }
public SreExpr Lookback(CSetSreExpr cset) { return new SreExpr { Node = new LookbackNode(cset.Node.Characters) }; }
public CSetSreExpr Intersection(CSetSreExpr[] inner) { IntSet cset = IntSet.All; foreach (var included in inner) { cset = cset.Intersect(included.Node.Characters); } return CSet(cset); }
public CSetSreExpr Difference(CSetSreExpr x, CSetSreExpr[] y) { IntSet cset = x.Node.Characters; foreach (var excluded in y) { cset = cset.Except(excluded.Node.Characters); } return CSet(cset); }
public SreExpr CSet(CSetSreExpr cset) { return new SreExpr { Node = cset.Node }; }
public CSetSreExpr ComplementOfUnion(CSetSreExpr[] inner) { return new CSetSreExpr { Node = CharSetNode.Union(inner.Select(expr => expr.Node)).Complement() }; }