pub struct ConcreteSyntaxTree<T, Nt> { /* private fields */ }Expand description
A generic concrete syntax tree with stable child ordering
Implementations§
Source§impl<T, Nt> ConcreteSyntaxTree<T, Nt>
impl<T, Nt> ConcreteSyntaxTree<T, Nt>
pub fn new(root_data: CstNodeData<T, Nt>) -> Self
pub fn root(&self) -> CstNodeId
pub fn set_root(&mut self, new_root: CstNodeId)
pub fn change_parent(&mut self, id: CstNodeId, new_parent: CstNodeId)
pub fn add_node(&mut self, data: CstNodeData<T, Nt>) -> CstNodeId
pub fn add_node_with_parent( &mut self, data: CstNodeData<T, Nt>, parent: CstNodeId, ) -> CstNodeId
pub fn add_child(&mut self, parent: CstNodeId, child: CstNodeId)
pub fn has_no_children(&self, node: CstNodeId) -> bool
pub fn children( &self, node: CstNodeId, ) -> impl DoubleEndedIterator<Item = CstNodeId> + '_
pub fn parent(&self, node: CstNodeId) -> Option<CstNodeId>
pub fn get_str<'a: 'c, 'b: 'c, 'c>( &'a self, terminal: TerminalData, input: &'b str, ) -> Option<&'c str>
pub fn dynamic_token(&self, id: DynamicTokenId) -> Option<&str>
pub fn update_node( &mut self, id: CstNodeId, data: CstNodeData<T, Nt>, ) -> Option<CstNodeData<T, Nt>>
pub fn update_children( &mut self, id: CstNodeId, new_children: impl IntoIterator<Item = CstNodeId>, )
pub fn insert_dynamic_terminal( &mut self, data: impl Into<String>, ) -> DynamicTokenId
Source§impl<T, Nt> ConcreteSyntaxTree<T, Nt>
impl<T, Nt> ConcreteSyntaxTree<T, Nt>
pub fn node_data(&self, node: CstNodeId) -> Option<CstNodeData<T, Nt>>
Sourcepub fn remove_node(&mut self, id: CstNodeId)
pub fn remove_node(&mut self, id: CstNodeId)
Remove a node from the tree by removing it from all parent-child relationships. The node data remains in the vector but becomes unreachable through tree traversal.
Source§impl ConcreteSyntaxTree<TerminalKind, NonTerminalKind>
impl ConcreteSyntaxTree<TerminalKind, NonTerminalKind>
pub fn get_non_terminal( &self, id: CstNodeId, kind: NonTerminalKind, ) -> Result<NonTerminalData, CstConstructError>
pub fn get_terminal( &self, id: CstNodeId, kind: TerminalKind, ) -> Result<TerminalData, CstConstructError>
pub fn collect_nodes<'v, const N: usize, V: BuiltinTerminalVisitor<E, F>, O, E, F: CstFacade>( &self, facade: &F, parent: CstNodeId, nodes: [NodeKind<TerminalKind, NonTerminalKind>; N], visitor: impl FnMut([CstNodeId; N], &'v mut V) -> Result<(O, &'v mut V), CstConstructError<E>>, visit_ignored: &'v mut V, ) -> Result<O, CstConstructError<E>>
pub fn root_handle(&self) -> RootHandle
pub fn visit_from_root<V: CstVisitor<Self>>( &self, visitor: &mut V, ) -> Result<(), V::Error>
Trait Implementations§
Source§impl<T: Clone, Nt: Clone> Clone for ConcreteSyntaxTree<T, Nt>
impl<T: Clone, Nt: Clone> Clone for ConcreteSyntaxTree<T, Nt>
Source§fn clone(&self) -> ConcreteSyntaxTree<T, Nt>
fn clone(&self) -> ConcreteSyntaxTree<T, Nt>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl CstFacade for ConcreteSyntaxTree<TerminalKind, NonTerminalKind>
impl CstFacade for ConcreteSyntaxTree<TerminalKind, NonTerminalKind>
fn get_str<'a: 'c, 'b: 'c, 'c>( &'a self, terminal: TerminalData, input: &'b str, ) -> Option<&'c str>
fn node_data( &self, node: CstNodeId, ) -> Option<CstNodeData<TerminalKind, NonTerminalKind>>
fn has_no_children(&self, node: CstNodeId) -> bool
fn children( &self, node: CstNodeId, ) -> impl DoubleEndedIterator<Item = CstNodeId>
fn get_terminal( &self, node: CstNodeId, kind: TerminalKind, ) -> Result<TerminalData, CstConstructError>
fn get_non_terminal( &self, node: CstNodeId, kind: NonTerminalKind, ) -> Result<NonTerminalData, CstConstructError>
fn collect_nodes<'v, const N: usize, V: BuiltinTerminalVisitor<E, Self>, O, E>( &self, parent: CstNodeId, nodes: [NodeKind<TerminalKind, NonTerminalKind>; N], visitor: impl FnMut([CstNodeId; N], &'v mut V) -> Result<(O, &'v mut V), CstConstructError<E>>, visit_ignored: &'v mut V, ) -> Result<O, CstConstructError<E>>
fn dynamic_token(&self, id: DynamicTokenId) -> Option<&str>
fn parent(&self, node: CstNodeId) -> Option<CstNodeId>
fn root_handle(&self) -> RootHandle
Source§fn get_terminal_str<'a: 'c, 'b: 'c, 'c, T: TerminalHandle>(
&'a self,
input: &'b str,
handle: T,
) -> Result<Result<&'c str, DynamicTokenId>, CstConstructError>
fn get_terminal_str<'a: 'c, 'b: 'c, 'c, T: TerminalHandle>( &'a self, input: &'b str, handle: T, ) -> Result<Result<&'c str, DynamicTokenId>, CstConstructError>
Returns the string representation of a terminal. Returns None if the terminal is a dynamic token and not found.
Source§fn span(&self, node_id: CstNodeId) -> Option<InputSpan>
fn span(&self, node_id: CstNodeId) -> Option<InputSpan>
Returns a span that excludes leading and trailing trivia (whitespace, newlines, comments). Read more
Source§fn concrete_span(&self, node_id: CstNodeId) -> Option<InputSpan>
fn concrete_span(&self, node_id: CstNodeId) -> Option<InputSpan>
Returns the span of a node, including the trivia.
impl<T: Eq, Nt: Eq> Eq for ConcreteSyntaxTree<T, Nt>
impl<T, Nt> StructuralPartialEq for ConcreteSyntaxTree<T, Nt>
Auto Trait Implementations§
impl<T, Nt> Freeze for ConcreteSyntaxTree<T, Nt>
impl<T, Nt> RefUnwindSafe for ConcreteSyntaxTree<T, Nt>where
T: RefUnwindSafe,
Nt: RefUnwindSafe,
impl<T, Nt> Send for ConcreteSyntaxTree<T, Nt>
impl<T, Nt> Sync for ConcreteSyntaxTree<T, Nt>
impl<T, Nt> Unpin for ConcreteSyntaxTree<T, Nt>
impl<T, Nt> UnwindSafe for ConcreteSyntaxTree<T, Nt>where
T: UnwindSafe,
Nt: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more