silverfoxy/php-cfg

PHP的元数据统计信息控制流图(CFG)实现的分支

v0.5.0 2019-02-23 22:06 UTC

This package is auto-updated.

Last update: 2024-09-08 23:02:50 UTC


README

Build Status Latest Stable Version

PHP-CFG

静态单赋值(SSA)形式的控制流图(CFG)的纯PHP实现。

所使用的SSA构造算法基于Braun等人发表的《简单高效的静态单赋值形式构造》一文。此算法直接从抽象语法树构建SSA形式,而不经过非SSA的中间表示。如果你在寻找支配边界,这里找不到...

构建的SSA形式是最小化和纯净的(或应该是)。

用法

要启动解析器,你需要给它一个 PhpParser 实例

$parser = new PHPCfg\Parser(
    (new PhpParser\ParserFactory)->create(PhpParser\ParserFactory::PREFER_PHP7)
);

然后,只需调用代码块上的 parse,并给它一个文件名

$script = $parser->parse(file_get_contents(__FILE__), __FILE__);

要转储图,只需使用内置的转储器

$dumper = new PHPCfg\Printer\Text();
echo $dumper->printScript($script);