X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=JSDOC%2FTokenStream.vala;h=9f7d3110128fc13659dad3777c1b6b9f57a67515;hb=933358405c947904a19df4df39a95c675b6ded8d;hp=7cfc4b273e92bb2b2d7fb4e09a3c993c72111739;hpb=9d3711c527a5cf7fefa5de6dadc52df1039cc217;p=gnome.introspection-doc-generator diff --git a/JSDOC/TokenStream.vala b/JSDOC/TokenStream.vala index 7cfc4b2..9f7d311 100644 --- a/JSDOC/TokenStream.vala +++ b/JSDOC/TokenStream.vala @@ -41,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... { @@ -80,6 +80,48 @@ 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 (considerWhitespace == true) { + + 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); + } + + + var count = 0; + var i = this.cursor; + + while (true) { + if (i < 0) { + return new Token("", "VOID", "START_OF_STREAM"); + } + if (i >= this.tokens.size) { + return new Token("", "VOID", "END_OF_STREAM"); + } + + if (i != this.cursor && this.tokens.get(i).is("WHIT")) { + i += (n < 0) ? -1 : 1; + continue; + } + + if (count == n) { + return this.tokens.get(i); + } + count++; + i += (n < 0) ? -1 : 1; + } + + // return new Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object + + } + + public int lookFor (string data) { @@ -236,7 +278,7 @@ namespace JSDOC { Token token; while (null != (token = this.look(1,false))) { - debug("BALANCE: " + token.asString()); + debug("BALANCE: %d %s " , this.cursor, token.asString()); if (token.is(start)) { // Seed.print("balance: START : " + depth + " " + token.data); depth++; @@ -355,7 +397,14 @@ namespace JSDOC { } } - + public void dumpAllFlat() + { + for (var i = 0;i < this.tokens.size; i++) { + + print("%d: %s\n", i, this.tokens[i].asString()); + } + + } } }