pub struct RE {
    pub nullable: bool,
    /* private fields */
}
Expand description

Regular expression structure

A regular expression includes an expression of type BaseRegLan, which is an abstract syntax tree.

In addition, each regular expression e has a unique integer id and three attributes:

  • e.nullable is true if the language of e contains the empty string
  • e.singleton is true if the language of e contains a single string
  • e.deriv_class is the list of derivative classes of e.

The derivative classes are disjoint interval characters that cover a subset of the alphabet, and a complementary class that covers the rest. See CharPartition. The deriv_class partition is constructed to ensure that all the characters in a class produce the same derivative of e: if c1 and c2 are in the same derivative class of e then deriv(e, c1) and deriv(e, c2) are equal.

Operations on regular expressions use hash-consing and are performed with an ReManager.

Fields§

§nullable: bool

Whether the language contains the empty string

Implementations§

Source§

impl RE

Source

pub fn empty_complement(&self) -> bool

check whether the complementary class is empty

Source

pub fn num_deriv_classes(&self) -> usize

number of derivative classes (not including the complementary class)

Source

pub fn valid_class_id(&self, cid: ClassId) -> bool

check whether cid is a valid class id

Source

pub fn is_empty(&self) -> bool

Check whether this RE is equal to the empty RE

Source

pub fn class_ids(&self) -> ClassIdIterator<'_>

iterator to go through valid classIds

Source

pub fn char_ranges(&self) -> impl Iterator<Item = &CharSet>

iterator to go through the intervals in an RE derivative classes

Source

pub fn included_in(&self, other: &Self) -> bool

incomplete check for inclusion

  • if this returns true then self is included in other
  • otherwise, we don’t know

Trait Implementations§

Source§

impl Debug for RE

Source§

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

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

impl Display for RE

Source§

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

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

impl Hash for RE

The hash code of an RE is just the hash code of its id.

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 Ord for RE

Source§

fn cmp(&self, other: &Self) -> 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 PartialEq for RE

Equality on RE is derived from the unique ids.

Two REs are equal iff they have the same id.

Source§

fn eq(&self, other: &Self) -> 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 PartialOrd for RE

Ordering on REs is based on unique ids.

We have re1 < re2 iff re1.id < re2.id

Source§

fn partial_cmp(&self, other: &Self) -> 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 Eq for RE

Auto Trait Implementations§

§

impl Freeze for RE

§

impl RefUnwindSafe for RE

§

impl !Send for RE

§

impl !Sync for RE

§

impl Unpin for RE

§

impl UnwindSafe for RE

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.