void reachable(HashSet<Sequence.Position> h) { for(Sequence s : alternatives) s.reachable(h); }
Topology toAtom() {
- if (alternatives.size()==0) return null;
+ 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());
}