X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FAmbiguous.java;h=6288f1fd245e3c45cde34ddf48b232cf7a247557;hb=24112db237318c030b4d4f457d90c34fd69d652b;hp=cb55ffae63887fc061ef9d136b6a56b00636fbbc;hpb=f7f669e438822dd46922e3d3b1c880fdec998a9b;p=sbp.git diff --git a/src/edu/berkeley/sbp/Ambiguous.java b/src/edu/berkeley/sbp/Ambiguous.java index cb55ffa..6288f1f 100644 --- a/src/edu/berkeley/sbp/Ambiguous.java +++ b/src/edu/berkeley/sbp/Ambiguous.java @@ -6,14 +6,23 @@ 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 class Ambiguous extends Exception { public final Forest ambiguity; - public Ambiguous(Forest ambiguity) { this.ambiguity = ambiguity; } + private final HashSet> ht; + public Ambiguous(Forest ambiguity, HashSet> ht) { + this.ambiguity = ambiguity; + this.ht = ht; + } public String toString() { + // FIXME: print the input region that was ambiguously matched 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; 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(); } }