55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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;
 | 
						|
};
 |