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);
- };
|