/*
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();
raise++;
if (p.isLast()) {
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) {
ret.append('\n');
ret.append(" text: ");
int budget = 60;
- String second = input.showRegion(region);
+ String second = input.showRegion(region, 60);
budget -= second.length();
Input.Location after = region.getEnd();
for(int i=0; i<10; i++) after = after.next() == null ? after : after.next();
- String third = input.showRegion(region.getEnd().createRegion(after));
+ String third = input.showRegion(region.getEnd().createRegion(after), 60);
budget -= third.length();
Input.Location before = region.getStart();
for(int i=0; i<budget; i++) before = before.prev() == null ? before : before.prev();
- String first = input.showRegion(before.createRegion(region.getStart()));
+ String first = input.showRegion(before.createRegion(region.getStart()), 60);
ret.append(ANSI.cyan(first));
ret.append(ANSI.invert(ANSI.red(second)));
ret.append(ANSI.cyan(third));
ret.append("\n or " + ANSI.purple(s));
}
Input.Region reg = loc2.createRegion(region.getEnd());
- ret.append(" to match \"" + ANSI.cyan(input.showRegion(reg)) + "\" at " + ANSI.yellow(reg));
+ ret.append(" to match \"" + ANSI.cyan(input.showRegion(reg, 60)) + "\" at " + ANSI.yellow(reg));
i++;
}
}