private static void toString(@NonNull StringBuilder builder, @NonNull Cache cache, @NonNull Prism4j.Token token) { builder .append("Token{id=0x") .append(Integer.toHexString(System.identityHashCode(token))) .append(",name=\"") .append(token.name()) .append('\"'); if (cache.visited(token)) { builder.append(",[...]"); } else { cache.markVisited(token); builder.append(",patterns=["); boolean first = true; for (Prism4j.Pattern pattern : token.patterns()) { if (first) { first = false; } else { builder.append(','); } toString(builder, cache, pattern); } builder.append(']'); } builder.append('}'); }
@NonNull private Prism4j.Token clone(@NonNull Context context, @NonNull Prism4j.Token token) { Prism4j.Token clone = context.token(token); if (clone != null) { return clone; } final List<Prism4j.Pattern> patterns = token.patterns(); final List<Prism4j.Pattern> out = new ArrayList<>(patterns.size()); clone = new TokenImpl(token.name(), out); context.save(token, clone); for (Prism4j.Pattern pattern : patterns) { out.add(clone(context, pattern)); } return clone; }
@Nullable public static Prism4j.Grammar findFirstInsideGrammar(@NonNull Prism4j.Token token) { Prism4j.Grammar grammar = null; for (Prism4j.Pattern pattern : token.patterns()) { if (pattern.inside() != null) { grammar = pattern.inside(); break; } } return grammar; }
for (Pattern pattern : token.patterns()) {