Skip to main content

NfaTable

Struct NfaTable 

Source
pub struct NfaTable {
    pub states: Vec<NfaState>,
    pub start_state: StateId,
    pub accept_state: StateId,
    pub counter_defs: Vec<CounterDef>,
}
Expand description

Complete NFA table for a content model

Represents a compiled content model as a state machine. The NFA can be used for validation by tracking active states and matching input elements.

Fields§

§states: Vec<NfaState>

All states in the automaton

§start_state: StateId

Initial state ID

§accept_state: StateId

Accepting state ID (single accept state per Thompson’s construction)

§counter_defs: Vec<CounterDef>

Counter definitions for counted loops (empty if no counted repeats)

Implementations§

Source§

impl NfaTable

Source

pub fn new( states: Vec<NfaState>, start_state: StateId, accept_state: StateId, ) -> Self

Create a new NFA table with the given states (no counters)

Source

pub fn with_counters( states: Vec<NfaState>, start_state: StateId, accept_state: StateId, counter_defs: Vec<CounterDef>, ) -> Self

Create a new NFA table with counters

Source

pub fn has_counters(&self) -> bool

Check if this NFA has any counted loops

Source

pub fn get_state(&self, id: StateId) -> Option<&NfaState>

Get a state by ID

Source

pub fn get_state_mut(&mut self, id: StateId) -> Option<&mut NfaState>

Get a mutable reference to a state by ID

Source

pub fn state_count(&self) -> usize

Get the number of states

Source

pub fn is_accept(&self, state_id: StateId) -> bool

Check if a state is the accept state

Source

pub fn concat(self, other: NfaTable) -> NfaTable

Concatenate two NFA tables: self followed by other. Creates an epsilon transition from self’s accept state to other’s start state. Offsets both state IDs and counter IDs in the second table.

Source

pub fn transitions_from(&self, state_id: StateId) -> &[NfaTransition]

Get all transitions from a given state

Trait Implementations§

Source§

impl Clone for NfaTable

Source§

fn clone(&self) -> NfaTable

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for NfaTable

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> ErasedDestructor for T
where T: 'static,

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> MaybeSendSync for T

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.