Пример #1
0
 private function get_children_from_do($tokens, &$start, $parent_node, &$last_node, $foroutput = false)
 {
     $tree = new tree();
     $current_node_id = $parent_node;
     $tp = $start;
     $tree = new tree();
     if (!($temp = $this->search_token($tokens, $start, '{', array(';')))) {
         return false;
     }
     $start = $temp;
     $end = $this->get_pair($tokens, $start);
     $this->break_levels[] = $end;
     $new_node = $current_node_id = $current_node_id + 1;
     if (!in_array($parent_node, array_merge($this->break_nodes, $this->continue_nodes, $this->return_nodes))) {
         $tree->addChild($parent_node, $new_node);
     }
     $this->add_tokens_to_be_inserted_after($start + 1, "/*{$new_node}*/" . "\\codespy\\Analyzer::\$executionbranches[__FILE__][__CLASS__][__FUNCTION__][\\codespy\\Analyzer::\$instancenumberfor[__FILE__][__CLASS__][__FUNCTION__]][{$new_node}] = 1;", $foroutput ? $new_node : false);
     if ($children = $this->get_children_from($tokens, $start, $end, $current_node_id, $current_node_id, $foroutput)) {
         $tree->addChildren($children);
     }
     $tp = $end + 1;
     $tp = $this->search_token($tokens, $tp, '(');
     $end = $this->get_pair($tokens, $tp) + 1;
     $new_node = $current_node_id + 1;
     if (!in_array($parent_node, $this->break_nodes)) {
         $tree->addChild($parent_node, $new_node);
     }
     $tree->addChildToAllLeavesOfParent($parent_node, $new_node, array_merge($this->break_nodes, $this->continue_nodes, $this->return_nodes));
     if (isset($this->jumps[$end])) {
         foreach ($this->jumps[$end] as $jn) {
             $tree->addChild($jn, $new_node);
         }
     }
     $this->add_tokens_to_be_inserted_after($end + 1, "/*{$new_node}*/" . "\\codespy\\Analyzer::\$executionbranches[__FILE__][__CLASS__][__FUNCTION__][\\codespy\\Analyzer::\$instancenumberfor[__FILE__][__CLASS__][__FUNCTION__]][{$new_node}] = 1;", $foroutput ? $new_node : false);
     $last_node = $new_node;
     $start = $end;
     array_pop($this->break_levels);
     return $tree;
 }