X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FGSS.java;h=f85ec0b9768e9026627f9eafeadd51f91f9473c7;hp=8412471cf6e96ca04b35eb32fed33ab661f117d7;hb=297f374e023e781f38f3fb2d6122c951f224380e;hpb=4b5b35b9dbcf29da663c72d12aaf6ac3d2083d27 diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java index 8412471..f85ec0b 100644 --- a/src/edu/berkeley/sbp/GSS.java +++ b/src/edu/berkeley/sbp/GSS.java @@ -27,7 +27,7 @@ public class GSS { HashMapBag expected = new HashMapBag(); /** FIXME */ - public Forest.Ref finalResult; + public Forest.Many finalResult; /** corresponds to a positions between tokens the input stream; same as Tomita's U_i's */ class Phase implements Invokable.Node>, IntegerMappable, GraphViz.ToGraphViz, Iterable { @@ -230,7 +230,7 @@ public class GSS { boolean ok = false; for(Phase.Node n : hash.values()) { if (token == null && n.state.isAccepting()) { - if (finalResult==null) finalResult = new Forest.Ref(); + if (finalResult==null) finalResult = new Forest.Many(); for(Object f : n.results()) finalResult.merge((Forest)f); } @@ -285,18 +285,18 @@ public class GSS { /** which Phase this Node belongs to (node that Node is also a non-static inner class of Phase) */ public Phase phase() { return Phase.this; } - private HashSet resultMap = new HashSet(); - public Iterable results() { return resultMap; } + private HashSet resultMap = new HashSet(); + public Iterable results() { return resultMap; } public FastSet parents() { return set; } public boolean merge(Node parent, Forest result) { // FIXME: inefficient! - for(Forest.Ref f : results()) { + for(Forest.Many f : results()) { if (f.parents.contains(parent) /* UGLY: */ && f.parents.size()==1) { f.merge(result); return true; } } - Forest.Ref f = new Forest.Ref(); + Forest.Many f = new Forest.Many(); f.parents.add(parent); f.merge(result); resultMap.add(f); @@ -341,7 +341,7 @@ public class GSS { HashSet rr = new HashSet(); for(Forest result : results()) rr.add(result); for(Forest result : rr) - for(Node child : ((Forest.Ref)result).parents) { + for(Node child : ((Forest.Many)result).parents) { if (only != null && child!=only) continue; holder[pos] = result; if (pos==0) child.finish(r, r.rewrite(new Input.Region(child.phase().getLocation(), phase().getLocation())), target);