Transpiled version (4162L) is out of date.
!7 sclass Parser { new StringTree2 tree; L<S> tok(S s) { ret javaTok(s); } L<S> tokC(S s) { ret javaTokC(s); } void register(S text, O action) { addToStringTree(tree, tokC(text), action); } Parsing parse(S text) { ret nu(Parsing, parser := this, it := tokC(text).iterator(), treesInFlight := ll(new InFlight(tree))); } } sclass InFlight { new L history; StringTree2 tree; *() {} *(StringTree2 *tree) {} *(L *history, StringTree2 *tree) {} } sclass Parsing { Parser parser; Iterator<S> it; new L<InFlight> treesInFlight; void run { while (it.hasNext()) step(); } void step { S token = it.next(); for i over treesInFlight: { InFlight tree = treesInFlight.get(i); StringTree2 tree2 = tree.tree.get(token); if (tree2 == null) treesInFlight.remove(i--); else treesInFlight.set(i, new InFlight(tree.history, tree2)); } actions(); } void actions { for (StringTree2 tree : treesInFlight) if (tree! != null) runAction(tree!); } void runAction(O o) { print("Action! " + struct(o)); } } p { new Parser p; p.register("I am here", "I-am-here"); Parsing pp = p.parse("yo I am here"); pp.run(); }
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: | #1008783 |
Snippet name: | "Single Word Parser" Spike 1 [abandoned] |
Eternal ID of this version: | #1008783/7 |
Text MD5: | b2fe80e56b3867c9a33b31421b2365f4 |
Author: | stefan |
Category: | javax / a.i. parsing |
Type: | JavaX source code |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-02-26 12:22:14 |
Source code size: | 1313 bytes / 65 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 515 / 651 |
Version history: | 6 change(s) |
Referenced in: | [show references] |