Struct regex_syntax::ast::visitor::HeapVisitor [−][src]
struct HeapVisitor<'a> {
stack: Vec<(&'a Ast, Frame<'a>)>,
stack_class: Vec<(ClassInduct<'a>, ClassFrame<'a>)>,
}HeapVisitor visits every item in an Ast recursively using constant stack
size and a heap size proportional to the size of the Ast.
Fields
stack: Vec<(&'a Ast, Frame<'a>)>
A stack of Ast nodes. This is roughly analogous to the call stack
used in a typical recursive visitor.
stack_class: Vec<(ClassInduct<'a>, ClassFrame<'a>)>
Similar to the Ast stack above, but is used only for character
classes. In particular, character classes embed their own mini
recursive syntax.
Methods
impl<'a> HeapVisitor<'a>[src]
impl<'a> HeapVisitor<'a>fn new() -> HeapVisitor<'a>[src]
fn new() -> HeapVisitor<'a>fn visit<V: Visitor>(
&mut self,
ast: &'a Ast,
visitor: V
) -> Result<V::Output, V::Err>[src]
fn visit<V: Visitor>(
&mut self,
ast: &'a Ast,
visitor: V
) -> Result<V::Output, V::Err>fn induct<V: Visitor>(
&mut self,
ast: &'a Ast,
visitor: &mut V
) -> Result<Option<Frame<'a>>, V::Err>[src]
fn induct<V: Visitor>(
&mut self,
ast: &'a Ast,
visitor: &mut V
) -> Result<Option<Frame<'a>>, V::Err>Build a stack frame for the given AST if one is needed (which occurs if and only if there are child nodes in the AST). Otherwise, return None.
If this visits a class, then the underlying visitor implementation may return an error which will be passed on here.
fn pop(&self, induct: Frame<'a>) -> Option<Frame<'a>>[src]
fn pop(&self, induct: Frame<'a>) -> Option<Frame<'a>>Pops the given frame. If the frame has an additional inductive step,
then return it, otherwise return None.
fn visit_class<V: Visitor>(
&mut self,
ast: &'a ClassBracketed,
visitor: &mut V
) -> Result<(), V::Err>[src]
fn visit_class<V: Visitor>(
&mut self,
ast: &'a ClassBracketed,
visitor: &mut V
) -> Result<(), V::Err>fn visit_class_pre<V: Visitor>(
&self,
ast: &ClassInduct<'a>,
visitor: &mut V
) -> Result<(), V::Err>[src]
fn visit_class_pre<V: Visitor>(
&self,
ast: &ClassInduct<'a>,
visitor: &mut V
) -> Result<(), V::Err>Call the appropriate Visitor methods given an inductive step.
fn visit_class_post<V: Visitor>(
&self,
ast: &ClassInduct<'a>,
visitor: &mut V
) -> Result<(), V::Err>[src]
fn visit_class_post<V: Visitor>(
&self,
ast: &ClassInduct<'a>,
visitor: &mut V
) -> Result<(), V::Err>Call the appropriate Visitor methods given an inductive step.
fn induct_class(&self, ast: &ClassInduct<'a>) -> Option<ClassFrame<'a>>[src]
fn induct_class(&self, ast: &ClassInduct<'a>) -> Option<ClassFrame<'a>>Build a stack frame for the given class node if one is needed (which occurs if and only if there are child nodes). Otherwise, return None.
fn pop_class(&self, induct: ClassFrame<'a>) -> Option<ClassFrame<'a>>[src]
fn pop_class(&self, induct: ClassFrame<'a>) -> Option<ClassFrame<'a>>Pops the given frame. If the frame has an additional inductive step,
then return it, otherwise return None.
Auto Trait Implementations
impl<'a> Send for HeapVisitor<'a>
impl<'a> Send for HeapVisitor<'a>impl<'a> Sync for HeapVisitor<'a>
impl<'a> Sync for HeapVisitor<'a>