PHP 的控制流图实现
v0.7.0
2022-05-02 18:14 UTC
Requires
- php: >=7.4
- nikic/php-parser: ^4.0
- phpdocumentor/graphviz: ^1.0.4
Requires (Dev)
- friendsofphp/php-cs-fixer: *
- phpunit/phpunit: ^8.0 || ^9.0
This package is auto-updated.
Last update: 2024-08-24 13:39:17 UTC
README
PHP-CFG
纯PHP实现的控制流图(CFG),指令采用静态单赋值(SSA)形式。
所使用的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
$dumper = new PHPCfg\Printer\Text(); echo $dumper->printScript($script);