X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParser.java;h=ab0688966495d0ee149c14e02306e2eee7c5ce38;hp=e707eacd3f15916dba84ea30fcc2ae41d354aa09;hb=6b53048f4413f3c618acc3581d0b4f60a236a9bc;hpb=84a4a8204373b996105e69edf91d2f9fae7b4bcb diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index e707eac..ab06889 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -155,7 +155,7 @@ public class Parser { // FIXME: how does right-nullability interact with follow restrictions? // all right-nullable rules get a reduction [Johnstone 2000] if (p.isRightNullable(cache)) { - Walk.Follow wf = new Walk.Follow(top.fresh(), p.owner(), all_elements, cache); + Walk.Follow wf = new Walk.Follow(top.empty(), p.owner(), all_elements, cache); Reduction red = new Reduction(p); state.reductions.put(wf.walk(p.owner()), red); if (wf.includesEof()) state.eofReductions.add(red, true); @@ -164,7 +164,7 @@ public class Parser { // if the element following this position is an atom, copy the corresponding // set of rows out of the "master" goto table and into this state's shift table if (p.element() != null && p.element() instanceof Atom) - state.shifts.addAll(state.gotoSetTerminals.subset(((Atom)p.element()).dup())); + state.shifts.addAll(state.gotoSetTerminals.subset(((Atom)p.element()))); } } @@ -235,7 +235,7 @@ public class Parser { Atom a = (Atom)position.element(); HashSet hp = new HashSet(); reachable(position.next(), hp); - bag0.addAll(a.dup(), /*clo.walk()*/hp); + bag0.addAll(a, /*clo.walk()*/hp); } // Step 1b: for each _minimal, contiguous_ set of characters having an identical next-position