From 1a0f984a6f85c7d67778c2e5f835812968c94c03 Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 11 Jan 2006 01:05:45 -0500 Subject: [PATCH] checkpoint harmony darcs-hash:20060111060545-5007d-2a76d76509322b8ae5a80f340d1931ba1f382ba5.gz --- src/edu/berkeley/sbp/GSS.java | 4 ++-- src/edu/berkeley/sbp/Parser.java | 30 +++++++++++++----------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java index 993c21f..b98d077 100644 --- a/src/edu/berkeley/sbp/GSS.java +++ b/src/edu/berkeley/sbp/GSS.java @@ -381,10 +381,10 @@ class GSS { public final void invoke(Reduction r, Node n, Node n2) { if (n==null) { - if (r.numPop==0) r.reduce(this); + if (r.position.pos==0) r.reduce(this); return; } - if (r.numPop==0) return; + if (r.position.pos==0) return; if (n2==null) r.reduce(n); else r.reduce(n, n2); } diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 24f8410..5ec5b07 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -139,17 +139,16 @@ public abstract class Parser { // Interface Methods ////////////////////////////////////////////////////////////////////////////// - public boolean isAccepting() { return accept; } - - public boolean canShift(Token t) { return oshifts.contains(t); } - public boolean canReduce(Token t) { return t==null ? eofReductions.size()>0 : oreductions.contains(t); } - + boolean isAccepting() { return accept; } public Iterator iterator() { return hs.iterator(); } - public void invokeShifts(Token t, Invokable irbc, B b, C c) { + boolean canShift(Token t) { return oshifts.contains(t); } + void invokeShifts(Token t, Invokable irbc, B b, C c) { oshifts.invoke(t, irbc, b, c); } - public void invokeReductions(Token t, Invokable irbc, B b, C c) { + + boolean canReduce(Token t) { return t==null ? eofReductions.size()>0 : oreductions.contains(t); } + void invokeReductions(Token t, Invokable irbc, B b, C c) { if (t==null) for(Reduction r : eofReductions) irbc.invoke(r, b, c); else oreductions.invoke(t, irbc, b, c); } @@ -236,7 +235,6 @@ public abstract class Parser { } public String toString() { - //return "state["+idx+"]"; StringBuffer ret = new StringBuffer(); ret.append("state["+idx+"]: "); for(Position p : this) ret.append("{"+p+"} "); @@ -253,7 +251,6 @@ public abstract class Parser { */ public class Reduction { // FIXME: cleanup; almost everything in here could go in either Sequence.Position.getRewrite() or else in GSS.Reduct - public final int numPop; /*private*/ final Position position; private final Forest[] holder; // to avoid constant reallocation public int hashCode() { return position.hashCode(); } @@ -266,26 +263,25 @@ public abstract class Parser { } public Reduction(Position p) { this.position = p; - this.numPop = p.pos; - this.holder = new Forest[numPop]; + this.holder = new Forest[position.pos]; } public String toString() { return "[reduce " + position + "]"; } private Forest zero = null; public Forest zero() { if (zero != null) return zero; - if (numPop > 0) throw new Error(); + if (position.pos > 0) throw new Error(); return zero = position.rewrite(null); } public void reduce(GSS.Phase.Node parent) { - if (numPop==0) finish(parent, zero(), parent.phase()); - else reduce(parent, numPop-1, parent.phase()); + if (position.pos==0) finish(parent, zero(), parent.phase()); + else reduce(parent, position.pos-1, parent.phase()); } public void reduce(GSS.Phase.Node parent, GSS.Phase.Node onlychild) { - if (numPop<=0) throw new Error("called wrong form of reduce()"); - int pos = numPop-1; + if (position.pos<=0) throw new Error("called wrong form of reduce()"); + int pos = position.pos-1; Forest old = holder[pos]; holder[pos] = parent.pending(); if (pos==0) { @@ -315,7 +311,7 @@ public abstract class Parser { State state = parent.state.gotoSetNonTerminals.get(position.owner()); if (result==null) throw new Error(); if (state!=null) - target.newNode(parent, result, state, numPop<=0, this); + target.newNode(parent, result, state, position.pos<=0, this); } } } -- 1.7.10.4