PHPCfg\Parser::parseFunc PHP Method

parseFunc() protected method

protected parseFunc ( Func $func, array $params, array $stmts, $implicitReturnValue )
$func Func
$params array
$stmts array
    protected function parseFunc(Func $func, array $params, array $stmts, $implicitReturnValue)
    {
        // Switch to new function context
        $prevCtx = $this->ctx;
        $this->ctx = new FuncContext();
        $start = $func->cfg;
        $func->params = $this->parseParameterList($func, $params);
        foreach ($func->params as $param) {
            $this->writeVariableName($param->name->value, $param->result, $start);
        }
        $end = $this->parseNodes($stmts, $start);
        if (!$end->dead) {
            $end->children[] = new Return_(new Literal($implicitReturnValue));
        }
        if ($this->ctx->unresolvedGotos) {
            $this->throwUndefinedLabelError();
        }
        $this->ctx->complete = true;
        foreach ($this->ctx->incompletePhis as $block) {
            /** @var Op\Phi $phi */
            foreach ($this->ctx->incompletePhis[$block] as $name => $phi) {
                // add phi operands
                foreach ($block->parents as $parent) {
                    if ($parent->dead) {
                        continue;
                    }
                    $var = $this->readVariableName($name, $parent);
                    $phi->addOperand($var);
                }
                $block->phi[] = $phi;
            }
        }
        $this->ctx = $prevCtx;
    }
Parser