Struct orzir_core::ParseState
source · pub struct ParseState<'a> {
pub stream: TokenStream<'a>,
/* private fields */
}Expand description
The parse state for the parser.
This is used to store the current state of the parser, including the stream, the stack of ops, regions, blocks, region info, and result names.
Fields§
§stream: TokenStream<'a>Implementations§
source§impl<'a> ParseState<'a>
impl<'a> ParseState<'a>
pub fn new(stream: TokenStream<'a>) -> Self
sourcepub fn enter_op_from(&mut self, block: ArenaPtr<Block>)
pub fn enter_op_from(&mut self, block: ArenaPtr<Block>)
Enter a new op from the current block.
sourcepub fn enter_component_from(&mut self, op: ArenaPtr<OpObj>)
pub fn enter_component_from(&mut self, op: ArenaPtr<OpObj>)
Enter an arbitrary operation component.
sourcepub fn exit_component(&mut self)
pub fn exit_component(&mut self)
Exit an arbitrary operation component.
sourcepub fn enter_region_with(&mut self, kind: RegionKind, index: usize)
pub fn enter_region_with(&mut self, kind: RegionKind, index: usize)
Enter a new region from the current op, with the region kind and index.
sourcepub fn exit_region(&mut self)
pub fn exit_region(&mut self)
Exit the current region.
sourcepub fn enter_block_from(&mut self, region: ArenaPtr<Region>)
pub fn enter_block_from(&mut self, region: ArenaPtr<Region>)
Enter a new block from the current region.
sourcepub fn exit_block(&mut self)
pub fn exit_block(&mut self)
Exit the current block.
sourcepub fn curr_region(&self) -> ArenaPtr<Region>
pub fn curr_region(&self) -> ArenaPtr<Region>
Get the current region.
sourcepub fn curr_block(&self) -> Option<ArenaPtr<Block>>
pub fn curr_block(&self) -> Option<ArenaPtr<Block>>
Get the current block.
sourcepub fn curr_region_info(&self) -> (RegionKind, usize)
pub fn curr_region_info(&self) -> (RegionKind, usize)
Get the current region kind and index.
sourcepub fn pop_result_names(&mut self) -> Vec<Token>
pub fn pop_result_names(&mut self) -> Vec<Token>
Get and pop the current result names.
sourcepub fn push_result_names(&mut self, names: Vec<Token>)
pub fn push_result_names(&mut self, names: Vec<Token>)
Push a new series of result name.
Auto Trait Implementations§
impl<'a> Freeze for ParseState<'a>
impl<'a> !RefUnwindSafe for ParseState<'a>
impl<'a> !Send for ParseState<'a>
impl<'a> !Sync for ParseState<'a>
impl<'a> Unpin for ParseState<'a>
impl<'a> !UnwindSafe for ParseState<'a>
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.