private function topStatement() {
    switch ($this->currentType) {
      case T_USE:
        return $this->useBlock();
      case T_CONST:
        return $this->_const();
      case T_ABSTRACT:
      case T_FINAL:
      case T_CLASS:
        return $this->classDeclaration();
      case T_INTERFACE:
        return $this->interfaceDeclaration();
      case T_TRAIT:
        return $this->traitDeclaration();
      case T_HALT_COMPILER:
        $node = new HaltCompilerNode();
        $this->mustMatch(T_HALT_COMPILER, $node, 'name');
        $this->mustMatch('(', $node, 'openParen');
        $this->mustMatch(')', $node, 'closeParen');
        $this->endStatement($node);
        $this->tryMatch(T_INLINE_HTML, $node);
        return $node;
      default:
        if ($this->currentType === T_FUNCTION && $this->isLookAhead(T_STRING, '&')) {
          return $this->functionDeclaration();
        }
        elseif ($this->currentType === T_NAMESPACE && !$this->isLookAhead(T_NS_SEPARATOR)) {
          return $this->_namespace();
        }
        return $this->statement();
    }
  }
private function topStatement() {
    switch ($this->currentType) {
      case T_USE:
        return $this->useBlock();
      case T_CONST:
        return $this->_const();
      case T_ABSTRACT:
      case T_FINAL:
      case T_CLASS:
        return $this->classDeclaration();
      case T_INTERFACE:
        return $this->interfaceDeclaration();
      case T_TRAIT:
        return $this->traitDeclaration();
      case T_HALT_COMPILER:
        $node = new HaltCompilerNode();
        $this->mustMatch(T_HALT_COMPILER, $node, 'name');
        $this->mustMatch('(', $node, 'openParen');
        $this->mustMatch(')', $node, 'closeParen');
        $this->endStatement($node);
        $this->tryMatch(T_INLINE_HTML, $node);
        return $node;
      default:
        if ($this->currentType === T_FUNCTION && $this->isLookAhead(T_STRING, '&')) {
          return $this->functionDeclaration();
        }
        elseif ($this->currentType === T_NAMESPACE && !$this->isLookAhead(T_NS_SEPARATOR)) {
          return $this->_namespace();
        }
        return $this->statement();
    }
  }
private function topStatement ( ) { switch ( $ this -> currentType ) { case T_USE : return $ this -> useBlock ( ) ; case T_CONST : return $ this -> _const ( ) ; case T_ABSTRACT : case T_FINAL : case T_CLASS : return $ this -> classDeclaration ( ) ; case T_INTERFACE : return $ this -> interfaceDeclaration ( ) ; case T_TRAIT : return $ this -> traitDeclaration ( ) ; case T_HALT_COMPILER : $ node = new HaltCompilerNode ( ) ; $ this -> mustMatch ( T_HALT_COMPILER , $ node , 'name' ) ; $ this -> mustMatch ( '(' , $ node , 'openParen' ) ; $ this -> mustMatch ( ')' , $ node , 'closeParen' ) ; $ this -> endStatement ( $ node ) ; $ this -> tryMatch ( T_INLINE_HTML , $ node ) ; return $ node ; default : if ( $ this -> currentType === T_FUNCTION && $ this -> isLookAhead ( T_STRING , '&' ) ) { return $ this -> functionDeclaration ( ) ; } elseif ( $ this -> currentType === T_NAMESPACE && ! $ this -> isLookAhead ( T_NS_SEPARATOR ) ) { return $ this -> _namespace ( ) ; } return $ this -> statement ( ) ; } }
Parse a top level statement.
@return Node
Parse a top level statement .