private function _declare() {
    $node = new DeclareNode();
    $this->mustMatch(T_DECLARE, $node);
    $this->mustMatch('(', $node, 'openParen');
    $directives = new CommaListNode();
    $node->addChild($directives, 'directives');
    if (!$this->tryMatch(')', $node, 'closeParen', FALSE, TRUE)) {
      do {
        $declare_directive = new DeclareDirectiveNode();
        $this->tryMatch(T_STRING, $declare_directive, 'name');
        if ($this->tryMatch('=', $declare_directive)) {
          $declare_directive->addChild($this->staticScalar(), 'value');
        }
        $directives->addChild($declare_directive);
      } while ($this->tryMatch(',', $directives));
      $this->mustMatch(')', $node, 'closeParen', FALSE, TRUE);
    }
    if ($this->tryMatch(':', $node, NULL, FALSE, TRUE)) {
      $node->addChild($this->innerStatementListNode(T_ENDDECLARE), 'body');
      $this->mustMatch(T_ENDDECLARE, $node);
      $this->endStatement($node);
      return $node;
    }
    else {
      $node->addChild($this->statement(), 'body');
      return $node;
    }
  }
private function _declare() {
    $node = new DeclareNode();
    $this->mustMatch(T_DECLARE, $node);
    $this->mustMatch('(', $node, 'openParen');
    $directives = new CommaListNode();
    $node->addChild($directives, 'directives');
    if (!$this->tryMatch(')', $node, 'closeParen', FALSE, TRUE)) {
      do {
        $declare_directive = new DeclareDirectiveNode();
        $this->tryMatch(T_STRING, $declare_directive, 'name');
        if ($this->tryMatch('=', $declare_directive)) {
          $declare_directive->addChild($this->staticScalar(), 'value');
        }
        $directives->addChild($declare_directive);
      } while ($this->tryMatch(',', $directives));
      $this->mustMatch(')', $node, 'closeParen', FALSE, TRUE);
    }
    if ($this->tryMatch(':', $node, NULL, FALSE, TRUE)) {
      $node->addChild($this->innerStatementListNode(T_ENDDECLARE), 'body');
      $this->mustMatch(T_ENDDECLARE, $node);
      $this->endStatement($node);
      return $node;
    }
    else {
      $node->addChild($this->statement(), 'body');
      return $node;
    }
  }
private function _declare ( ) { $ node = new DeclareNode ( ) ; $ this -> mustMatch ( T_DECLARE , $ node ) ; $ this -> mustMatch ( '(' , $ node , 'openParen' ) ; $ directives = new CommaListNode ( ) ; $ node -> addChild ( $ directives , 'directives' ) ; if ( ! $ this -> tryMatch ( ')' , $ node , 'closeParen' , FALSE , TRUE ) ) { do { $ declare_directive = new DeclareDirectiveNode ( ) ; $ this -> tryMatch ( T_STRING , $ declare_directive , 'name' ) ; if ( $ this -> tryMatch ( '=' , $ declare_directive ) ) { $ declare_directive -> addChild ( $ this -> staticScalar ( ) , 'value' ) ; } $ directives -> addChild ( $ declare_directive ) ; } while ( $ this -> tryMatch ( ',' , $ directives ) ) ; $ this -> mustMatch ( ')' , $ node , 'closeParen' , FALSE , TRUE ) ; } if ( $ this -> tryMatch ( ':' , $ node , NULL , FALSE , TRUE ) ) { $ node -> addChild ( $ this -> innerStatementListNode ( T_ENDDECLARE ) , 'body' ) ; $ this -> mustMatch ( T_ENDDECLARE , $ node ) ; $ this -> endStatement ( $ node ) ; return $ node ; } else { $ node -> addChild ( $ this -> statement ( ) , 'body' ) ; return $ node ; } }
Parse a declare statement.
@return DeclareNode
Parse a declare statement .