-/** 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; }
+