Libraryless. Click here for Pure Java version (628L/5K/15K).
!752 static O interpret(S java) { ret new JavaInterpreter().interpret(java); } // to trigger function inclusion static void dummy() { eq(null, null); collapseWord(null); } static class JavaInterpreter { int i; L<S> tok; L<S> allowedFunctions = litlist("eq", "collapseWord"); O interpret(S java) { i = 1; tok = javaTok(java); if (litlist("ret", "returns").contains(get(tok, i))) { i += 2; O result = expression(); consume(";"); ret result; } throw fail("huh? " + i + " " + get(tok, i)); } void consume(S x) { assertEquals(get(tok, i), x); i += 2; } S consume() { S t = t(); assertNotNull(t); i += 2; ret t; } S t() { ret get(tok, i); } O expression() { if (isQuoted(t())) ret unquote(consume()); if (isIdentifier(t())) { S fname = consume(); consume("("); new L args; while (neq(t(), ")")) { args.add(expression()); if (eq(t(), ",")) consume(); } consume(")"); ret call(mainClass(), fname, toObjectArray(args)); } throw fail(t()); } }
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: | 642 / 956 |
Referenced in: | #1002011 - Test Java Interpreter #3000382 - Answer for ferdie (>> t = 1, f = 0) #3000383 - Answer for funkoverflow (>> t=1, f=0 okay) |