!7 sbool simplify = true; sS background = #1009946; static JDesktopPane desktop; static ShadowJLabel lblInput; static JLabel lblSpoiler; static Canvas canvas; static JButton btnParseOK, btnParseNotOK; sbool auto = true; static Bool parseOK; static S input; static Triple triple; static Map>, Bool> parseOKMap; p { parseOKMap = persistentHashMap('parseOKMap); autoRestart(); nimbus(); gac36k(); // preload desktop = jTiledBackgroundDesktopPane(background); autoFixDesktopPane(desktop); cleanExitOnFrameClose(showMaximizedFrame(desktop)); lblInput = centerLabel(swingNu(ShadowJLabel)); lblInput.setForeground(Color.yellow); lblInput.setRightShadow(2, 3, Color.gray); setInternalFrameY(40, showCenteredInternalFrame(desktop, "Question", desktop.getWidth()-100, 150, jBackground(Color.black, withBottomMargin(4, centerAndSouth( jbold(setFont(#1011146, 35, lblInput)), westAndEast( withLeftMargin(10, setBoldFontSize(20, setForeground(Color.gray, lblSpoiler = jlabel()))), withRightMargin(10, jbutton("Next", f next)))))))); setInternalFrameY(internalFrameY2(getInternalFrame(lblInput))+40, showCenteredInternalFrame(desktop, "Analysis", 600, 400, centerAndSouth( canvas = jcanvas(), jcenteredline(jlabel("How is the parse?"), btnParseOK = jbutton("OK", f parseOK), btnParseNotOK = jbutton("Not OK", f parseNotOK))))); next(); awtEvery(lblInput, 5000, r { if (auto && !mouseInInternalFrames(canvas, lblInput)) next() }); //hideConsole(); } svoid next { S s; setText(lblInput, s = random_gac36k()); setText(lblSpoiler, floatToYesNo(gac36k().get(s))); analyze(); } svoid analyze { input = getTextTrim(lblInput); triple = ai_tripelize(input); parseOK = parseOKMap.get(pair(input, triple)); buttons(); Web web = webFromTriple(triple, 0.3, 0.2, 0.7, 0.7); if (simplify) web_ai_addSimplifications(web); canvas = webToCanvas(web, canvas); } svoid parseOK { parseOK(true); } svoid parseNotOK { parseOK(false); } svoid parseOK(bool ok) { parseOKMap.put(pair(input, triple), parseOK = ok); buttons(); awtLater(lblInput, 1000, f next); } svoid buttons { setEnabled(btnParseOK, !isTrue(parseOK)); setEnabled(btnParseNotOK, !isFalse(parseOK)); }