PHPCfg\Parser::compileJumptableSwitch PHP Method

compileJumptableSwitch() private method

private compileJumptableSwitch ( PhpParser\Node\Stmt\Switch_ $node )
$node PhpParser\Node\Stmt\Switch_
    private function compileJumptableSwitch(Stmt\Switch_ $node)
    {
        $cond = $this->readVariable($this->parseExprNode($node->cond));
        $cases = [];
        $targets = [];
        $endBlock = new Block();
        $defaultBlock = $endBlock;
        /** @var null|Block $block */
        $block = null;
        foreach ($node->cases as $case) {
            $caseBlock = new Block($this->block);
            if ($block && !$block->dead) {
                // wire up!
                $block->children[] = new Jump($caseBlock);
                $caseBlock->addParent($block);
            }
            if ($case->cond) {
                $targets[] = $caseBlock;
                $cases[] = $this->parseExprNode($case->cond);
            } else {
                $defaultBlock = $caseBlock;
            }
            $block = $this->parseNodes($case->stmts, $caseBlock);
        }
        $this->block->children[] = new Op\Stmt\Switch_($cond, $cases, $targets, $defaultBlock, $this->mapAttributes($node));
        if ($block && !$block->dead) {
            // wire end of block to endblock
            $block->children[] = new Jump($endBlock);
            $endBlock->addParent($block);
        }
        $this->block = $endBlock;
    }
Parser