JSDOC/TokenStream.vala
authorAlan Knowles <alan@roojs.com>
Thu, 3 Dec 2015 08:23:20 +0000 (16:23 +0800)
committerAlan Knowles <alan@roojs.com>
Thu, 3 Dec 2015 08:23:20 +0000 (16:23 +0800)
JSDOC/TokenStream.vala

index 72a908b..9f7d311 100644 (file)
@@ -80,8 +80,46 @@ namespace JSDOC {
               // return new Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object
                    
                }
               // 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
+                   
+               }