!7 sclass BottomUpParser > DynPrintLogWithInput { transient S lastOutput; start { set flag DynModule. set flag NoFancyMechParsing. dm_useLocallyCopiedMechLists(); // In case lists change doEvery(5000, r { update(inputChooser.input()) }); } void update(fS s) { temp enter(); //print("updating"); S rendered = hijackPrint(r { AI_BottomUpParser1 parser = ai_parseToTreeWithGuessing(s); parser.printWordsAndGroups(); parser.printConstituentsOfFullGroup(); }); bool shouldPrint = neq(rendered, lastOutput); lastOutput = rendered; if (shouldPrint) print("\n> " + s + "\n" + rendered); } }