X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FAmbiguous.java;h=bd87fd9ee4cd556da1248eef9f7bb46dc9f7130d;hp=8618b9edb67ad048575f69c1fd1bd40b4947aa88;hb=2c05c84a714f54b3bc026f51416492ddb13f33b1;hpb=3ee451bce342d4bb61ad6235ba57bdf817bfdd1a diff --git a/src/edu/berkeley/sbp/Ambiguous.java b/src/edu/berkeley/sbp/Ambiguous.java index 8618b9e..bd87fd9 100644 --- a/src/edu/berkeley/sbp/Ambiguous.java +++ b/src/edu/berkeley/sbp/Ambiguous.java @@ -9,8 +9,13 @@ import java.util.*; /** if ambiguity checking is enabled, this exception is thrown to signal that the parse was ambiguous */ public class Ambiguous extends Exception { + final Forest ambiguity; private final HashSet> ht; + + /** + * @param ht a specially-constructed set of trees with shared nodes replaced by '*' + */ Ambiguous(Forest ambiguity, HashSet> ht) { this.ambiguity = ambiguity; this.ht = ht; @@ -18,13 +23,14 @@ public class Ambiguous extends Exception { public Forest getAmbiguity() { return ambiguity; } + /** WARNING: this method is not considered part of the "stable API"; it may be removed in the future */ + public Input.Region getRegion() { return ambiguity.getRegion(); } + public String toString() { - // FIXME: print the input region that was ambiguously matched StringBuffer sb = new StringBuffer(); sb.append("unresolved ambiguity at "+ambiguity.getRegion()+"; shared subtrees are shown as \"*\" "); - //sb.append("\noffending text: "); for(Tree result : ht) { - sb.append("\n possibility: "); + sb.append("\n possibility: "); StringBuffer sb2 = new StringBuffer(); result.toPrettyString(sb2); sb.append(StringUtil.indent(sb2.toString(), 15));