Clazz.declarePackage ("JSV.source"); Clazz.load (null, "JSV.source.JDXSourceStreamTokenizer", ["java.lang.Character", "JU.SB", "JU.Logger"], function () { c$ = Clazz.decorateAsClass (function () { this.br = null; this.rawLabel = null; this.value = null; this.labelLineNo = 0; this.line = null; this.lineNo = 0; Clazz.instantialize (this, arguments); }, JSV.source, "JDXSourceStreamTokenizer"); Clazz.makeConstructor (c$, function (br) { this.br = br; }, "java.io.BufferedReader"); Clazz.defineMethod (c$, "peakLabel", function () { return this.nextLabel (false); }); Clazz.defineMethod (c$, "getLabel", function () { return this.nextLabel (true); }); Clazz.defineMethod (c$, "nextLabel", function (isGet) { this.rawLabel = null; this.value = null; while (this.line == null || this.line.length == 0) { try { this.readLine (); if (this.line == null) { this.line = ""; return null; }this.line = this.line.trim (); } catch (e) { if (Clazz.exceptionOf (e, java.io.IOException)) { this.line = ""; return null; } else { throw e; } } if (this.line.startsWith ("##")) break; this.line = null; } var pt = this.line.indexOf ("="); if (pt < 0) { if (isGet) JU.Logger.info ("BAD JDX LINE -- no '=' (line " + this.lineNo + "): " + this.line); this.rawLabel = this.line; if (!isGet) this.line = ""; } else { this.rawLabel = this.line.substring (0, pt).trim (); if (isGet) this.line = this.line.substring (pt + 1); }this.labelLineNo = this.lineNo; if (JU.Logger.debugging) JU.Logger.info (this.rawLabel); return JSV.source.JDXSourceStreamTokenizer.cleanLabel (this.rawLabel); }, "~B"); c$.cleanLabel = Clazz.defineMethod (c$, "cleanLabel", function (label) { if (label == null) return null; var i; var str = new JU.SB (); for (i = 0; i < label.length; i++) { switch (label.charAt (i)) { case '/': case '\\': case ' ': case '-': case '_': break; default: str.appendC (label.charAt (i)); break; } } return str.toString ().toUpperCase (); }, "~S"); Clazz.defineMethod (c$, "getValue", function () { if (this.value != null) return this.value; var sb = new JU.SB ().append (this.line); if (sb.length () > 0) sb.appendC ('\n'); try { while (this.readLine () != null) { if (this.line.indexOf ("##") >= 0 && this.line.trim ().startsWith ("##")) break; sb.append (this.line).appendC ('\n'); } } catch (e) { if (Clazz.exceptionOf (e, java.io.IOException)) { JU.Logger.info (e.toString ()); } else { throw e; } } this.value = (this.rawLabel.startsWith ("##$") ? sb.toString ().trim () : JSV.source.JDXSourceStreamTokenizer.trimLines (sb)); if (JU.Logger.debugging) JU.Logger.info (this.value); return this.value; }); Clazz.defineMethod (c$, "readLineTrimmed", function () { this.readLine (); if (this.line == null) return null; if (this.line.indexOf ("$$") < 0) return this.line.trim (); var sb = new JU.SB ().append (this.line); return JSV.source.JDXSourceStreamTokenizer.trimLines (sb); }); Clazz.defineMethod (c$, "flushLine", function () { var sb = new JU.SB ().append (this.line); this.line = null; return JSV.source.JDXSourceStreamTokenizer.trimLines (sb); }); Clazz.defineMethod (c$, "readLine", function () { this.line = this.br.readLine (); this.lineNo++; return this.line; }); c$.trimLines = Clazz.defineMethod (c$, "trimLines", function (v) { var n = v.length (); var ilast = n - 1; var vpt = JSV.source.JDXSourceStreamTokenizer.ptNonWhite (v, 0, n); if (vpt >= n) return ""; var buffer = Clazz.newCharArray (n - vpt, '\0'); var pt = 0; for (; vpt < n; vpt++) { var ch; switch (ch = v.charAt (vpt)) { case '\r': if (vpt < ilast && v.charAt (vpt + 1) == '\n') continue; ch = '\n'; break; case '\n': if (pt > 0 && buffer[pt - 1] != '\n') pt -= vpt - JSV.source.JDXSourceStreamTokenizer.ptNonSpaceRev (v, vpt) - 1; vpt = JSV.source.JDXSourceStreamTokenizer.ptNonSpace (v, ++vpt, n) - 1; break; case '$': if (vpt < ilast && v.charAt (vpt + 1) == '$') { vpt++; while (++vpt < n && "\n\r".indexOf (v.charAt (vpt)) < 0) { } continue; }break; } if (ch == '\n' && pt > 0 && buffer[pt - 1] == '\n') continue; buffer[pt++] = ch; } if (pt > 0 && buffer[pt - 1] == '\n') --pt; return ( String.instantialize (buffer)).substring (0, pt).trim (); }, "JU.SB"); c$.ptNonWhite = Clazz.defineMethod (c$, "ptNonWhite", function (v, pt, n) { while (pt < n && Character.isWhitespace (v.charAt (pt))) pt++; return pt; }, "JU.SB,~N,~N"); c$.ptNonSpace = Clazz.defineMethod (c$, "ptNonSpace", function (v, pt, n) { while (pt < n && (v.charAt (pt) == ' ' || v.charAt (pt) == '\t')) pt++; return pt; }, "JU.SB,~N,~N"); c$.ptNonSpaceRev = Clazz.defineMethod (c$, "ptNonSpaceRev", function (v, pt) { while (--pt >= 0 && (v.charAt (pt) == ' ' || v.charAt (pt) == '\t')) { } return pt; }, "JU.SB,~N"); });