Recursion

Struct Recursion 

Source
pub struct Recursion<'a> { /* private fields */ }
Expand description

Calculation of parts of grammar that participate in recursion, be it left-recursion, right-recursion or middle-recursion.

Implementations§

Source§

impl<'a> Recursion<'a>

Source

pub fn new(grammar: &'a Cfg) -> Self

Returns a new Recursion for a grammar.

Source

pub fn minimal_distances<'b>( &'b self, ) -> impl Iterator<Item = RecursiveRule<'b>>

Makes an iterator over rules with information about the distance to the closest recursion on the RHS.

The distance is Symmetric, meaning it goes both forwards and backwars.

Source

pub fn recursive_rules<'b>(&'b self) -> impl Iterator<Item = RecursiveRule<'b>>

Makes an iterator over recursive rules and information about their recursion.

Auto Trait Implementations§

§

impl<'a> Freeze for Recursion<'a>

§

impl<'a> !RefUnwindSafe for Recursion<'a>

§

impl<'a> !Send for Recursion<'a>

§

impl<'a> !Sync for Recursion<'a>

§

impl<'a> Unpin for Recursion<'a>

§

impl<'a> !UnwindSafe for Recursion<'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
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>,

Source§

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>,

Source§

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.