function advance(sExpectedTokenId) {
			var oToken = aTokens[iNextToken];

			if (sExpectedTokenId) {
				if (!oToken) {
					error("Expected " + sExpectedTokenId + " but instead saw end of input",
						sInput);
				} else if (oToken.id !== sExpectedTokenId) {
					error("Expected " + sExpectedTokenId + " but instead saw "
							+ sInput.slice(oToken.start, oToken.end),
						sInput,
						oToken.start + 1);
				}
			}
			iNextToken += 1;
			return oToken;
		}
Returns the next token in the array of tokens and advances the index in this array.
Throws an error if the next token's ID is not equal to the optional
<code>sExpectedTokenId</code>.
@param {string} [sExpectedTokenId] - the expected id of the next token
@returns {object|undefined} - the next token or undefined if all tokens have been read