+ public Token? look (int n, bool considerWhitespace) // depricated... causes all sorts of problems...
+ {
+
+
+ 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
+
+ }
+ // look through token stream, including white space...
+ public Token? lookAny (int n)