27 template <
class StateType >
33 template <
class SymbolType,
class StateType >
35 template <
class SymbolType,
class StateType >
37 template <
class SymbolType,
class StateType >
39 template <
class SymbolType,
class StateType >
41 template <
class SymbolType,
class StateType >
43 template <
class SymbolType,
class StateType >
47template <
class StateType >
49 auto node = nonvisited.extract ( state );
50 if ( !
static_cast < bool > (
node ) )
53 for (
const auto & transition : epsilonTransitions.
equal_range (
node.value ( ) ) ) {
54 process ( epsilonTransitions, transition.second, closures, nonvisited );
55 const auto &
closure = closures [ transition.second ];
60template <
class SymbolType,
class StateType >
65 res[state].insert(state);
71 while(!nonvisited.empty ( )) {
72 process(epsilonTransitions, *nonvisited.
begin(),
res, nonvisited);
77 while(!nonvisited.empty ( )) {
78 process(epsilonTransitions, *nonvisited.
begin(),
res, nonvisited);
84template <
class SymbolType,
class StateType >
92template <
class SymbolType,
class StateType >
100template <
class SymbolType,
class StateType >
108template <
class SymbolType,
class StateType >
113 res[state].insert(state);
120 epsilonTransitions.
insert ( transition.first.first, transition.second );
122 while(!nonvisited.empty ( )) {
123 process(epsilonTransitions, *nonvisited.
begin(),
res, nonvisited);
128 while(!nonvisited.empty ( )) {
129 process(epsilonTransitions, *nonvisited.
begin(),
res, nonvisited);
135template <
class SymbolType,
class StateType >
140 res[state].insert(state);
146 if( transition.first.second.empty ( ) )
147 epsilonTransitions.
insert ( transition.first.first, transition.second );
149 while(!nonvisited.empty ( )) {
150 process(epsilonTransitions, *nonvisited.
begin(),
res, nonvisited);
155 while(!nonvisited.empty ( )) {
156 process(epsilonTransitions, *nonvisited.
begin(),
res, nonvisited);
Compact nondeterministic finite automaton. Accepts regular languages. The automaton has a list of sym...
Definition: CompactNFA.h:78
const ext::multimap< ext::pair< StateType, ext::vector< SymbolType > >, StateType > & getTransitions() const &
Definition: CompactNFA.h:555
const ext::set< StateType > & getStates() const &
Definition: CompactNFA.h:183
Deterministic finite automaton. Accepts regular languages.
Definition: DFA.h:71
const ext::set< StateType > & getStates() const &
Definition: DFA.h:134
Epsilon nondeterministic finite automaton. Accepts regular languages.
Definition: EpsilonNFA.h:74
const ext::set< StateType > & getStates() const &
Definition: EpsilonNFA.h:158
ext::multimap< StateType, StateType > getEpsilonTransitions() const
Definition: EpsilonNFA.h:676
Extended nondeterministic finite automaton. Accepts regular languages. The automaton has a regular ex...
Definition: ExtendedNFA.h:80
const ext::multimap< ext::pair< StateType, regexp::UnboundedRegExpStructure< SymbolType > >, StateType > & getTransitions() const &
Definition: ExtendedNFA.h:581
const ext::set< StateType > & getStates() const &
Definition: ExtendedNFA.h:185
Nondeterministic finite automaton with multiple initial states. Accepts regular languages.
Definition: MultiInitialStateNFA.h:69
const ext::set< StateType > & getStates() const &
Definition: MultiInitialStateNFA.h:166
Nondeterministic finite automaton. Accepts regular languages.
Definition: NFA.h:66
const ext::set< StateType > & getStates() const &
Definition: NFA.h:136
Definition: AllEpsilonClosure.h:26
static ext::map< StateType, ext::set< StateType > > allEpsilonClosure(const automaton::EpsilonNFA< SymbolType, StateType > &fsm)
Definition: AllEpsilonClosure.h:61
Class extending the map class from the standard library. Original reason is to allow printing of the ...
Definition: map.hpp:48
Class extending the multimap class from the standard library. Original reason is to allow printing of...
Definition: multimap.hpp:48
iterator insert(const T &key, const R &value)
Insert variant with explicit key and value parameters.
Definition: multimap.hpp:118
auto equal_range(K &&key) const &
Make range of elements with key equal to the key.
Definition: multimap.hpp:268
Class extending the pair class from the standard library. Original reason is to allow printing of the...
Definition: pair.hpp:43
auto begin() &
Inherited behavior of begin for non-const instance.
Definition: set.hpp:99
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
Represents unbounded regular expression structure. Regular expression is stored as a tree of Unbounde...
Definition: UnboundedRegExpStructure.h:47
static bool languageContainsEpsilon(const regexp::FormalRegExpElement< SymbolType > ®exp)
Definition: RegExpEpsilon.h:91
typename T::StateType StateType
Definition: ToGrammarLeftRG.h:64
return closure
Definition: AllEpsilonClosure.h:142
return res
Definition: MinimizeByPartitioning.h:145
Definition: ToGrammar.h:31