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>

source

pub fn new(stream: TokenStream<'a>) -> Self

source

pub fn enter_op_from(&mut self, block: ArenaPtr<Block>)

Enter a new op from the current block.

source

pub fn exit_op(&mut self)

Exit the current op.

source

pub fn enter_component_from(&mut self, op: ArenaPtr<OpObj>)

Enter an arbitrary operation component.

source

pub fn exit_component(&mut self)

Exit an arbitrary operation component.

source

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.

source

pub fn exit_region(&mut self)

Exit the current region.

source

pub fn enter_block_from(&mut self, region: ArenaPtr<Region>)

Enter a new block from the current region.

source

pub fn exit_block(&mut self)

Exit the current block.

source

pub fn curr_op(&self) -> ArenaPtr<OpObj>

Get the current op.

source

pub fn curr_region(&self) -> ArenaPtr<Region>

Get the current region.

source

pub fn curr_block(&self) -> Option<ArenaPtr<Block>>

Get the current block.

source

pub fn curr_region_info(&self) -> (RegionKind, usize)

Get the current region kind and index.

source

pub fn pop_result_names(&mut self) -> Vec<Token>

Get and pop the current result names.

source

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: 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>

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)

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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.