checkpoint
[sbp.git] / src / edu / berkeley / sbp / Ambiguous.java
index c96bdd4..6288f1f 100644 (file)
@@ -8,17 +8,21 @@ import java.util.*;
 /** if ambiguity checking is enabled, this exception is thrown to signal that the parse was ambiguous */
 public class Ambiguous extends Exception {
     public final Forest<?> ambiguity;
-    public Ambiguous(Forest<?> ambiguity) { this.ambiguity = ambiguity; }
+    private final HashSet<Tree<?>> ht;
+    public Ambiguous(Forest<?> ambiguity, HashSet<Tree<?>> ht) {
+        this.ambiguity = ambiguity;
+        this.ht = ht;
+    }
     public String toString() {
-        // FEATURE: more legible printout desperately needed
+        // FIXME: print the input region that was ambiguously matched
         StringBuffer sb = new StringBuffer();
-        sb.append("unresolved ambiguity ");
-        /*
-        for(Tree<?> result : ambiguity.expand(false)) {
-            sb.append("\n\n");
-            result.toPrettyString(sb);
+        sb.append("unresolved ambiguity; shared subtrees are shown as \"*\" ");
+        for(Tree<?> result : ht) {
+            sb.append("\n  possibility: ");
+            StringBuffer sb2 = new StringBuffer();
+            result.toPrettyString(sb2);
+            sb.append(StringUtil.indent(sb2.toString(), 15));
         }
-        */
         return sb.toString();
     }
 }