X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FSequence.java;fp=src%2Fedu%2Fberkeley%2Fsbp%2FSequence.java;h=f63c30a918bd696c5f88e1a746cec23c9c5d7808;hp=eff94a47ecd7233f216a1adcfa7d3f10300a82f0;hb=61566402d83d5c06d57fb850e60ca0f82c27b9a2;hpb=fcc038ff693cf2b3e91efcd348ea3a3b7fbb1829 diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java index eff94a4..f63c30a 100644 --- a/src/edu/berkeley/sbp/Sequence.java +++ b/src/edu/berkeley/sbp/Sequence.java @@ -127,9 +127,9 @@ public abstract class Sequence implements Iterable, SequenceOrElement { this.firstp = new Position(this, 0, null); } - abstract Forest epsilonForm(Input.Region loc, Grammar cache); + abstract Forest epsilonForm(Input.Region loc); - protected abstract Forest postReduce(Input.Region loc, Forest[] args, Pos p); + protected abstract Forest postReduce(Input.Region loc, Forest[] args, Position p); // Position ////////////////////////////////////////////////////////////////////////////// @@ -158,7 +158,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { abstract Element element(); public abstract int numPops(); - public abstract Forest rewrite(Input.Region loc, Grammar cache); + public abstract Forest rewrite(Input.Region loc); } /** the imaginary position before or after an element of a sequence; corresponds to an "LR item" */ @@ -171,12 +171,10 @@ public abstract class Sequence implements Iterable, SequenceOrElement { public int[] hates(); public boolean owner_needed_or_hated(); public int numPops(); - public Forest rewrite(Input.Region loc, Grammar cache) + public Forest rewrite(Input.Region loc) }; } */ - public int ord = -1; - public int ord() { return ord; } public int numPops() { return pos; } final int pos; @@ -220,14 +218,14 @@ public abstract class Sequence implements Iterable, SequenceOrElement { // Position ///////////////////////////////////////////////////////////////////////////////// - public final Forest rewrite(Input.Region loc, Grammar cache) { - if (this==firstp()) epsilonForm(loc, cache); + public final Forest rewrite(Input.Region loc) { + if (isFirst()) owner().epsilonForm(loc); for(int i=0; i, SequenceOrElement { return sb; } - // Specialized Subclasses ////////////////////////////////////////////////////////////////////////////// static class Singleton extends Sequence { @@ -281,8 +278,8 @@ public abstract class Sequence implements Iterable, SequenceOrElement { public Singleton(Element[] e, int idx) { super(e); this.idx = idx; } public Forest postReduce(Input.Region loc, Forest[] args, Position p) { return args[idx]; } Sequence _clone() { return new Singleton(elements,idx); } - Forest epsilonForm(Input.Region loc, Grammar cache) { - return ((Union)elements[idx]).epsilonForm(loc, cache); + Forest epsilonForm(Input.Region loc) { + return ((Union)elements[idx]).epsilonForm(loc); } } @@ -321,7 +318,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { if (spacing) for(int i=0; i<50-len; i++) sb.append(' '); return sb; } - Forest epsilonForm(Input.Region loc, Grammar cache) { + Forest epsilonForm(Input.Region loc) { return Forest.create(loc, tag, new Forest[0], lifts); } }