123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php declare(strict_types=1);
- namespace PhpParser;
- interface NodeVisitor {
- /**
- * If NodeVisitor::enterNode() returns DONT_TRAVERSE_CHILDREN, child nodes
- * of the current node will not be traversed for any visitors.
- *
- * For subsequent visitors enterNode() will still be called on the current
- * node and leaveNode() will also be invoked for the current node.
- */
- public const DONT_TRAVERSE_CHILDREN = 1;
- /**
- * If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns
- * STOP_TRAVERSAL, traversal is aborted.
- *
- * The afterTraverse() method will still be invoked.
- */
- public const STOP_TRAVERSAL = 2;
- /**
- * If NodeVisitor::leaveNode() returns REMOVE_NODE for a node that occurs
- * in an array, it will be removed from the array.
- *
- * For subsequent visitors leaveNode() will still be invoked for the
- * removed node.
- */
- public const REMOVE_NODE = 3;
- /**
- * If NodeVisitor::enterNode() returns DONT_TRAVERSE_CURRENT_AND_CHILDREN, child nodes
- * of the current node will not be traversed for any visitors.
- *
- * For subsequent visitors enterNode() will not be called as well.
- * leaveNode() will be invoked for visitors that has enterNode() method invoked.
- */
- public const DONT_TRAVERSE_CURRENT_AND_CHILDREN = 4;
- /**
- * If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns REPLACE_WITH_NULL,
- * the node will be replaced with null. This is not a legal return value if the node is part
- * of an array, rather than another node.
- */
- public const REPLACE_WITH_NULL = 5;
- /**
- * Called once before traversal.
- *
- * Return value semantics:
- * * null: $nodes stays as-is
- * * otherwise: $nodes is set to the return value
- *
- * @param Node[] $nodes Array of nodes
- *
- * @return null|Node[] Array of nodes
- */
- public function beforeTraverse(array $nodes);
- /**
- * Called when entering a node.
- *
- * Return value semantics:
- * * null
- * => $node stays as-is
- * * array (of Nodes)
- * => The return value is merged into the parent array (at the position of the $node)
- * * NodeVisitor::REMOVE_NODE
- * => $node is removed from the parent array
- * * NodeVisitor::REPLACE_WITH_NULL
- * => $node is replaced with null
- * * NodeVisitor::DONT_TRAVERSE_CHILDREN
- * => Children of $node are not traversed. $node stays as-is
- * * NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN
- * => Further visitors for the current node are skipped, and its children are not
- * traversed. $node stays as-is.
- * * NodeVisitor::STOP_TRAVERSAL
- * => Traversal is aborted. $node stays as-is
- * * otherwise
- * => $node is set to the return value
- *
- * @param Node $node Node
- *
- * @return null|int|Node|Node[] Replacement node (or special return value)
- */
- public function enterNode(Node $node);
- /**
- * Called when leaving a node.
- *
- * Return value semantics:
- * * null
- * => $node stays as-is
- * * NodeVisitor::REMOVE_NODE
- * => $node is removed from the parent array
- * * NodeVisitor::REPLACE_WITH_NULL
- * => $node is replaced with null
- * * NodeVisitor::STOP_TRAVERSAL
- * => Traversal is aborted. $node stays as-is
- * * array (of Nodes)
- * => The return value is merged into the parent array (at the position of the $node)
- * * otherwise
- * => $node is set to the return value
- *
- * @param Node $node Node
- *
- * @return null|int|Node|Node[] Replacement node (or special return value)
- */
- public function leaveNode(Node $node);
- /**
- * Called once after traversal.
- *
- * Return value semantics:
- * * null: $nodes stays as-is
- * * otherwise: $nodes is set to the return value
- *
- * @param Node[] $nodes Array of nodes
- *
- * @return null|Node[] Array of nodes
- */
- public function afterTraverse(array $nodes);
- }
|