static Producer<S> javaTokC_noMLS_onReader(final BufferedReader r) { final class X implements Producer<S> { new StringBuilder buf; // stores from "i" char c, d, e = 'x'; // just not '\0' *() { // fill c, d and e nc(); nc(); nc(); } // get next character(s) into c, d and e void nc() ctex { c = d; d = e; if (e == '\0') ret; int i = r.read(); e = i < 0 ? '\0' : i == '\0' ? '_' // shouldn't happen anymore : (char) i; } void ncSave() { if (c != '\0') { buf.append(c); nc(); } } public S next() { // scan for whitespace while (c != '\0') { if (c == ' ' || c == '\t' || c == '\r' || c == '\n') nc(); else if (c == '/' && d == '*') { do nc(); while (c != '\0' && !(c == '*' && d == '/')); nc(); nc(); } else if (c == '/' && d == '/') { do nc(); while (c != '\0' && "\r\n".indexOf(c) < 0); } else break; } if (c == '\0') ret null; // scan for non-whitespace if (c == '\'' || c == '"') { char opener = c; ncSave(); while (c != '\0') { if (c == opener || c == '\n') { // end at \n to not propagate unclosed string literal errors ncSave(); break; } else if (c == '\\') { ncSave(); ncSave(); } else ncSave(); } } else if (Character.isJavaIdentifierStart(c)) do ncSave(); while (Character.isJavaIdentifierPart(c) || c == '\''); // for stuff like "don't" else if (Character.isDigit(c)) { do ncSave(); while (Character.isDigit(c)); if (c == 'L') ncSave(); // Long constants like 1L } else ncSave(); S t = buf.toString(); buf.setLength(0); ret t; } } ret new X; }
Began life as a copy of #1005981
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: | #1008762 |
Snippet name: | javaTokC_noMLS_onReader - javaTokC as Producer on BufferedReader, no multi-line strings |
Eternal ID of this version: | #1008762/3 |
Text MD5: | 0de3d66eb9b48d4672cb1ef671229e3c |
Author: | stefan |
Category: | javax / parsing |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2018-06-02 23:57:02 |
Source code size: | 2023 bytes / 76 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 579 / 648 |
Version history: | 2 change(s) |
Referenced in: | #1006654 - Standard functions list 2 (LIVE, continuation of #761) |