!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 { new AI_BottomUpParser1 parser; parser.parse(s); parser.printWordsAndGroups(); parser.printConstituentsOfFullGroup(); }); bool shouldPrint = neq(rendered, lastOutput); lastOutput = rendered; if (shouldPrint) print("\n> " + s + "\n" + rendered); } }