Libraryless. Click here for Pure Java version (4923L/29K).
svoid tok_questionDot(LS tok) { jreplace_dyn(tok, "->?.", -> { S var = makeVar(); ret var + " -> " + var + "?."; }); jreplace(tok, "if (<id> ?. <id)", "if ($3 != null && $3.$6)"); int i; while ((i = jfind(tok, "<id> ?.")) >= 0) { S var = tok.get(i); bool isExpression = eqGetOneOf(tok, i-2, "ret", "return", ",", "=", "(", "?", "+", ">"); // too few if (!isExpression) { int j = tok_findEndOfStatement(tok, i)-1; tokAppend_reTok(tok, j, " }"); tokReplace_reTok(tok, i, i+6, "{ if (\*var*/ != null) \*var*/."); } else { S expr = "\*var*/ == null ? null : \*var*/."; bool needBrackets = eqGet(tok, i-2, "+"); if (needBrackets) { expr = "(" + expr; int j = tok_endOfExpression(tok, i)-1; tokPrepend_reTok(tok, j, ")"); } tokReplace_reTok(tok, i, i+6, expr); } } jreplace_dyn(tok, "<id>()?.", func(LS tok, int i) -> S { int iQ = indexOf(tok, i, "?"); S expr = joinSubList(tok, i, iQ-1); bool isExpression = eqGetOneOf(tok, i-2, "ret", "return", ",", "=", "(", "?"); // too few S var = makeVar(); if (!isExpression) { int j = tok_findEndOfStatement(tok, i)-1; tokAppend_reTok(tok, j, " }"); ret "{ var \*var*/ = \*expr*/; if (\*var*/ != null) \*var*/."; } else { // experimental int j = tok_findEndOfExpression(tok, i)-1; tokAppend_reTok(tok, j, ")"); ret "rCallF(\*expr*/, \*var*/ -> \*var*/ == null ?: \*var*/."; } }); }
download show line numbers debug dex old transpilations
Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv
No comments. add comment
Snippet ID: | #1024937 |
Snippet name: | tok_questionDot - uses rCallF in the transpilation |
Eternal ID of this version: | #1024937/28 |
Text MD5: | 753af11b05aa42fd0e673242d48edcfa |
Transpilation MD5: | 89d2cf0b6c1e498528e77cf3e3322b56 |
Author: | stefan |
Category: | javax / transpiling |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-10-18 05:06:45 |
Source code size: | 1585 bytes / 45 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 479 / 719 |
Version history: | 27 change(s) |
Referenced in: | [show references] |