code: 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;
    }
docs: Parse the input, then return the root node.
  
  @return {Node}
  @api private