!7 sclass BottomUpParser > DynSCPWithInput { start { set flag DynModule. // for transpilation dm_useLocallyCopiedMechLists(); set flag NoFancyMechParsing. ai_parser_activateStandardFunctions(); } void update(S s) { temp enter(); if (!isShowing()) { inputChooser.forgetInput(); ret; } final new AI_BottomUpParser1 parser; parser.parse(s); AI_BottomUpParser1.Word w = parser.fullGroup(); print("Full group: " + w); if (w == null) ret; final L productions = ai_buParser_parseWeightedProductions(); print("Have " + n2(productions, "production")); print("Classes: " + sfu(w.classes)); ChooseCategory root = new(w, withoutQuoted(w.classes)); ai_parseTree_makeWeights(parser, productions, root); ai_parseTree_makeTotalWeights(root, 1); setComponent(jDynamicTree(root, func(final PTElement e) -> L { e.children })); } }