NAME
Attean::TreeRewriter - Walk and rewrite subtrees
VERSION
This document describes Attean::TreeRewriter version 0.035
SYNOPSIS
use v5.14;
use Attean;
my $w = Attean::TreeRewriter->new();
my ($rewritten, $tree) = $w->rewrite($tree, $thunk);
if ($rewritten) {
...
}
DESCRIPTION
The Attean::TreeRewriter class walks the nodes of query trees and rewrites sub-trees based on handlers that have been registered prior to rewriting.
ROLES
None.
METHODS
register_pre_handler( \&code )-
Register a handler that will be called for each sub-tree during tree rewriting.
The function will be called as
&code( $tree, $parent_node, $thunk )where$thunkis an opaque value passed torewrite.The function must return a list
($handled, $descend, $rewritten).$handledis a boolean indicating whether the handler function rewrote the sub-tree, which is returned as$rewritten. The$descendboolean value indicates whether the the tree rewriting should continue downwards in the tree. rewrite( $tree, $thunk, \%seen, $parent )-
Rewrites the given
$treeusing the registered handler functions.$thunkis passed through to each handler function.%seenis currently unused.$parentis passed through to the handler functions as the value of the pseudo-parent tree node for$tree.Returns a list
($handled, $tree)with$handledindicating whether rewriting was performed, with the corresponding rewritten$tree.
BUGS
Please report any bugs or feature requests to through the GitHub web interface at https://github.com/kasei/attean/issues.
SEE ALSO
AUTHOR
Gregory Todd Williams <gwilliams@cpan.org>
COPYRIGHT
Copyright (c) 2014--2022 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.