Parser

Enum Parser 

Source
#[non_exhaustive]
pub enum Parser<I: Clone + Ord> { Immediate(Graph<I>), Postponed, PostponedReference(*const Self), Or(Box<Self>, Box<Self>), ShrEps(Box<Self>, Box<Self>), ShrNonEps(Box<Self>, (I, Option<&'static str>, Box<Self>)), Repeat(Box<Self>), }
Expand description

Unevaluated binary operation.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Immediate(Graph<I>)

NFA already made.

§

Postponed

NFA promised.

§

PostponedReference(*const Self)

NFA promised.

§

Or(Box<Self>, Box<Self>)

Either one NFA or another, in parallel.

§

ShrEps(Box<Self>, Box<Self>)

One then an epsilon transition to another.

§

ShrNonEps(Box<Self>, (I, Option<&'static str>, Box<Self>))

One then a non-epsilon transition (on a particular token) to another.

§

Repeat(Box<Self>)

Repeat an NFA.

Implementations§

Source§

impl<I: Clone + Ord> Lazy<I>

Source

pub fn finally(&mut self, value: Self)

Define a postponed value.

§Panics

If this value was already defined or if the definition is still postponed.

Source

pub fn compile(self) -> Graph<I>

Brzozowski’s algorithm for minimizing automata.

Source

pub fn repeat(self) -> Self

Match at least one time, then as many times as we want. Note that if ANY number of times leads to an accepting state, we take it!

Source

pub fn optional(self) -> Self

Match at most one time (i.e. ignore if not present).

Source

pub fn star(self) -> Self

Match zero or more times (a.k.a. Kleene star).

Source

pub fn evaluate(self) -> Nfa<I>

Turn an expression into a value. Note that this requires all postponed terms to be present.

§Panics

If we postponed a value and never defined it.

Trait Implementations§

Source§

impl Add for Lazy<char>

Source§

type Output = Lazy<char>

The resulting type after applying the + operator.
Source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
Source§

impl<I: Clone + Ord> BitOr for Lazy<I>

Source§

type Output = Lazy<I>

The resulting type after applying the | operator.
Source§

fn bitor(self, rhs: Self) -> Self::Output

Performs the | operation. Read more
Source§

impl<I: Clone + Ord> Clone for Lazy<I>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<I: Debug + Clone + Ord> Debug for Lazy<I>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<I: Hash + Clone + Ord> Hash for Lazy<I>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<I: Ord + Clone + Ord> Ord for Lazy<I>

Source§

fn cmp(&self, other: &Lazy<I>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<I: PartialEq + Clone + Ord> PartialEq for Lazy<I>

Source§

fn eq(&self, other: &Lazy<I>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<I: PartialOrd + Clone + Ord> PartialOrd for Lazy<I>

Source§

fn partial_cmp(&self, other: &Lazy<I>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<I: Clone + Ord> Shr<(I, Option<&'static str>, Lazy<I>)> for Lazy<I>

Source§

type Output = Lazy<I>

The resulting type after applying the >> operator.
Source§

fn shr( self, (token, fn_name, rhs): (I, Option<&'static str>, Self), ) -> Self::Output

Performs the >> operation. Read more
Source§

impl<I: Clone + Ord> Shr for Lazy<I>

Source§

type Output = Lazy<I>

The resulting type after applying the >> operator.
Source§

fn shr(self, rhs: Self) -> Self::Output

Performs the >> operation. Read more
Source§

impl<I: Eq + Clone + Ord> Eq for Lazy<I>

Source§

impl<I: Clone + Ord> StructuralPartialEq for Lazy<I>

Auto Trait Implementations§

§

impl<I> Freeze for Lazy<I>
where I: Freeze,

§

impl<I> RefUnwindSafe for Lazy<I>
where I: RefUnwindSafe,

§

impl<I> !Send for Lazy<I>

§

impl<I> !Sync for Lazy<I>

§

impl<I> Unpin for Lazy<I>
where I: Unpin,

§

impl<I> UnwindSafe for Lazy<I>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V