!752 static class Feedback { long date; int goodBadNotSure; // +1 (good) / -1 (bad) / 0 (not sure) S user; S comment; } static class Action { S input; S output; S algorithmMD5; long date; new L feedback; } static new L actionLog; p { load("actionLog"); } synchronized answer { if (match("parse answer function of *", s, m) || match("show answer function of *", s, m)) try { S botID = m.fsi(0); O bot = getBot(botID); S mainJava = getMainJava(bot); L tok = javaTok(mainJava); int i = jfind(tok, "String answer(String"); if (i < 0) ret "No answer function found..."; i = leftScanModifiers(tok, i); int j = findBeginningOfBlock(tok, i); j = findEndOfBlock(tok, j); S func = join(tok.subList(i, j)); boolean fullParse = matchStart("parse", s); S answer = func; if (fullParse) { L lines = toLines(answer); for (i = 0; i < l(lines); i++) { S line = lines.get(i); boolean ok = false; pcall { ok = jparse(line, "statement") != null; } lines.set(i, (ok ? "STA" : "???") + " " + line); } answer = fromLines(lines); } answer = slackSnippet(answer); O parsed = null; pcall { parsed = jparse(func, "method"); } answer = (parsed != null ? "parses." : "does not parse.") + "\n" + answer; ret answer; } catch (Throwable e) { ret exceptionToUser(e); } }