checkpoint
[sbp.git] / src / edu / berkeley / sbp / GSS.java
index 7d3758f..2154731 100644 (file)
@@ -10,6 +10,7 @@ import java.lang.reflect.*;
 /** implements Tomita's Graph Structured Stack */
 class GSS {
 
+    public static int count = 0;
     public GSS() { }
 
     private Phase.Node[] reducing_list = null;
@@ -66,6 +67,7 @@ class GSS {
             singularReductions = new IntPairMap<Forest>();
             expectedInhibit.clear();
             expectedInhibit.addAll(inhibited);
+            reset = false;
             good = false;
             closed = false;
             reducing = false;
@@ -113,7 +115,7 @@ class GSS {
             }
             if (!owner.lame)
                 newNode(parent, pending, state, fromEmptyReduction);
-            if (reduction!=null) inhibit(reduction, parent==null?0:parent.phase().pos);
+            if (reduction!=null) uninhibit(reduction, parent==null?0:parent.phase().pos);
             if (reduction != null) {
                 boolean redo = true;
                 while(redo) {
@@ -156,19 +158,19 @@ class GSS {
             return true;
         }
 
-        public void uninhibit(int p, Sequence s) {
+        public void inhibit(int p, Sequence s) {
             if (s.hated!=null)
                 for(Sequence s2 : s.hated)
                     inhibited.remove(p, s2);
         }
 
-        public void inhibit(Position r, int p) {
+        public void uninhibit(Position r, int p) {
             if (r.owner().hated == null) return;
             // remember that dead states are still allowed to shift -- just not allowed to reduce
             boolean reset = false;
             for(Sequence seq : r.owner().hated) {
                 if (performed.contains(p,seq)) {
-                    uninhibit(p, seq);
+                    inhibit(p, seq);
                     //System.out.println("\nresetting due to " + r.owner() + " killing " + seq);
                     //inhibited.clear();
                     inhibited.add(p, seq);
@@ -209,8 +211,10 @@ class GSS {
                 reset();
                 reduce();
             }
+            count = 0;
         }
 
+        private boolean reset = false;
         class Reset extends RuntimeException { }
 
         /** perform all shift operations, adding promoted nodes to <tt>next</tt> */