| var TYPE = require('../tokenizer').TYPE; | 
| var WHITESPACE = TYPE.WhiteSpace; | 
| var COMMENT = TYPE.Comment; | 
|   | 
| module.exports = function readSequence(recognizer) { | 
|     var children = this.createList(); | 
|     var child = null; | 
|     var context = { | 
|         recognizer: recognizer, | 
|         space: null, | 
|         ignoreWS: false, | 
|         ignoreWSAfter: false | 
|     }; | 
|   | 
|     this.scanner.skipSC(); | 
|   | 
|     while (!this.scanner.eof) { | 
|         switch (this.scanner.tokenType) { | 
|             case COMMENT: | 
|                 this.scanner.next(); | 
|                 continue; | 
|   | 
|             case WHITESPACE: | 
|                 if (context.ignoreWS) { | 
|                     this.scanner.next(); | 
|                 } else { | 
|                     context.space = this.WhiteSpace(); | 
|                 } | 
|                 continue; | 
|         } | 
|   | 
|         child = recognizer.getNode.call(this, context); | 
|   | 
|         if (child === undefined) { | 
|             break; | 
|         } | 
|   | 
|         if (context.space !== null) { | 
|             children.push(context.space); | 
|             context.space = null; | 
|         } | 
|   | 
|         children.push(child); | 
|   | 
|         if (context.ignoreWSAfter) { | 
|             context.ignoreWSAfter = false; | 
|             context.ignoreWS = true; | 
|         } else { | 
|             context.ignoreWS = false; | 
|         } | 
|     } | 
|   | 
|     return children; | 
| }; |