| 'use strict'; |
| |
| const types = require('../tokenizer/types.cjs'); |
| |
| function readSequence(recognizer) { |
| const children = this.createList(); |
| let space = false; |
| const context = { |
| recognizer |
| }; |
| |
| while (!this.eof) { |
| switch (this.tokenType) { |
| case types.Comment: |
| this.next(); |
| continue; |
| |
| case types.WhiteSpace: |
| space = true; |
| this.next(); |
| continue; |
| } |
| |
| let child = recognizer.getNode.call(this, context); |
| |
| if (child === undefined) { |
| break; |
| } |
| |
| if (space) { |
| if (recognizer.onWhiteSpace) { |
| recognizer.onWhiteSpace.call(this, child, children, context); |
| } |
| space = false; |
| } |
| |
| children.push(child); |
| } |
| |
| if (space && recognizer.onWhiteSpace) { |
| recognizer.onWhiteSpace.call(this, null, children, context); |
| } |
| |
| return children; |
| } |
| |
| exports.readSequence = readSequence; |