}
// look through token stream, including white space...
- public Token? lookAny (int n)
+ 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;
+ if (this.cursor+n < 0 || this.cursor+n > (this.tokens.size -1)) {
+ return new Token("", "VOID", "START_OF_STREAM");
}
-
- // return new Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object
-
+ return this.tokens.get(this.cursor+n);
+
+
+
}
//Seed.print("STOP:" + stop);
Token token;
- while (null != (token = this.look(1,false))) {
+ while (null != (token = this.lookAny(1))) {
debug("BALANCE: %d %s " , this.cursor, token.asString());
if (token.is(start)) {
// Seed.print("balance: START : " + depth + " " + token.data);
if (token.is(stop)) {
depth--;
- print("balance (%d): STOP: %s\n" , depth , token.data);
+ //print("balance (%d): STOP: %s\n" , depth , token.data);
if (depth < 1) {
this.next(); // shift cursor to eat closer...
- print("returning got %d\n", got.size);
+ //print("returning got %d\n", got.size);
return got;
}