/** * Turns a token stream into a string, makes for easy debugging of token errors. * * @param lexer * @return */ public static String tokensToString(final Lexer lexer) { final StringBuilder build = new StringBuilder(); Token t; final String[] names = lexer.getTokenNames(); while ((t = lexer.nextToken()) != null) { build.append("|"); build.append(t.getText()); build.append(" -> "); if (t.getType() >= 0) { build.append(names[t.getType()]); } else if (t.getType() == Token.EOF) { build.append("EOF"); break; } else { build.append("???"); } } return build.toString(); }