X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FAmbiguous.java;h=bd87fd9ee4cd556da1248eef9f7bb46dc9f7130d;hp=6138577783780fcdd5f6cca7b24f5c380fc364ea;hb=a2008a0c57702f49ed7f8be682e4e29484fded38;hpb=2cca97362e80d5a3cd3e02d791a10cd7c6f6b29c diff --git a/src/edu/berkeley/sbp/Ambiguous.java b/src/edu/berkeley/sbp/Ambiguous.java index 6138577..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,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; @@ -16,12 +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 \"*\" "); 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));