| 123456789101112131415161718192021222324252627282930 | 
							- 'use strict';
 
- module.exports = TokenStream;
 
- function TokenStream(tokens) {
 
-   if (!Array.isArray(tokens)) {
 
-     throw new TypeError('tokens must be passed to TokenStream as an array.');
 
-   }
 
-   this._tokens = tokens;
 
- }
 
- TokenStream.prototype.lookahead = function (index) {
 
-   if (this._tokens.length <= index) {
 
-     throw new Error('Cannot read past the end of a stream');
 
-   }
 
-   return this._tokens[index];
 
- };
 
- TokenStream.prototype.peek = function () {
 
-   if (this._tokens.length === 0) {
 
-     throw new Error('Cannot read past the end of a stream');
 
-   }
 
-   return this._tokens[0];
 
- };
 
- TokenStream.prototype.advance = function () {
 
-   if (this._tokens.length === 0) {
 
-     throw new Error('Cannot read past the end of a stream');
 
-   }
 
-   return this._tokens.shift();
 
- };
 
- TokenStream.prototype.defer = function (token) {
 
-   this._tokens.unshift(token);
 
- };
 
 
  |