Struct enso_automata::nfa::Nfa [−][src]
pub struct Nfa { pub start: State, // some fields omitted }
Expand description
The definition of a NFA for a given set of symbols, states, and transitions (specifically a NFA with ε-moves).
A NFA is a finite state automaton that accepts or rejects a given sequence of symbols. In contrast with a DFA, the NFA may transition between states without reading any new symbol through use of epsilon links.
┌───┐ 'N' ┌───┐ ┌───┐ 'F' ┌───┐ ┌───┐ 'A' ┌───┐
│ 0 │ ----> │ 1 │ -> │ 2 │ ----> │ 3 │ -> │ 3 │ ----> │ 3 │
└───┘ └───┘ ε └───┘ └───┘ ε └───┘ └───┘
Fields
start: State
Implementations
impl Nfa
[src]
impl Nfa
[src]pub fn new_state_exported(&mut self) -> State
[src]
pub fn new_state_exported(&mut self) -> State
[src]Adds a new state to the NFA, marks it as an exported state, and returns its identifier.
pub fn alphabet(&self) -> &Segmentation
[src]
pub fn alphabet(&self) -> &Segmentation
[src]Get a reference to the alphabet for this automaton.
pub fn connect(&mut self, source: State, target: State)
[src]
pub fn connect(&mut self, source: State, target: State)
[src]Creates an epsilon transition between two states.
Whenever the automaton happens to be in source
state it can immediately transition to the
target
state. It is, however, not required to do so.
pub fn connect_via(
&mut self,
source: State,
target: State,
symbols: &RangeInclusive<Symbol>
)
[src]
pub fn connect_via(
&mut self,
source: State,
target: State,
symbols: &RangeInclusive<Symbol>
)
[src]Creates an ordinary transition for a range of symbols.
If any symbol from such range happens to be the input when the automaton is in the source
state, it will immediately transition to the target
state.
pub fn new_pattern(
&mut self,
source: State,
pattern: impl AsRef<Pattern>
) -> State
[src]
pub fn new_pattern(
&mut self,
source: State,
pattern: impl AsRef<Pattern>
) -> State
[src]Transforms a pattern to connected NFA states by using the algorithm described here. The asymptotic complexity is linear in number of symbols.
pub fn new_pattern_to(
&mut self,
source: State,
target: State,
pattern: impl AsRef<Pattern>
)
[src]
pub fn new_pattern_to(
&mut self,
source: State,
target: State,
pattern: impl AsRef<Pattern>
)
[src]Transforms a pattern to connected NFA states by using the algorithm described
here. This function is similar to
new_pattern
, but it consumes an explicit target state.
The asymptotic complexity is linear in number of symbols.
pub fn eps_matrix(&self) -> Vec<StateSetId>
[src]
pub fn eps_matrix(&self) -> Vec<StateSetId>
[src]Merges states that are connected by epsilon links, using an algorithm based on the one shown here.
pub fn nfa_matrix(&self) -> Matrix<State>
[src]
pub fn nfa_matrix(&self) -> Matrix<State>
[src]Computes a transition matrix (state, symbol) => state
for the Nfa, ignoring epsilon links.
pub fn as_graphviz_code(&self) -> String
[src]
pub fn as_graphviz_code(&self) -> String
[src]Convert the automata to a GraphViz Dot code for the deubgging purposes.
Trait Implementations
impl Eq for Nfa
[src]
impl StructuralEq for Nfa
[src]
impl StructuralPartialEq for Nfa
[src]
Auto Trait Implementations
impl RefUnwindSafe for Nfa
impl Send for Nfa
impl Sync for Nfa
impl Unpin for Nfa
impl UnwindSafe for Nfa
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> HasRefValue for T where
T: ?Sized,
[src]
impl<T> HasRefValue for T where
T: ?Sized,
[src]type RefValue = T
impl<T> PhantomConversions for T
[src]
impl<T> PhantomConversions for T
[src]fn phantom_into<P>() -> P where
Self: PhantomInto<P>,
[src]
Self: PhantomInto<P>,
fn phantom_from<P>() -> Self where
P: PhantomInto<Self>,
[src]
P: PhantomInto<Self>,
impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
type Output = T
Should always be Self
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
pub fn to_subset(&self) -> Option<SS>
pub fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> TypeDisplay for T
[src]
impl<T> TypeDisplay for T
[src]pub default fn type_display() -> String
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,