X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FUnion.java;h=87aefda66b24e39b51476a6471d68776baafa960;hb=2633ae37e220233b3bb8a71632e37a3070be6e97;hp=8780d9ea02df515179df4827dc41658897cc3681;hpb=6b53048f4413f3c618acc3581d0b4f60a236a9bc;p=sbp.git diff --git a/src/edu/berkeley/sbp/Union.java b/src/edu/berkeley/sbp/Union.java index 8780d9e..87aefda 100644 --- a/src/edu/berkeley/sbp/Union.java +++ b/src/edu/berkeley/sbp/Union.java @@ -15,6 +15,7 @@ public class Union extends Element implements Iterable { private final List alternatives = new ArrayList(); public Iterator iterator() { return alternatives.iterator(); } + public boolean contains(Sequence s) { return alternatives.contains(s); } Topology toAtom() { if (alternatives.size()==0) throw new RuntimeException("cannot build an Atom from a Union with no productions"); @@ -29,7 +30,15 @@ public class Union extends Element implements Iterable { } /** adds an alternative */ - public void add(Sequence s) { alternatives.add(s); } + public void add(Sequence s) { + alternatives.add(s); + for(Sequence n : s.needs) add(n); + for(Sequence n : s.hates) add(n); + if (/*!synthetic &&*/ shortForm!=null + //&& Character.isUpperCase(shortForm.charAt(0)) + ) + s.setName(toString()); + } /** * Since every cycle in a non-degenerate grammar contains at