From: Alan Knowles Date: Thu, 3 Dec 2015 08:23:20 +0000 (+0800) Subject: JSDOC/TokenStream.vala X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=commitdiff_plain;h=933358405c947904a19df4df39a95c675b6ded8d JSDOC/TokenStream.vala --- diff --git a/JSDOC/TokenStream.vala b/JSDOC/TokenStream.vala index 72a908b..9f7d311 100644 --- a/JSDOC/TokenStream.vala +++ b/JSDOC/TokenStream.vala @@ -80,8 +80,46 @@ 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 + + }