fix javadoc generation
[sbp.git] / src / edu / berkeley / sbp / Ambiguous.java
index cb55ffa..8f7fb24 100644 (file)
@@ -1,19 +1,34 @@
+// Copyright 2006-2007-2007 all rights reserved; see LICENSE file for BSD-style license
+
 package edu.berkeley.sbp;
-import edu.berkeley.sbp.*;
 import edu.berkeley.sbp.util.*;
-import edu.berkeley.sbp.Sequence.Position;
-import java.io.*;
 import java.util.*;
 
-/** if ambiguity checking is enabled, this exception is thrown to signal that the parse was ambiguous */
-public class Ambiguous extends RuntimeException {
-    public final Forest<?> ambiguity;
-    public Ambiguous(Forest<?> ambiguity) { this.ambiguity = ambiguity; }
+/** thrown to signal that a parse was ambiguous */
+public class Ambiguous extends Exception {
+
+    private final Forest<?> ambiguity;
+    private final HashSet<Tree<?>> possibilities;
+
+    /**
+     *  @param possibilities is a specially-constructed set of trees with shared nodes replaced by '*'
+     */
+    Ambiguous(Forest<?> ambiguity, HashSet<Tree<?>> possibilities) {
+        this.ambiguity = ambiguity;
+        this.possibilities = possibilities;
+    }
+
+    public Forest<?> getForest() { return ambiguity; }
+
     public String toString() {
         StringBuffer sb = new StringBuffer();
-        sb.append("unresolved ambiguity "/*"at " + ambiguity.getLocation() + ":"*/);
-        for(Tree<?> result : ambiguity.expand(false))
-            sb.append("\n\n" + result.toPrettyString());
+        sb.append("unresolved ambiguity at "+ambiguity.getRegion()+"; shared subtrees are shown as \"*\" ");
+        for(Tree<?> result : possibilities) {
+            sb.append("\n    possibility: ");
+            StringBuffer sb2 = new StringBuffer();
+            result.toPrettyString(sb2);
+            sb.append(StringUtil.indent(sb2.toString(), 15));
+        }
         return sb.toString();
     }
 }