X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParseFailed.java;h=9bc2ae88d1abf0294cd0c0052085097ad009b753;hb=b7cd03704a32c751575472eadfd433ce15694fce;hp=1fa0b08b4676dabafb542f804c582116ef0f9643;hpb=df2dac17a58713dd1e3fba3101666bea7cb6f561;p=sbp.git diff --git a/src/edu/berkeley/sbp/ParseFailed.java b/src/edu/berkeley/sbp/ParseFailed.java index 1fa0b08..9bc2ae8 100644 --- a/src/edu/berkeley/sbp/ParseFailed.java +++ b/src/edu/berkeley/sbp/ParseFailed.java @@ -4,7 +4,7 @@ package edu.berkeley.sbp; import edu.berkeley.sbp.*; import edu.berkeley.sbp.Sequence.Position; import edu.berkeley.sbp.GSS.Phase; -import edu.berkeley.sbp.GSS.Phase.Node; +import edu.berkeley.sbp.Node; import edu.berkeley.sbp.util.*; import java.io.*; import java.util.*; @@ -46,25 +46,28 @@ public class ParseFailed extends Exception { return (c >= 'A' && c <= 'Z'); } - static void barf(HashMap sb, GSS.Phase.Node n, int indent, boolean skip, int count, Input.Location loc) { + static void barf(HashMap sb, Node n, int indent, boolean skip, int count, Input.Location loc) { if (count <= 0) { barf(sb, n, indent, skip, loc); } else { - for(GSS.Phase.Node nn : n.parents()) + /* + FIXME: removed + for(Node nn : (Iterable)n.parents()) barf(sb, nn, indent, skip, count-1, n.phase().getLocation()); + */ } } - static void barf(HashMap sb, GSS.Phase.Node n, int indent, boolean skip, Input.Location loc) { + static void barf(HashMap sb, Node n, int indent, boolean skip, Input.Location loc) { if (touched.contains(n)) return; touched.add(n); String s = ""; for(int i=0; i< indent; i++) s += " "; - GSS.Phase.Node parent = n; + Node parent = n; boolean done = false; boolean alldone = false; boolean go = false; boolean force = false; - for(Position p : parent.state) { + for(Position p : (Iterable)parent.state()) { if (skip) p = p.next(); int raise = 0; done = false; @@ -97,16 +100,21 @@ public class ParseFailed extends Exception { // FIXME - private static HashSet touched = new HashSet(); - static void complain(GSS.Phase.Node n, HashMap> errors, boolean force, int indent) { + private static HashSet touched = new HashSet(); + static void complain(Node n, HashMap> errors, boolean force, int indent) { if (touched.contains(n)) return; touched.add(n); - for(Position p : n.state) { + for(Position p : (Iterable)n.state()) { //if (!p.isLast() && !p.next().isLast()) continue; if (((p.isFirst() || p.isLast()) && !force)/* || p.owner().name==null*/ || !important(p)) { + /* + FIXME: removed for(Node n2 : n.parents()) - complain(n2, errors, force /*| p.isFirst()*/, indent); + complain(n2, errors, force + //| p.isFirst() + , indent); + */ } else { String seqname = p.owner()/*.name*/+""; HashSet hs = errors.get(seqname); @@ -130,6 +138,10 @@ public class ParseFailed extends Exception { return ANSI.purple(ret.toString()); } + static void error(String message, GSS.Phase phase) throws ParseFailed { + error(message, phase.getLocation(), phase.getToken(), + phase, phase.getRegion(), phase.getGSS().getInput(), phase.getGSS()); + } static void error(String message, Input.Location loc, Object token,