17template<
class SymbolType,
class StateType >
27template<
class SymbolType,
class StateType >
49 symbols.push_back(symbolVariant);
69 parseTransition(input, states, symbols, initialState, finalStates, transitionFunction);
82 if(!inputSymbol.is_epsilon())
83 res.addInputSymbol(inputSymbol.getSymbol());
85 res.setStates(states);
86 res.setFinalStates(finalStates);
88 res.addTransition(std::get<0>(transition), std::get<1>(transition), std::get<2>(transition));
94template<
class SymbolType,
class StateType >
104 if(initialState !=
nullptr)
108 if(
final) finalStates.insert(from);
114 if(iter == symbols.end())
134 if(iter != symbols.end())
138template<
class SymbolType,
class StateType >
143template<
class SymbolType,
class StateType >
146 for(
const auto& symbol :
automaton.getInputAlphabet()) {
154 for(
const auto& state :
automaton.getStates()) {
155 if(
automaton.getInitialState() == state) {
163 composeTransitionsFromState(output,
automaton, state);
169template <
class SymbolType,
class StateType >
172 const auto toStates =
automaton.getTransitions ( ).equal_range (
ext::tie ( from, inputSymbol ) );
173 if ( toStates.empty ( ) ) {
177 for(
const auto & transition : toStates ) {
178 output << (sign ?
"|" :
" ");
186 if ( epsilonTransitionsFromState.empty ( ) ) {
190 for(
const auto & transition : epsilonTransitionsFromState ) {
191 output << (sign ?
"|" :
" ");
static Token next(ext::istream &input)
Definition: AutomatonFromStringLexer.cpp:12
Epsilon nondeterministic finite automaton. Accepts regular languages.
Definition: EpsilonNFA.h:74
Definition: symbol_or_epsilon.hpp:24
Basic exception from which all other exceptions are derived.
Definition: CommonException.h:21
static Token peek(ext::istream &input)
Definition: lexer.hpp:53
static void putback(ext::istream &input, const Token &token)
Definition: lexer.hpp:61
Class extending the multimap class from the standard library. Original reason is to allow printing of...
Definition: multimap.hpp:48
Class extending the tuple class from the standard library. Original reason is to allow printing of th...
Definition: tuple.hpp:42
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
auto begin() &
Inherited behavior of begin for non-const instance.
Definition: vector.hpp:125
typename T::StateType StateType
Definition: ToGrammarLeftRG.h:64
typename T::SymbolType SymbolType
Definition: ReachableStates.h:176
return res
Definition: MinimizeByPartitioning.h:145
Definition: ToGrammar.h:31
Definition: normalize.hpp:10
constexpr tuple< Elements &... > tie(Elements &... args) noexcept
Helper of extended tuple of references construction. The tuple is constructed to reffer to values in ...
Definition: tuple.hpp:218
constexpr auto make_tuple(Elements &&... args)
Helper of extended tuple construction. The tuple is constructed from values pack, types are deduced.
Definition: tuple.hpp:203
static void initialFinalState(ext::istream &input, bool &rightArrow, bool &leftArrow)
Definition: AutomatonFromStringParserCommon.cpp:10
Definition: stringApi.hpp:26