X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FUnion.java;h=8780d9ea02df515179df4827dc41658897cc3681;hp=a7a76302455b8e9c051224abd3fe022a2a828bb8;hb=6b53048f4413f3c618acc3581d0b4f60a236a9bc;hpb=87f214f3da9f43c3ab93923313845c372f9a96be diff --git a/src/edu/berkeley/sbp/Union.java b/src/edu/berkeley/sbp/Union.java index a7a7630..8780d9e 100644 --- a/src/edu/berkeley/sbp/Union.java +++ b/src/edu/berkeley/sbp/Union.java @@ -16,17 +16,15 @@ public class Union extends Element implements Iterable { public Iterator iterator() { return alternatives.iterator(); } - void reachable(HashSet h) { for(Sequence s : alternatives) s.reachable(h); } - Topology toAtom() { if (alternatives.size()==0) throw new RuntimeException("cannot build an Atom from a Union with no productions"); Topology ret = null; for(Sequence s : this) { Topology a = s.toAtom(); - if (a==null) continue; - if (ret==null) ret = a.dup(); - else ret.add(a.dup()); + if (ret==null) ret = a; + else ret = ret.union(a); } + if (ret==null) throw new RuntimeException("confusion on " + this); return ret; }