From 933358405c947904a19df4df39a95c675b6ded8d Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Thu, 3 Dec 2015 16:23:20 +0800 Subject: [PATCH] JSDOC/TokenStream.vala --- JSDOC/TokenStream.vala | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) 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 + + } -- 2.39.2