pub trait AstProcessor<'a, L: Language> {
// Required methods
fn traverse_pre_order(
&self,
root: RedTree<'a, L>,
visitor: &mut impl Visitor<'a, L>,
);
fn traverse_post_order(
&self,
root: RedTree<'a, L>,
visitor: &mut impl Visitor<'a, L>,
);
fn find_nodes_by_type(
&self,
root: RedTree<'a, L>,
node_type: L::ElementType,
) -> Vec<RedNode<'a, L>>;
fn find_tokens_by_type(
&self,
root: RedTree<'a, L>,
token_type: L::TokenType,
) -> Vec<RedLeaf<L>>;
fn find_node_at_offset(
&self,
root: RedTree<'a, L>,
offset: usize,
) -> Option<RedTree<'a, L>>;
fn replace_node(
&self,
old_node: RedNode<'a, L>,
new_node: RedNode<'a, L>,
) -> Result<RedTree<'a, L>, AstError>;
fn remove_node(
&self,
node: RedNode<'a, L>,
) -> Result<RedTree<'a, L>, AstError>;
fn add_child(
&self,
parent: RedNode<'a, L>,
child: RedTree<'a, L>,
) -> Result<RedNode<'a, L>, AstError>;
}Expand description
A unified interface for processing ASTs.
This trait provides a common set of methods for working with ASTs, regardless of the specific language implementation.
Required Methods§
Sourcefn traverse_pre_order(
&self,
root: RedTree<'a, L>,
visitor: &mut impl Visitor<'a, L>,
)
fn traverse_pre_order( &self, root: RedTree<'a, L>, visitor: &mut impl Visitor<'a, L>, )
Traverses the AST in pre-order, applying the given visitor to each node.
Sourcefn traverse_post_order(
&self,
root: RedTree<'a, L>,
visitor: &mut impl Visitor<'a, L>,
)
fn traverse_post_order( &self, root: RedTree<'a, L>, visitor: &mut impl Visitor<'a, L>, )
Traverses the AST in post-order, applying the given visitor to each node.
Sourcefn find_nodes_by_type(
&self,
root: RedTree<'a, L>,
node_type: L::ElementType,
) -> Vec<RedNode<'a, L>>
fn find_nodes_by_type( &self, root: RedTree<'a, L>, node_type: L::ElementType, ) -> Vec<RedNode<'a, L>>
Finds all nodes of the specified type.
Sourcefn find_tokens_by_type(
&self,
root: RedTree<'a, L>,
token_type: L::TokenType,
) -> Vec<RedLeaf<L>>
fn find_tokens_by_type( &self, root: RedTree<'a, L>, token_type: L::TokenType, ) -> Vec<RedLeaf<L>>
Finds all tokens of the specified type.
Sourcefn find_node_at_offset(
&self,
root: RedTree<'a, L>,
offset: usize,
) -> Option<RedTree<'a, L>>
fn find_node_at_offset( &self, root: RedTree<'a, L>, offset: usize, ) -> Option<RedTree<'a, L>>
Finds the node at the specified offset.
Sourcefn replace_node(
&self,
old_node: RedNode<'a, L>,
new_node: RedNode<'a, L>,
) -> Result<RedTree<'a, L>, AstError>
fn replace_node( &self, old_node: RedNode<'a, L>, new_node: RedNode<'a, L>, ) -> Result<RedTree<'a, L>, AstError>
Replaces a node with a new one.
Note: This operation may require rebuilding parts of the tree.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.