lib/parser.js
function(){
    var block = this.parent = this.root;
    if (Parser.cache.has(this.hash)) {
      block = Parser.cache.get(this.hash);
      // normalize cached imports
      if ('block' == block.nodeName) block.constructor = nodes.Root;
    } else {
      while ('eos' != this.peek().type) {
        this.skipWhitespace();
        if ('eos' == this.peek().type) break;
        var stmt = this.statement();
        this.accept(';');
        if (!stmt) this.error('unexpected token {peek}, not allowed at the root level');
        block.push(stmt);
      }
      Parser.cache.set(this.hash, block);
    }
    return block;
  }
function(){
    var block = this.parent = this.root;
    if (Parser.cache.has(this.hash)) {
      block = Parser.cache.get(this.hash);
      // normalize cached imports
      if ('block' == block.nodeName) block.constructor = nodes.Root;
    } else {
      while ('eos' != this.peek().type) {
        this.skipWhitespace();
        if ('eos' == this.peek().type) break;
        var stmt = this.statement();
        this.accept(';');
        if (!stmt) this.error('unexpected token {peek}, not allowed at the root level');
        block.push(stmt);
      }
      Parser.cache.set(this.hash, block);
    }
    return block;
  }
function ( ) { var block = this . parent = this . root ; if ( Parser . cache . has ( this . hash ) ) { block = Parser . cache . get ( this . hash ) ; // normalize cached imports if ( 'block' == block . nodeName ) block . constructor = nodes . Root ; } else { while ( 'eos' != this . peek ( ) . type ) { this . skipWhitespace ( ) ; if ( 'eos' == this . peek ( ) . type ) break ; var stmt = this . statement ( ) ; this . accept ( ';' ) ; if ( ! stmt ) this . error ( 'unexpected token {peek}, not allowed at the root level' ) ; block . push ( stmt ) ; } Parser . cache . set ( this . hash , block ) ; } return block ; }
Parse the input, then return the root node.

@return {Node}
@api private
Parse the input then return the root node .