Я использую PHP -Parser для оценки условий, используемых для обхода оператора if. Я просто хочу знать, какие условия используются при обходе кода. Например:
test
<?php
$val = true;
if ($val == true){
$result = true;
} else {
$result = false;
}
Я уже нашел AST тестового кода, который выглядит следующим образом
AST
array( 0: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: val ) expr: Expr_ConstFetch( name: Name( parts: array( 0: true ) ) ) ) ) 1: Stmt_If( cond: Expr_BinaryOp_Equal( left: Expr_Variable( name: val ) right: Expr_ConstFetch( name: Name( parts: array( 0: true ) ) ) ) stmts: array( 0: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: result ) expr: Expr_ConstFetch( name: Name( parts: array( 0: true ) ) ) ) ) ) elseifs: array( ) else: Stmt_Else( stmts: array( 0: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: result ) expr: Expr_ConstFetch( name: Name( parts: array( 0: false ) ) ) ) ) ) ) ) )
Что Я пытаюсь понять, какое условие использовалось в тестовом коде во время обхода. Ожидается, что оно будет примерно таким:
Ожидаемый результат
Conditions: (operator: Equal true:bool,true:bool,)
// OR
Condition: (operator: NOT (operator: Equal true:bool,true:bool,),)
Так что я просто интересно, как получить условия, проходящие во время траверса.