Skip to content

Commit e65128d

Browse files
committed
[*] Better ASTWalker
1 parent 9cf03d6 commit e65128d

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

.vscode/temp.sql

Whitespace-only changes.

src/Parser/ASTWalker.php

+10-6
Original file line numberDiff line numberDiff line change
@@ -33,24 +33,28 @@ public function __construct(Root $ast) {
3333
/**
3434
* Walk the root
3535
*
36+
* @param Callable $pre
37+
* @param Callable $after
3638
* @return void
3739
*/
38-
public function __invoke(Callable $callback) {
39-
$this->walk($this->ast, $callback);
40+
public function __invoke(Callable $pre, Callable $after) {
41+
$this->walk($this->ast, $pre, $after);
4042
}
4143

4244
/**
4345
* Walk a node
4446
*
4547
* @param Node $ast
46-
* @param Callable $callback
48+
* @param Callable $pre
49+
* @param Callable $after
4750
* @return void
4851
*/
49-
public function walk(Node $ast, Callable $callback) {
50-
$callback($ast);
52+
public function walk(Node $ast, Callable $pre, Callable $after) {
53+
$pre($ast);
5154
foreach ($ast->children as $child) {
52-
self::walk($child, $callback);
55+
self::walk($child, $pre, $after);
5356
}
57+
$after($ast);
5458
}
5559

5660
}

0 commit comments

Comments
 (0)