Libraryless. Click here for Pure Java version (898L/7K/20K).
1 | !747 |
2 | !multi-line strings |
3 | |
4 | m { |
5 | static S input = [[ |
6 | // Dogmas |
7 | |
8 | A point consists of a number "x" and number "y". |
9 | These numbers are independent. |
10 | A number might be a float. |
11 | |
12 | // Questions |
13 | |
14 | What are x and y of the point "1,2"? |
15 | ]]; |
16 | |
17 | !include #2000515 // unquote |
18 | !include #1000709 // formatSnippetID |
19 | |
20 | static class Point { |
21 | static Map<S, O> parse(S s) { |
22 | new Matches m; |
23 | if (match3("*,*", s, m)) |
24 | ret litmap("x", parseDouble(m.unq(0)), "y", parseDouble(m.unq(1))); |
25 | ret null; |
26 | } |
27 | } |
28 | |
29 | static Map<S, O> concepts = litmap("point", Point.class); |
30 | |
31 | p { |
32 | for (S line : toLinesFullTrim(input)) |
33 | print(answer(line)); |
34 | } |
35 | |
36 | static S answer(S line) { |
37 | L<S> tok = nlTok(line); |
38 | if (l(tok) == 1) ret "..."; |
39 | simplify(tok); |
40 | S s = join(tok); |
41 | print(" " + s); |
42 | |
43 | new Matches m; |
44 | |
45 | // Dogmas - We just ignore them this time |
46 | |
47 | // Questions |
48 | |
49 | if (match3("What are the * and * of the * *?", s, m) |
50 | || match3("What are * and * of the * *?", s, m)) { |
51 | S component1 = simplifyName(m.unq(0)); |
52 | S component2 = simplifyName(m.unq(1)); |
53 | S name = simplifyName(m.unq(2)); |
54 | S pattern = m.unq(3); |
55 | O concept = concepts.get(name); |
56 | Map<S, O> instance = (Map) call(concept, "parse", pattern); |
57 | ret structure(instance); // TODO: filter for components |
58 | } |
59 | |
60 | ret "huh?"; |
61 | } |
62 | |
63 | static S simplifyName(S s) { |
64 | ret join(" ", codeTokensOnly(tokensToLowerCase(nlTok(s)))); |
65 | } |
66 | |
67 | static void simplify(L<S> tok) { |
68 | for (int i = 1; i < l(tok); ) |
69 | if (equalsIgnoreCase(tok.get(i), "usually")) { |
70 | removeToken(tok, i); |
71 | } else |
72 | i += 2; |
73 | } |
74 | } |
Began life as a copy of #1001685
download show line numbers debug dex old transpilations
Travelled to 16 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, teubizvjbppd, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1001694 |
Snippet name: | Points (developing) |
Eternal ID of this version: | #1001694/1 |
Text MD5: | 0e012e1d10d41cc4fa73413122c99d68 |
Transpilation MD5: | c1fdb8dce7e16f4e972837fd787f705d |
Author: | stefan |
Category: | javax |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2015-11-05 16:12:59 |
Source code size: | 1775 bytes / 74 lines |
Pitched / IR pitched: | No / Yes |
Views / Downloads: | 725 / 1186 |
Referenced in: | [show references] |