factor Pos out of Position in preparation for serialiable parse tables
[sbp.git] / src / edu / berkeley / sbp / Reduction.java
index 5e59a4e..676097e 100644 (file)
@@ -2,15 +2,16 @@
 
 package edu.berkeley.sbp;
 import edu.berkeley.sbp.Sequence.Position;
+import edu.berkeley.sbp.Sequence.Pos;
 
 final class Reduction implements Comparable<Reduction> {
 
-    private Position reduction;
+    private Pos reduction;
     private GSS.Phase phase;
     private Forest forest;
     private Node parent;
     
-    public Reduction(Node parent, Position reduction, Forest forest, GSS.Phase target) {
+    public Reduction(Node parent, Pos reduction, Forest forest, GSS.Phase target) {
         this.reduction = reduction;
         this.forest = forest;
         this.phase = target;
@@ -27,10 +28,10 @@ final class Reduction implements Comparable<Reduction> {
         }
         /*
         int master = Parser.mastercache.comparePositions(reduction(), r.reduction());
-        if (master != 0 && master != signum(reduction.ord - r.reduction.ord))
-            throw new Error("master="+master+" and a="+reduction.ord+" and b="+r.reduction.ord+"\n"+reduction+"\n"+r.reduction);
+        if (master != 0 && master != signum(reduction.ord() - r.reduction.ord()))
+            throw new Error("master="+master+" and a="+reduction.ord()+" and b="+r.reduction.ord()+"\n"+reduction+"\n"+r.reduction);
         */
-        return reduction.ord - r.reduction.ord;
+        return reduction.compareTo(r.reduction);
     }
 
     private int signum(int x) {
@@ -41,7 +42,7 @@ final class Reduction implements Comparable<Reduction> {
 
     public void perform() { new Result(forest, parent, reduction, phase); }
     public GSS.Phase parentPhase() { return parent.phase(); }
-    public Position reduction() { return reduction; }
+    public Pos reduction() { return reduction; }
     public GSS.Phase targetPhase() { return phase; }
-    public String toString() { return (parent.phase()==null ? 0 : parent.phase().pos) + ":"+reduction.ord+":"+ reduction+" "+reduction.owner(); }
+    public String toString() { return (parent.phase()==null ? 0 : parent.phase().pos) + ":"+reduction; }
 }