Libraryless. Click here for Pure Java version (2462L/17K/53K).
!759 // Example input: // If the available commands are "load", "save" and "quit", which command is "q" likely to mean? static S parsingRules = [[ case-insensitive if the available commands are <cmdlist>, which command is <cmd> likely to mean? = question <quoted> = cmd <cmd> = cmdlist <cmd> <and> <cmdlist> = cmdlist , = and and = and ]]; // returns null if className is not a parsed main class static Explain explainFull(O parseResult, S className) { L exp = cast call(parseResult, "explainFull", className); if (exp == null) ret null; ret new Explain(parseResult, exp); } static S findBestMatch(S query, L<S> cmds) { query = query.toLowerCase(); new Map<S, Integer> map; for (S cmd : cmds) map.put(cmd, l(commonPrefix(cmd.toLowerCase(), query))); ret highest(map); } static O parser; p { parser = newParser(); } synchronized answer { // prematching to not fire up the parser every time... if (matchStart("If the available commands are", s)) { O parseResult = call(parser, "parse", s, parsingRules); Explain explain = explainFull(parseResult, "question"); if (explain != null) { Explain dehlist = explain.sub(0); L<S> quotedCmds = dehlist.findAll("cmd"); S query = unquote(explain.sub(1).string()); new L<S> cmds; for (S cmd : quotedCmds) cmds.add(unquote(cmd)); ret structure(findBestMatch(query, cmds)); } else ret "No parse: " + structure(parseResult); } }
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1002418 | 
| Snippet name: | A Simple Command Finding Bot | 
| Eternal ID of this version: | #1002418/3 | 
| Text MD5: | f29295ce4d74f1334ed9dcb8c9cebb3f | 
| Transpilation MD5: | 7c6032fe5788520726525e260f852e08 | 
| Author: | stefan | 
| Category: | |
| Type: | JavaX source code | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2017-06-09 03:35:29 | 
| Source code size: | 1533 bytes / 56 lines | 
| Pitched / IR pitched: | No / No | 
| Views / Downloads: | 930 / 1571 | 
| Version history: | 2 change(s) | 
| Referenced in: | [show references] |