X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FAmbiguous.java;h=bd87fd9ee4cd556da1248eef9f7bb46dc9f7130d;hp=6288f1fd245e3c45cde34ddf48b232cf7a247557;hb=a2008a0c57702f49ed7f8be682e4e29484fded38;hpb=5ae7d4fd7c53dab6df9aae2e42579efabf66f49e diff --git a/src/edu/berkeley/sbp/Ambiguous.java b/src/edu/berkeley/sbp/Ambiguous.java index 6288f1f..bd87fd9 100644 --- a/src/edu/berkeley/sbp/Ambiguous.java +++ b/src/edu/berkeley/sbp/Ambiguous.java @@ -1,3 +1,5 @@ +// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license + package edu.berkeley.sbp; import edu.berkeley.sbp.*; import edu.berkeley.sbp.util.*; @@ -7,18 +9,28 @@ 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; + + final Forest ambiguity; private final HashSet> ht; - public Ambiguous(Forest ambiguity, 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; } + + 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; shared subtrees are shown as \"*\" "); + sb.append("unresolved ambiguity at "+ambiguity.getRegion()+"; shared subtrees are shown as \"*\" "); 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));