!7 sclass BottomUpParser > DynPrintLogWithInput { transient S lastOutput; start { dm_useLocallyCopiedMechLists(); set flag NoFancyMechParsing. // In case lists change doEvery(5000, r { update(inputChooser.input()) }); } void update(S s) { temp enter(); final new AI_BottomUpParser1 parser; parser.parse(s); S rendered = hijackPrint(r { parser.printWordsAndGroups(); parser.printConstituentsOfFullGroup(); AI_BottomUpParser1.Word w = parser.fullGroup(); L>> groupings = ai_buParser1_reconstructedGroupings2(parser, w, ""); Map, S> simplifications = ai_buParser_parseSimplifications(mL(ai_language() + " groupings with simplification rules")); print("Have " + n2(simplifications, "simplification")); print("Have groupings:"); pnl(groupings); for (T3> t : groupings) { S simp = simplifications.get(t.c); if (eqOneOf(simp, "K", "L", "R")) print("Simplifying: " + simp); else print("Unknown simplification for " + t.c + ": " + simp); } }); bool shouldPrint = neq(rendered, lastOutput); lastOutput = rendered; if (shouldPrint) print("\n> " + s + "\n" + rendered); } }