-// 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.*;
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;
boolean alldone = false;
boolean go = false;
boolean force = false;
- for(Position p : (Iterable<Position>)parent.state()) {
+ for(Pos pp : (Iterable<Pos>)parent.state().positions()) {
+ Pos p = (Pos)pp;
if (skip) p = p.next();
int raise = 0;
done = false;
/*
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();
static <Tok> void complain(Node n, HashMap<String,HashSet<String>> errors, boolean force, int indent) {
if (touched.contains(n)) return;
touched.add(n);
- for(Position p : (Iterable<Position>)n.state()) {
+ for(Pos p : (Iterable<Pos>)n.state()) {
//if (!p.isLast() && !p.next().isLast()) continue;
if (((p.isFirst() || p.isLast()) && !force)/* || p.owner().name==null*/ ||
!important(p)) {
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<Node> nodes,
- Input.Region region,
- Input input,
- GSS gss) throws ParseFailed{
+ private static void error(String message,
+ Object token,
+ Iterable<Node> nodes,
+ Input.Region region,
+ Input input,
+ GSS gss) throws ParseFailed{
String lookAhead = token==null ? "<EOF>" : 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) {