Libraryless. Click here for Pure Java version (628L/5K/15K).
1 | !752 |
2 | |
3 | static O interpret(S java) {
|
4 | ret new JavaInterpreter().interpret(java); |
5 | } |
6 | |
7 | // to trigger function inclusion |
8 | |
9 | static void dummy() {
|
10 | eq(null, null); |
11 | collapseWord(null); |
12 | } |
13 | |
14 | static class JavaInterpreter {
|
15 | int i; |
16 | L<S> tok; |
17 | L<S> allowedFunctions = litlist("eq", "collapseWord");
|
18 | |
19 | O interpret(S java) {
|
20 | i = 1; |
21 | tok = javaTok(java); |
22 | if (litlist("ret", "returns").contains(get(tok, i))) {
|
23 | i += 2; |
24 | O result = expression(); |
25 | consume(";");
|
26 | ret result; |
27 | } |
28 | |
29 | throw fail("huh? " + i + " " + get(tok, i));
|
30 | } |
31 | |
32 | void consume(S x) {
|
33 | assertEquals(get(tok, i), x); |
34 | i += 2; |
35 | } |
36 | |
37 | S consume() {
|
38 | S t = t(); |
39 | assertNotNull(t); |
40 | i += 2; |
41 | ret t; |
42 | } |
43 | |
44 | S t() {
|
45 | ret get(tok, i); |
46 | } |
47 | |
48 | O expression() {
|
49 | if (isQuoted(t())) |
50 | ret unquote(consume()); |
51 | if (isIdentifier(t())) {
|
52 | S fname = consume(); |
53 | consume("(");
|
54 | new L args; |
55 | while (neq(t(), ")")) {
|
56 | args.add(expression()); |
57 | if (eq(t(), ",")) |
58 | consume(); |
59 | } |
60 | consume(")");
|
61 | ret call(mainClass(), fname, toObjectArray(args)); |
62 | } |
63 | throw fail(t()); |
64 | } |
65 | } |
download show line numbers debug dex old transpilations
Travelled to 15 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, teubizvjbppd, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1002015 |
| Snippet name: | Java Interpreter (hotwirable) |
| Eternal ID of this version: | #1002015/1 |
| Text MD5: | 0af211027b0c00b87d68af2a84a605e9 |
| Transpilation MD5: | e9d7b9c8518ab6fe24c691dd73b1aa74 |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX source code |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2015-12-13 19:12:44 |
| Source code size: | 1215 bytes / 65 lines |
| Pitched / IR pitched: | No / Yes |
| Views / Downloads: | 879 / 1256 |
| Referenced in: | [show references] |