X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParseFailed.java;h=7a3416ed6780ea2c8c796537eb5f68f0b7ae7ba7;hb=14b3d2ee6a2d2ef84628e541ec291961f2061a5a;hp=b6a05e0bd3b356b9754629b6ecce77304bf40a20;hpb=dc9bb3a45ed306e2e35549076842b3e74efecb48;p=sbp.git diff --git a/src/edu/berkeley/sbp/ParseFailed.java b/src/edu/berkeley/sbp/ParseFailed.java index b6a05e0..7a3416e 100644 --- a/src/edu/berkeley/sbp/ParseFailed.java +++ b/src/edu/berkeley/sbp/ParseFailed.java @@ -1,8 +1,9 @@ -// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license +// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license package edu.berkeley.sbp; import edu.berkeley.sbp.*; -import edu.berkeley.sbp.Sequence.Position; +import edu.berkeley.sbp.Sequence.Pos; +import edu.berkeley.sbp.Sequence.Pos; import edu.berkeley.sbp.GSS.Phase; import edu.berkeley.sbp.Node; import edu.berkeley.sbp.util.*; @@ -34,7 +35,7 @@ public class ParseFailed extends Exception { return ret.toString(); } - private static boolean important(Position p) { + private static boolean important(Pos p) { if (p.isLast()) return false; if (p.element() == null) return false; if (!(p.element() instanceof Union)) return false; @@ -67,7 +68,8 @@ public class ParseFailed extends Exception { boolean alldone = false; boolean go = false; boolean force = false; - for(Position p : (Iterable)parent.state()) { + for(Pos pp : (Iterable)parent.state().positions()) { + Pos p = (Pos)pp; if (skip) p = p.next(); int raise = 0; done = false; @@ -83,7 +85,7 @@ public class ParseFailed extends Exception { /* else if (p.pos-raise > 0) barf(sb, n, indent, false, 1); - if (!new Cache(null, null).possiblyEpsilon(p.element())) + if (!new Grammar(null, null).possiblyEpsilon(p.element())) break; */ p = p.next(); @@ -104,7 +106,7 @@ public class ParseFailed extends Exception { static void complain(Node n, HashMap> errors, boolean force, int indent) { if (touched.contains(n)) return; touched.add(n); - for(Position p : (Iterable)n.state()) { + for(Pos p : (Iterable)n.state()) { //if (!p.isLast() && !p.next().isLast()) continue; if (((p.isFirst() || p.isLast()) && !force)/* || p.owner().name==null*/ || !important(p)) { @@ -138,25 +140,24 @@ 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, GSS.Phase phase, Object token, Input.Region region) throws ParseFailed { + error(message, + token, + phase, + region, + phase.getGSS().getInput(), + phase.getGSS()); } - static void error(String message, - Input.Location loc, - Object token, - Iterable nodes, - Input.Region region, - Input input, - GSS gss) throws ParseFailed{ + private static void error(String message, + Object token, + Iterable nodes, + Input.Region region, + Input input, + GSS gss) throws ParseFailed{ String lookAhead = token==null ? "" : token.toString(); StringBuffer ret = new StringBuffer(); ret.append(ANSI.bold(ANSI.red(message))); - if (token != null) { - ret.append(" \'"); - ret.append(ANSI.cyan(StringUtil.escapify(token+"", "\\\'\r\n"))); - ret.append("\'"); - } + String toks = token+""; ret.append(" at "); ret.append(ANSI.yellow(region+"")); if (input != null) {