尼基克 / php解析器
php:>=7.4 ext-c型 : * ext-json:* ext-tokenizer:*
ircmaxell/php-yacc公司 : ^0.0.7 phpunit/phpunit : ^7.0 || ^8.0 || ^9.0
-
dev-master/5.0.x-dev -
5.0.2版 -
5.0.1版 -
5.0.0版 -
v5.0.0rc1版本 -
v5.0.0β1 -
v5.0字母3 -
v5.0.0字母2 -
v5.0.0字母1 -
4.x偏差 -
4.19.1版 -
4.19.0版 -
4.18.0版 -
4.17.1版 -
4.17.0版 -
4.16.0版 -
4.15.5版 -
4.15.4版 -
v4.15.3版 -
4.15.2版 -
版本4.15.1 -
4.15.0版 -
4.14.0版 -
4.13.2版 -
4.13.1版 -
4.13.0版 -
4.12.0版 -
4.11.0版 -
v4.10.5版本 -
4.10.4版 -
v4.10.3版 -
4.10.2版 -
v4.10.1版 -
4.10.0版 -
第4.9.1版 -
第4.9.0版 -
4.8.0版 -
4.7.0版 -
第4.6.0版 -
第4.5.0版 -
第4.4.0版 -
4.3.0版 -
第4.2.5版 -
第4.2.4版 -
第4.2.3版 -
版本4.2.2 -
第4.2.1版 -
第4.2.0版 -
v4.1.1版 -
第4.1.0版 -
4.0.4版 -
4.0.3版 -
版本4.0.2 -
版本4.0.1 -
4.0.0版 -
v4.0.0β1 -
版本4.0.0字母3 -
v4.0.0字母2 -
v4.0.0字母1 -
3.x-偏差 -
3.1.5版 -
3.1.4版 -
第3.1.3版 -
v3.1.2版 -
第3.1.1版 -
3.1.0版 -
3.0.6版 -
版本3.0.5 -
3.0.4版 -
3.0.3版 -
3.0.2版 -
版本3.0.1 -
3.0.0版 -
v3.0.0β2 -
v3.0.0β1 -
v3.0.0字母1 -
2.x-偏差 -
第2.1.1版 -
第2.1.0版 -
2.0.1版 -
2.0.0版 -
2.0.0版beta1 -
2.0.0版alpha1 -
1.x-偏差 -
第1.4.1节 -
第1.4.0版 -
1.3.0版 -
第1.2.2节 -
第1.2.1节 -
第1.2.0节 -
1.1.0版 -
v1.0.2版本 -
1.0.1版 -
1.0.0版 -
1.0.0版本2 -
1.0.0版beta1 -
0.9.x版本 -
0.9.5版 -
0.9.4版 -
0.9.3版 -
0.9.2版 -
0.9.1版 -
0.9.0版 -
dev-tokens-实验
自述文件
特征
将PHP7和PHP8代码解析为抽象语法树(AST)。 可以将无效代码解析为部分AST。 AST包含准确的位置信息。
以人类可读的形式转储AST。 将AST转换回PHP代码。 可以为部分更改的AST保留格式。
用于遍历和修改AST的基础结构。 命名空间名称的解析。 常量表达式的求值。 生成器简化AST构造以生成代码。 将AST转换为JSON并返回。
快速入门
php composer.phar需要nikic/php-parser
<? php(电话) 使用 Php分析器 \ 错误 ; 使用 PhpParser软件 \ 节点翻转器 ; 使用 PhpParser软件 \ 分析器工厂 ; $ 代码 = <<<“代码” <? php(电话) 功能测试($foo) { var_dump($foo); } 代码 ; $ 解析器 = ( 新的 分析器工厂 ())-> 为最新的受支持版本创建 (); 尝试 { $ ast公司 = $ 解析器 -> 解析 ( $ 代码 ); } 抓住 ( 错误 $ 错误 ) { 回声 " 分析错误: { $ 错误 -> 获取消息 ()}“; 返回 ; } $ 翻车机 = 新的 节点翻转器 ; 回声 $ 翻车机 -> 倾倒 ( $ ast公司 ) . “\n”;
阵列( 0:Stmt_Function(标准函数)( attrGroups:数组( ) byRef:错误 name:标识符( 名称:测试 ) 参数:数组( 0:参数( attrGroups:数组( ) 标志:0 类型:null byRef:错误 变量:false 变量:Expr_Variable( 名称:foo ) 默认值:null ) ) returnType:空 stmts:数组( 0:Stmt_Expression(标准表达式)( expr:expr_FuncCall(表达式_函数调用)( name:名称( 名称:var_dump ) 参数:数组( 0:参数( 名称:null 值:Expr_Variable( 名称:foo ) byRef:错误 解压缩:false ) ) ) ) ) ) )
使用 PhpParser软件 \ 节点 ; 使用 PhpParser软件 \ 节点 \ 报表 \ 功能_ ; 使用 PhpParser软件 \ 节点传送器 ; 使用 PhpParser软件 \ 节点访问者摘要 ; $ 横移器 = 新的 节点传送器 (); $ 横移器 -> 添加访问者 ( 新的 班 延伸 节点访问者摘要 { 公众的 功能 enterNode(输入节点) ( 节点 $ 节点 ) { 如果 ( $ 节点 运算符 功能_ ) { //清理功能体 $ 节点 -> stmts公司 = []; } } }); $ ast公司 = $ 横移器 -> 导线 ( $ ast公司 ); 回声 $ 翻车机 -> 倾倒 ( $ ast公司 ) . “\n”;
阵列( 0:Stmt_Function(标准函数)( attrGroups:数组( ) byRef:错误 name:标识符( 名称:测试 ) 参数:数组( 0:参数( attrGroups:数组( ) 类型:null byRef:错误 变量:false 变量:Expr_Variable( 名称:foo ) 默认值:null ) ) returnType:空 stmts:数组( ) ) )
使用 PhpParser软件 \ Pretty打印机 ; $ 漂亮打印机 = 新的 Pretty打印机 \ 标准 ; 回声 $ 漂亮打印机 -> pretty打印文件 ( $ ast公司 );
<? php(电话) 功能 测试 ( $ foo公司 ) { }