static L dropPunctuationAtEnd_keep = litlist("*", "<", ">", "]", ")", "}"); static L dropPunctuationAtEnd(L tok) { tok = new ArrayList(tok); for (int i = tok.size()-2; i > 0; i -= 2) { S t = tok.get(i); if (t.length() == 1 && !Character.isLetter(t.charAt(0)) && !Character.isDigit(t.charAt(0)) && !dropPunctuationAtEnd_keep.contains(t)) { tok.remove(i); tok.remove(i); } else break; } return tok; } static S dropPunctuationAtEnd(S s) { ret join(dropPunctuationAtEnd(nlTok(s))); }