protected String format(Production<ELEMENT, TOKEN> adapter, ELEMENT element, Iterable<ELEMENT> children, String separator, boolean needWrap, boolean needParenthesis) { List<String> childStrs2 = Lists.newArrayList(); int width2 = 0; for (ELEMENT child : children) { String childStr = format(adapter, child, true); childStrs2.add(childStr); width2 += childStr.length(); if (childStr.contains("\n")) needWrap = true; } if (childStrs2.size() > autoWrapChildren) needWrap = true; if (width2 > autoWrapChars) needWrap = true; String cardinality = getCardinality(adapter, element); if (needWrap) { for (int i = 0; i < childStrs2.size(); i++) childStrs2.set(i, childStrs2.get(i).replaceAll("\\n", "\n" + indent)); String body = Joiner.on(separator + "\n" + indent).join(childStrs2); return "(\n" + indent + body + "\n)" + (cardinality == null ? "" : cardinality); } else { if (cardinality != null && childStrs2.size() > 1) needParenthesis = true; String body = Joiner.on(separator).join(childStrs2); if (needParenthesis) return "(" + body + ")" + (cardinality == null ? "" : cardinality); return body; } }
protected String format(Production<ELEMENT, TOKEN> adapter, ELEMENT element, Iterable<ELEMENT> children, String separator, boolean needWrap, boolean needParenthesis, int maxChildren) { List<String> childStrs2 = Lists.newArrayList(); int width2 = 0; for (ELEMENT child : children) { String childStr = format(adapter, child, true); childStrs2.add(childStr); width2 += childStr.length(); if (childStr.contains("\n")) needWrap = true; } if (childStrs2.size() > maxChildren) needWrap = true; if (width2 > autoWrapChars) needWrap = true; String cardinality = getCardinality(adapter, element); if (needWrap) { for (int i = 0; i < childStrs2.size(); i++) childStrs2.set(i, childStrs2.get(i).replaceAll("\\n", "\n" + indent)); String body = Joiner.on(separator + "\n" + indent).join(childStrs2); return "(\n" + indent + body + "\n)" + (cardinality == null ? "" : cardinality); } else { if (cardinality != null && childStrs2.size() > 1) needParenthesis = true; String body = Joiner.on(separator).join(childStrs2); if (needParenthesis) return "(" + body + ")" + (cardinality == null ? "" : cardinality); return body; } }
public String format(Production<ELEMENT, TOKEN> adapter, ELEMENT grammarElement, boolean needParenthesis) { TOKEN token = adapter.getToken(grammarElement); if (token != null) { String cardinality = getCardinality(adapter, grammarElement); if (cardinality == null) return tokenToString.apply(token); return tokenToString.apply(token) + cardinality; } Iterable<ELEMENT> alternative = adapter.getAlternativeChildren(grammarElement); if (alternative != null) return format(adapter, grammarElement, alternative, " | ", false, needParenthesis, 5); Iterable<ELEMENT> group = adapter.getSequentialChildren(grammarElement); if (group != null) return format(adapter, grammarElement, group, " ", false, needParenthesis, 5); Iterable<ELEMENT> ungroup = adapter.getUnorderedChildren(grammarElement); if (ungroup != null) return format(adapter, grammarElement, ungroup, " & ", false, needParenthesis, 5); return "<unknown>"; }
public String format(Production<ELEMENT, TOKEN> adapter, ELEMENT grammarElement, boolean needParenthesis) { TOKEN token = adapter.getToken(grammarElement); if (token != null) { String cardinality = getCardinality(adapter, grammarElement); if (cardinality == null) return tokenToString.apply(token); return tokenToString.apply(token) + cardinality; } Iterable<ELEMENT> alternative = adapter.getAlternativeChildren(grammarElement); if (alternative != null) return format(adapter, grammarElement, alternative, " | ", false, needParenthesis); Iterable<ELEMENT> group = adapter.getSequentialChildren(grammarElement); if (group != null) return format(adapter, grammarElement, group, " ", false, needParenthesis); Iterable<ELEMENT> ungroup = adapter.getUnorderedChildren(grammarElement); if (ungroup != null) return format(adapter, grammarElement, ungroup, " & ", false, needParenthesis); return "<unknown>"; }