X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=JSDOC%2FTokenStream.vala;h=559141b51151534cb95362adc91f5f513b28ffba;hb=1b1f1ee454912abe1e6716e22f8e1990694bee38;hp=2b88de4e7c7811167e6f7c929b1dd8b416bb7390;hpb=013833ee4658dc4bc4683f9ca091da6f5776defd;p=gnome.introspection-doc-generator diff --git a/JSDOC/TokenStream.vala b/JSDOC/TokenStream.vala index 2b88de4..559141b 100644 --- a/JSDOC/TokenStream.vala +++ b/JSDOC/TokenStream.vala @@ -28,7 +28,10 @@ namespace JSDOC { this.rewind(); } - + public Gee.ArrayList toArray() + { + return this.tokens; + } public void rewind() { @@ -38,7 +41,7 @@ namespace JSDOC { /** @type JSDOC.Token */ - public Token? look (int n, bool considerWhitespace) + public Token? look (int n, bool considerWhitespace) // depricated... causes all sorts of problems... { @@ -77,6 +80,21 @@ namespace JSDOC { // return new Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object } + // look through token stream, including white space... + public Token lookAny (int n) + { + + + if (this.cursor+n < 0 || this.cursor+n > (this.tokens.size -1)) { + return new Token("", "VOID", "START_OF_STREAM"); + } + return this.tokens.get(this.cursor+n); + + + + } + + public int lookFor (string data) { @@ -210,11 +228,11 @@ namespace JSDOC { * @param start {String} token name or data (eg. '{' * @param stop {String} (Optional) token name or data (eg. '}' */ - public Gee.ArrayList balance (string start, string stop = "") throws TokenStreamError + public Gee.ArrayList balance (string start, string in_stop = "") throws TokenStreamError { // accepts names or "{" etc.. - + var stop = in_stop; start = Lang.punc(start) == null ? start : Lang.punc(start); if (stop=="") { @@ -224,7 +242,7 @@ namespace JSDOC { if (stop == null) { throw new TokenStreamError.ArgumentError("balance called with invalid start/stop : %s",start); } - + debug("START=%s, STOP=%s \n", start,stop); var depth = 0; var got = new Gee.ArrayList(); var started = false; @@ -232,7 +250,8 @@ namespace JSDOC { //Seed.print("STOP:" + stop); Token token; - while (null != (token = this.look(1,false))) { + while (null != (token = this.lookAny(1))) { + debug("BALANCE: %d %s " , this.cursor, token.asString()); if (token.is(start)) { // Seed.print("balance: START : " + depth + " " + token.data); depth++; @@ -245,10 +264,14 @@ namespace JSDOC { if (token.is(stop)) { depth--; - // Seed.print("balance: STOP: " + depth + " " + token.data); + + //print("balance (%d): STOP: %s\n" , depth , token.data); if (depth < 1) { + this.next(); // shift cursor to eat closer... + //print("returning got %d\n", got.size); return got; } + } if (null == this.next()) { break; @@ -347,7 +370,14 @@ namespace JSDOC { } } - + public void dumpAllFlat() + { + for (var i = 0;i < this.tokens.size; i++) { + + print("%d: %s\n", i, this.tokens[i].asString()); + } + + } } }