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: | 602 / 866 |
| Version history: | 23 change(s) |
| Referenced in: | [show references] |