private function _for() {
    $node = new ForNode();
    $this->mustMatch(T_FOR, $node);
    $this->mustMatch('(', $node, 'openParen');
    $this->forExpr($node, ';', 'initial');
    $this->forExpr($node, ';', 'condition');
    $this->forExpr($node, ')', 'step', TRUE, 'closeParen');
    if ($this->tryMatch(':', $node, 'openColon', FALSE, TRUE)) {
      $node->addChild($this->innerStatementListNode(T_ENDFOR), 'body');
      $this->mustMatch(T_ENDFOR, $node, 'endKeyword');
      $this->endStatement($node);
      return $node;
    }
    else {
      $this->matchHidden($node);
      $node->addChild($this->statement(), 'body');
      return $node;
    }
  }