Libraryless. Click here for Pure Java version (18760L/136K).
1 | !7 |
2 | |
3 | sclass BottomUpParser > DynSCPWithInput { |
4 | start { |
5 | dm_useLocallyCopiedMechLists(); set flag NoFancyMechParsing. |
6 | } |
7 | |
8 | void update(S s) { |
9 | temp enter(); |
10 | if (!isShowing()) { inputChooser.forgetInput(); ret; } |
11 | |
12 | final new AI_BottomUpParser1 parser; |
13 | parser.parse(s); |
14 | AI_BottomUpParser1.Word w = parser.fullGroup(); |
15 | print("Full group: " + w); |
16 | if (w == null) ret; |
17 | final L<WeightedProduction> productions = ai_buParser_parseWeightedProductions(); |
18 | print("Have " + n2(productions, "production")); |
19 | |
20 | class ChooseCategory { |
21 | AI_BottomUpParser1.Word word; |
22 | L<S> categories; |
23 | |
24 | *(AI_BottomUpParser1.Word *word, L<S> *categories) {} |
25 | |
26 | toString { ret word.text() + " (" + n2(categories, "category", "categories") + ")"; } |
27 | } |
28 | |
29 | class HaveCategory { |
30 | AI_BottomUpParser1.Word word; |
31 | S category; |
32 | |
33 | *(AI_BottomUpParser1.Word *word, S *category) {} |
34 | |
35 | toString { ret quote(word.text()) + " as " + category; } |
36 | } |
37 | |
38 | class ChoosePart { |
39 | ai_Reconstructed reconstruction; |
40 | |
41 | *(ai_Reconstructed *reconstruction) {} |
42 | |
43 | toString { ret reconstruction.a.text() + " + " + reconstruction.b.text(); } |
44 | } |
45 | |
46 | ChooseCategory root = new(w, asList(w.classes)); |
47 | |
48 | setComponent(jDynamicTree(root, func(fO e) -> L<O> { |
49 | if (e instanceof ChooseCategory) |
50 | ret map(((ChooseCategory) e).word.classes, func(S cat) { new HaveCategory(((ChooseCategory) e).word, cat) }); |
51 | if (e instanceof HaveCategory) { |
52 | HaveCategory h = cast e; |
53 | L<ai_Reconstructed> l = ai_buParser1_reconstructedProductions(parser, productions, h.word, h.category); |
54 | ret map(l, func(ai_Reconstructed r) -> O { |
55 | r.production.b == null |
56 | ? new HaveCategory(r.a, r.production.a) |
57 | : new ChoosePart(r) |
58 | }); |
59 | } |
60 | if (e instanceof ChoosePart) { |
61 | ai_Reconstructed r = ((ChoosePart) e).reconstruction; |
62 | ret (L) ll(new HaveCategory(r.a, r.production.a), |
63 | new HaveCategory(r.b, r.production.b)); |
64 | } |
65 | null; |
66 | })); |
67 | print("Made tree"); |
68 | } |
69 | } |
Began life as a copy of #1017376
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1017392 |
Snippet name: | English Parse Tree [OK!] |
Eternal ID of this version: | #1017392/24 |
Text MD5: | 15bc6485a2e60998bf72817a6eca6e64 |
Transpilation MD5: | 77a016788cb135eedf02b3ef6eefad1d |
Author: | stefan |
Category: | javax / a.i. |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2018-07-19 18:24:21 |
Source code size: | 2213 bytes / 69 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 357 / 550 |
Version history: | 23 change(s) |
Referenced in: | [show references] |