!7 // np = noun phrase // q = question word // vb = verb phrase // adj = adjective static SS data = litmap( "Commodore", "np", "Commodore 64", "np", "Amiga", "np", "Atari", "np", "Atari ST", "np", "What", "q", "Where", "q", "How", "q", "Why", "q", "When", "q", "is", "vb", "are", "vb", "wants", "vb", "does", "vb", "goes", "vb", "fast", "adj", "slow", "adj", "new", "adj", "old", "adj", " ", "question", ); static O parser; p { parser = hotwire("#1002719"); print(parse("What is Amiga")); makeBot(); } static S parse(S text) { S rules = makeRules(); O result; time { result = call(parser, "parse", text, rules); } //ret "```" + call(result, "prettierAnalysis") + "```"; //ret structure(call(result, "explain", explainClass)); L classes = cast call(result, "fullMatchClasses"); ret (empty(classes) ? "not parsed" : "parsed as " + structure(classes)) + " [" + getLastTiming() + " ms, " + getOpt(parser, "timing") + " ms actual]"; } static S makeRules() { ret fromLines(map(data, func(S s, S c) { s + " = " + c })); } synchronized static S answer(S s) { ret parse(s); }