Skip to content
Snippets Groups Projects
Commit c55e3098 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

make EpsilonNFA templated

parent 26653f0f
No related branches found
No related tags found
No related merge requests found
Showing
with 38 additions and 38 deletions
...@@ -62,7 +62,7 @@ bool AutomatonCompare::testCompare(const automaton::NFA < > & a, const automaton ...@@ -62,7 +62,7 @@ bool AutomatonCompare::testCompare(const automaton::NFA < > & a, const automaton
a.getTransitions() == b.getTransitions() ; a.getTransitions() == b.getTransitions() ;
} }
   
bool AutomatonCompare::testCompare(const automaton::EpsilonNFA& a, const automaton::EpsilonNFA& b) { bool AutomatonCompare::testCompare(const automaton::EpsilonNFA < > & a, const automaton::EpsilonNFA < > & b) {
return a.getFinalStates() == b.getFinalStates() && return a.getFinalStates() == b.getFinalStates() &&
a.getInitialState() == b.getInitialState() && a.getInitialState() == b.getInitialState() &&
// a.getInputAlphabet() == b.getInputAlphabet() && // a.getInputAlphabet() == b.getInputAlphabet() &&
...@@ -378,7 +378,7 @@ void AutomatonCompare::printCompare(const automaton::NFA < > & a, const automato ...@@ -378,7 +378,7 @@ void AutomatonCompare::printCompare(const automaton::NFA < > & a, const automato
} }
} }
   
void AutomatonCompare::printCompare(const automaton::EpsilonNFA& a, const automaton::EpsilonNFA& b) { void AutomatonCompare::printCompare(const automaton::EpsilonNFA < > & a, const automaton::EpsilonNFA < > & b) {
std::cout << "AutomatonCompareer" << std::endl; std::cout << "AutomatonCompareer" << std::endl;
   
if(a.getFinalStates() != b.getFinalStates()){ if(a.getFinalStates() != b.getFinalStates()){
...@@ -1205,7 +1205,7 @@ int AutomatonCompare::compare(const automaton::MultiInitialStateNFA < >& a, cons ...@@ -1205,7 +1205,7 @@ int AutomatonCompare::compare(const automaton::MultiInitialStateNFA < >& a, cons
   
auto AutomatonCompareMultiInitialStateNFA = AutomatonCompare::RegistratorWrapper<int, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < >>(AutomatonCompare::compare); auto AutomatonCompareMultiInitialStateNFA = AutomatonCompare::RegistratorWrapper<int, automaton::MultiInitialStateNFA < >, automaton::MultiInitialStateNFA < >>(AutomatonCompare::compare);
   
int AutomatonCompare::compare(const automaton::EpsilonNFA& a, const automaton::EpsilonNFA& b) { int AutomatonCompare::compare(const automaton::EpsilonNFA < > & a, const automaton::EpsilonNFA < > & b) {
if(!AutomatonCompare::testCompare(a, b)) { if(!AutomatonCompare::testCompare(a, b)) {
AutomatonCompare::printCompare(a, b); AutomatonCompare::printCompare(a, b);
return 1; return 1;
...@@ -1214,7 +1214,7 @@ int AutomatonCompare::compare(const automaton::EpsilonNFA& a, const automaton::E ...@@ -1214,7 +1214,7 @@ int AutomatonCompare::compare(const automaton::EpsilonNFA& a, const automaton::E
} }
} }
   
auto AutomatonCompareEpsilonNFA = AutomatonCompare::RegistratorWrapper<int, automaton::EpsilonNFA, automaton::EpsilonNFA>(AutomatonCompare::compare); auto AutomatonCompareEpsilonNFA = AutomatonCompare::RegistratorWrapper<int, automaton::EpsilonNFA < >, automaton::EpsilonNFA < > >(AutomatonCompare::compare);
   
int AutomatonCompare::compare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b) { int AutomatonCompare::compare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b) {
if(!AutomatonCompare::testCompare(a, b)) { if(!AutomatonCompare::testCompare(a, b)) {
......
...@@ -29,8 +29,8 @@ private: ...@@ -29,8 +29,8 @@ private:
static bool testCompare(const automaton::MultiInitialStateNFA < >& a, const automaton::MultiInitialStateNFA < >& b); static bool testCompare(const automaton::MultiInitialStateNFA < >& a, const automaton::MultiInitialStateNFA < >& b);
static void printCompare(const automaton::MultiInitialStateNFA < >& a, const automaton::MultiInitialStateNFA < >& b); static void printCompare(const automaton::MultiInitialStateNFA < >& a, const automaton::MultiInitialStateNFA < >& b);
   
static bool testCompare(const automaton::EpsilonNFA& a, const automaton::EpsilonNFA& b); static bool testCompare(const automaton::EpsilonNFA < > & a, const automaton::EpsilonNFA < > & b);
static void printCompare(const automaton::EpsilonNFA& a, const automaton::EpsilonNFA& b); static void printCompare(const automaton::EpsilonNFA < > & a, const automaton::EpsilonNFA < > & b);
   
static bool testCompare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b); static bool testCompare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b);
static void printCompare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b); static void printCompare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b);
...@@ -84,7 +84,7 @@ public: ...@@ -84,7 +84,7 @@ public:
static int compare(const automaton::DFA<>& a, const automaton::DFA<>& b); static int compare(const automaton::DFA<>& a, const automaton::DFA<>& b);
static int compare(const automaton::NFA < > & a, const automaton::NFA < > & b); static int compare(const automaton::NFA < > & a, const automaton::NFA < > & b);
static int compare(const automaton::MultiInitialStateNFA < >& a, const automaton::MultiInitialStateNFA < >& b); static int compare(const automaton::MultiInitialStateNFA < >& a, const automaton::MultiInitialStateNFA < >& b);
static int compare(const automaton::EpsilonNFA& a, const automaton::EpsilonNFA& b); static int compare(const automaton::EpsilonNFA < > & a, const automaton::EpsilonNFA < > & b);
static int compare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b); static int compare(const automaton::ExtendedNFA& a, const automaton::ExtendedNFA& b);
static int compare(const automaton::CompactNFA < > & a, const automaton::CompactNFA < > & b); static int compare(const automaton::CompactNFA < > & a, const automaton::CompactNFA < > & b);
   
......
...@@ -189,7 +189,7 @@ void ConversionHandler::convertREtoFA ( void ) { ...@@ -189,7 +189,7 @@ void ConversionHandler::convertREtoFA ( void ) {
} }
   
case THOMPSON_NFA: { case THOMPSON_NFA: {
automaton::EpsilonNFA automaton = regexp::convert::ToAutomatonThompson::convert ( regexp ); automaton::EpsilonNFA < > automaton = regexp::convert::ToAutomatonThompson::convert ( regexp );
   
measurements::end ( ); measurements::end ( );
measurements::start ( "Output write", measurements::Type::AUXILIARY ); measurements::start ( "Output write", measurements::Type::AUXILIARY );
......
...@@ -50,7 +50,7 @@ void DotConverter::convert(std::ostream& out, const automaton::Automaton& a) { ...@@ -50,7 +50,7 @@ void DotConverter::convert(std::ostream& out, const automaton::Automaton& a) {
dispatch(out, a.getData()); dispatch(out, a.getData());
} }
   
void DotConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a) { void DotConverter::convert(std::ostream& out, const automaton::EpsilonNFA < > & a) {
out << "digraph automaton {\n"; out << "digraph automaton {\n";
out << "rankdir=LR;\n"; out << "rankdir=LR;\n";
int cnt = 1; int cnt = 1;
...@@ -81,7 +81,7 @@ void DotConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a) { ...@@ -81,7 +81,7 @@ void DotConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a) {
out << "}"; out << "}";
} }
   
auto DotConverterEpsilonNFA = DotConverter::RegistratorWrapper<void, automaton::EpsilonNFA>(DotConverter::convert); auto DotConverterEpsilonNFA = DotConverter::RegistratorWrapper<void, automaton::EpsilonNFA < > >(DotConverter::convert);
   
void DotConverter::convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a) { void DotConverter::convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a) {
out << "digraph automaton {\n"; out << "digraph automaton {\n";
...@@ -675,7 +675,7 @@ void DotConverter::convert(std::ostream& out, const automaton::OneTapeDTM<>& a) ...@@ -675,7 +675,7 @@ void DotConverter::convert(std::ostream& out, const automaton::OneTapeDTM<>& a)
   
auto DotConverterOneTapeDTM = DotConverter::RegistratorWrapper<void, automaton::OneTapeDTM<>>(DotConverter::convert); auto DotConverterOneTapeDTM = DotConverter::RegistratorWrapper<void, automaton::OneTapeDTM<>>(DotConverter::convert);
   
void DotConverter::transitions(const automaton::EpsilonNFA& fsm, const std::map<label::Label, int>& states, std::ostream& out) { void DotConverter::transitions(const automaton::EpsilonNFA < > & fsm, const std::map<label::Label, int>& states, std::ostream& out) {
std::map<std::pair<int, int>, std::string> transitions; std::map<std::pair<int, int>, std::string> transitions;
   
//put transitions from automaton to "transitions" //put transitions from automaton to "transitions"
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include <utility> #include <utility>
   
class DotConverter : public std::SingleDispatchFirstStaticParam<DotConverter, void, std::ostream&, automaton::AutomatonBase> { class DotConverter : public std::SingleDispatchFirstStaticParam<DotConverter, void, std::ostream&, automaton::AutomatonBase> {
static void transitions(const automaton::EpsilonNFA& fsm, const std::map<label::Label, int>& states, std::ostream& out); static void transitions(const automaton::EpsilonNFA < > & fsm, const std::map<label::Label, int>& states, std::ostream& out);
static void transitions(const automaton::MultiInitialStateNFA < >& fsm, const std::map<label::Label, int>& states, std::ostream& out); static void transitions(const automaton::MultiInitialStateNFA < >& fsm, const std::map<label::Label, int>& states, std::ostream& out);
static void transitions(const automaton::NFA < > & fsm, const std::map<label::Label, int>& states, std::ostream& out); static void transitions(const automaton::NFA < > & fsm, const std::map<label::Label, int>& states, std::ostream& out);
static void transitions(const automaton::DFA<>& fsm, const std::map<label::Label, int>& states, std::ostream& out); static void transitions(const automaton::DFA<>& fsm, const std::map<label::Label, int>& states, std::ostream& out);
...@@ -42,7 +42,7 @@ class DotConverter : public std::SingleDispatchFirstStaticParam<DotConverter, vo ...@@ -42,7 +42,7 @@ class DotConverter : public std::SingleDispatchFirstStaticParam<DotConverter, vo
public: public:
static void convert(std::ostream& out, const automaton::Automaton& a); static void convert(std::ostream& out, const automaton::Automaton& a);
   
static void convert(std::ostream& out, const automaton::EpsilonNFA& a); static void convert(std::ostream& out, const automaton::EpsilonNFA < > & a);
static void convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a); static void convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a);
static void convert(std::ostream& out, const automaton::NFA < > & a); static void convert(std::ostream& out, const automaton::NFA < > & a);
static void convert(std::ostream& out, const automaton::DFA<>& a); static void convert(std::ostream& out, const automaton::DFA<>& a);
......
...@@ -38,7 +38,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::Automaton& a) ...@@ -38,7 +38,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::Automaton& a)
dispatch(out, a.getData()); dispatch(out, a.getData());
} }
   
void GasTexConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a) { void GasTexConverter::convert(std::ostream& out, const automaton::EpsilonNFA < > & a) {
out << "\\begin{center}\n"; out << "\\begin{center}\n";
out << "\\begin{picture}(,)(,)\n"; out << "\\begin{picture}(,)(,)\n";
   
...@@ -77,7 +77,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a) ...@@ -77,7 +77,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a)
out << "\\end{picture}\n"; out << "\\end{picture}\n";
} }
   
auto GasTexConverterEpsilonNFA = GasTexConverter::RegistratorWrapper<void, automaton::EpsilonNFA>(GasTexConverter::convert); auto GasTexConverterEpsilonNFA = GasTexConverter::RegistratorWrapper<void, automaton::EpsilonNFA < > >(GasTexConverter::convert);
   
void GasTexConverter::convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a) { void GasTexConverter::convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a) {
out << "\\begin{center}\n"; out << "\\begin{center}\n";
...@@ -788,7 +788,7 @@ void GasTexConverter::printTransitionMap(const std::map<std::pair<std::string, s ...@@ -788,7 +788,7 @@ void GasTexConverter::printTransitionMap(const std::map<std::pair<std::string, s
} }
} }
   
void GasTexConverter::transitions(const automaton::EpsilonNFA& fsm, std::ostream& out) { void GasTexConverter::transitions(const automaton::EpsilonNFA < > & fsm, std::ostream& out) {
std::map<std::pair<std::string, std::string>, std::string> transitionMap; std::map<std::pair<std::string, std::string>, std::string> transitionMap;
for (const auto& transition : fsm.getTransitions()) { for (const auto& transition : fsm.getTransitions()) {
for(const auto& to : transition.second) { for(const auto& to : transition.second) {
......
...@@ -21,7 +21,7 @@ class GasTexConverter : public std::SingleDispatchFirstStaticParam<GasTexConvert ...@@ -21,7 +21,7 @@ class GasTexConverter : public std::SingleDispatchFirstStaticParam<GasTexConvert
static void printTransitionMap( const std::map<std::pair<std::string, std::string>, std::string> transitionMap, std::ostream& out); static void printTransitionMap( const std::map<std::pair<std::string, std::string>, std::string> transitionMap, std::ostream& out);
static std::string getStackSymbols(const std::vector<alphabet::Symbol>& stackSymbols); static std::string getStackSymbols(const std::vector<alphabet::Symbol>& stackSymbols);
   
static void transitions(const automaton::EpsilonNFA& fsm, std::ostream& out); static void transitions(const automaton::EpsilonNFA < > & fsm, std::ostream& out);
static void transitions(const automaton::MultiInitialStateNFA < >& fsm, std::ostream& out); static void transitions(const automaton::MultiInitialStateNFA < >& fsm, std::ostream& out);
static void transitions(const automaton::NFA < > & fsm, std::ostream& out); static void transitions(const automaton::NFA < > & fsm, std::ostream& out);
static void transitions(const automaton::DFA<>& fsm, std::ostream& out); static void transitions(const automaton::DFA<>& fsm, std::ostream& out);
...@@ -43,7 +43,7 @@ class GasTexConverter : public std::SingleDispatchFirstStaticParam<GasTexConvert ...@@ -43,7 +43,7 @@ class GasTexConverter : public std::SingleDispatchFirstStaticParam<GasTexConvert
public: public:
static void convert(std::ostream& out, const automaton::Automaton& a); static void convert(std::ostream& out, const automaton::Automaton& a);
   
static void convert(std::ostream& out, const automaton::EpsilonNFA& a); static void convert(std::ostream& out, const automaton::EpsilonNFA < > & a);
static void convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a); static void convert(std::ostream& out, const automaton::MultiInitialStateNFA < >& a);
static void convert(std::ostream& out, const automaton::NFA < > & a); static void convert(std::ostream& out, const automaton::NFA < > & a);
static void convert(std::ostream& out, const automaton::DFA<>& a); static void convert(std::ostream& out, const automaton::DFA<>& a);
......
...@@ -51,7 +51,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::Automaton & a ...@@ -51,7 +51,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::Automaton & a
dispatch ( out, a.getData ( ) ); dispatch ( out, a.getData ( ) );
} }
   
void TikZConverter::convert ( std::ostream & out, const automaton::EpsilonNFA & a ) { void TikZConverter::convert ( std::ostream & out, const automaton::EpsilonNFA < > & a ) {
out << "\\begin{tikzpicture}\n"; out << "\\begin{tikzpicture}\n";
int cnt = 1; int cnt = 1;
   
...@@ -78,7 +78,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::EpsilonNFA & ...@@ -78,7 +78,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::EpsilonNFA &
out << "\\end{tikzpicture}"; out << "\\end{tikzpicture}";
} }
   
auto TikZConverterEpsilonNFA = TikZConverter::RegistratorWrapper < void, automaton::EpsilonNFA > ( TikZConverter::convert ); auto TikZConverterEpsilonNFA = TikZConverter::RegistratorWrapper < void, automaton::EpsilonNFA < > > ( TikZConverter::convert );
   
void TikZConverter::convert ( std::ostream & out, const automaton::MultiInitialStateNFA < > & a ) { void TikZConverter::convert ( std::ostream & out, const automaton::MultiInitialStateNFA < > & a ) {
out << "\\begin{tikzpicture}\n"; out << "\\begin{tikzpicture}\n";
...@@ -596,7 +596,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::OneTapeDTM < ...@@ -596,7 +596,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::OneTapeDTM <
   
auto TikZConverterOneTapeDTM = TikZConverter::RegistratorWrapper < void, automaton::OneTapeDTM < > > ( TikZConverter::convert ); auto TikZConverterOneTapeDTM = TikZConverter::RegistratorWrapper < void, automaton::OneTapeDTM < > > ( TikZConverter::convert );
   
void TikZConverter::transitions ( const automaton::EpsilonNFA & fsm, const std::map < label::Label, int > & states, std::ostream & out ) { void TikZConverter::transitions ( const automaton::EpsilonNFA < > & fsm, const std::map < label::Label, int > & states, std::ostream & out ) {
std::map < std::pair < int, int >, std::string > transitions; std::map < std::pair < int, int >, std::string > transitions;
   
// put transitions from automaton to "transitions" // put transitions from automaton to "transitions"
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include <utility> #include <utility>
   
class TikZConverter : public std::SingleDispatchFirstStaticParam < TikZConverter, void, std::ostream &, automaton::AutomatonBase > { class TikZConverter : public std::SingleDispatchFirstStaticParam < TikZConverter, void, std::ostream &, automaton::AutomatonBase > {
static void transitions ( const automaton::EpsilonNFA & fsm, const std::map < label::Label, int > & states, std::ostream & out ); static void transitions ( const automaton::EpsilonNFA < > & fsm, const std::map < label::Label, int > & states, std::ostream & out );
static void transitions ( const automaton::MultiInitialStateNFA < > & fsm, const std::map < label::Label, int > & states, std::ostream & out ); static void transitions ( const automaton::MultiInitialStateNFA < > & fsm, const std::map < label::Label, int > & states, std::ostream & out );
static void transitions ( const automaton::NFA < > & fsm, const std::map < label::Label, int > & states, std::ostream & out ); static void transitions ( const automaton::NFA < > & fsm, const std::map < label::Label, int > & states, std::ostream & out );
static void transitions ( const automaton::DFA<> & fsm, const std::map < label::Label, int > & states, std::ostream & out ); static void transitions ( const automaton::DFA<> & fsm, const std::map < label::Label, int > & states, std::ostream & out );
...@@ -43,7 +43,7 @@ class TikZConverter : public std::SingleDispatchFirstStaticParam < TikZConverter ...@@ -43,7 +43,7 @@ class TikZConverter : public std::SingleDispatchFirstStaticParam < TikZConverter
public: public:
static void convert ( std::ostream & out, const automaton::Automaton & a ); static void convert ( std::ostream & out, const automaton::Automaton & a );
   
static void convert ( std::ostream & out, const automaton::EpsilonNFA & a ); static void convert ( std::ostream & out, const automaton::EpsilonNFA < > & a );
static void convert ( std::ostream & out, const automaton::MultiInitialStateNFA < > & a ); static void convert ( std::ostream & out, const automaton::MultiInitialStateNFA < > & a );
static void convert ( std::ostream & out, const automaton::NFA < > & a ); static void convert ( std::ostream & out, const automaton::NFA < > & a );
static void convert ( std::ostream & out, const automaton::DFA<> & a ); static void convert ( std::ostream & out, const automaton::DFA<> & a );
......
...@@ -16,11 +16,11 @@ regexp::RegExp ToRegExp::convert(const automaton::Automaton& automaton) { ...@@ -16,11 +16,11 @@ regexp::RegExp ToRegExp::convert(const automaton::Automaton& automaton) {
return dispatch(automaton.getData()); return dispatch(automaton.getData());
} }
   
regexp::RegExp ToRegExp::convert(const automaton::EpsilonNFA& automaton) { regexp::RegExp ToRegExp::convert(const automaton::EpsilonNFA < > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton)); return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
} }
   
auto ToRegExpEpsilonNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::EpsilonNFA>(ToRegExp::convert); auto ToRegExpEpsilonNFA = ToRegExp::RegistratorWrapper<regexp::RegExp, automaton::EpsilonNFA < > >(ToRegExp::convert);
   
regexp::RegExp ToRegExp::convert(const automaton::MultiInitialStateNFA < > & automaton) { regexp::RegExp ToRegExp::convert(const automaton::MultiInitialStateNFA < > & automaton) {
return regexp::RegExp(ToRegExpStateElimination::convert(automaton)); return regexp::RegExp(ToRegExpStateElimination::convert(automaton));
......
...@@ -31,7 +31,7 @@ public: ...@@ -31,7 +31,7 @@ public:
*/ */
static regexp::RegExp convert(const automaton::Automaton& automaton); static regexp::RegExp convert(const automaton::Automaton& automaton);
   
static regexp::RegExp convert(const automaton::EpsilonNFA& automaton); static regexp::RegExp convert(const automaton::EpsilonNFA < > & automaton);
static regexp::RegExp convert(const automaton::MultiInitialStateNFA < > & automaton); static regexp::RegExp convert(const automaton::MultiInitialStateNFA < > & automaton);
static regexp::RegExp convert(const automaton::NFA<>& automaton); static regexp::RegExp convert(const automaton::NFA<>& automaton);
static regexp::RegExp convert(const automaton::DFA<>& automaton); static regexp::RegExp convert(const automaton::DFA<>& automaton);
......
...@@ -26,7 +26,7 @@ regexp::RegExp ToRegExpAlgebraic::convert(const automaton::Automaton& automaton) ...@@ -26,7 +26,7 @@ regexp::RegExp ToRegExpAlgebraic::convert(const automaton::Automaton& automaton)
return dispatch(automaton.getData()); return dispatch(automaton.getData());
} }
   
regexp::UnboundedRegExp ToRegExpAlgebraic::convert( const automaton::EpsilonNFA & automaton ) { regexp::UnboundedRegExp ToRegExpAlgebraic::convert( const automaton::EpsilonNFA < > & automaton ) {
equations::RightRegularEquationSolver solver; equations::RightRegularEquationSolver solver;
   
// initialize equations // initialize equations
...@@ -53,7 +53,7 @@ regexp::UnboundedRegExp ToRegExpAlgebraic::convert( const automaton::EpsilonNFA ...@@ -53,7 +53,7 @@ regexp::UnboundedRegExp ToRegExpAlgebraic::convert( const automaton::EpsilonNFA
return solver.solve( alphabet::Symbol( alphabet::LabeledSymbol (automaton.getInitialState() ) ) ); return solver.solve( alphabet::Symbol( alphabet::LabeledSymbol (automaton.getInitialState() ) ) );
} }
   
auto ToRegExpAlgebraicEpsilonNFA = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp, automaton::EpsilonNFA>(ToRegExpAlgebraic::convert); auto ToRegExpAlgebraicEpsilonNFA = ToRegExpAlgebraic::RegistratorWrapper<regexp::UnboundedRegExp, automaton::EpsilonNFA < > >(ToRegExpAlgebraic::convert);
   
regexp::UnboundedRegExp ToRegExpAlgebraic::convert( const automaton::MultiInitialStateNFA < > & automaton ) { regexp::UnboundedRegExp ToRegExpAlgebraic::convert( const automaton::MultiInitialStateNFA < > & automaton ) {
equations::RightRegularEquationSolver solver; equations::RightRegularEquationSolver solver;
......
...@@ -38,7 +38,7 @@ public: ...@@ -38,7 +38,7 @@ public:
*/ */
static regexp::RegExp convert(const automaton::Automaton& automaton); static regexp::RegExp convert(const automaton::Automaton& automaton);
   
static regexp::UnboundedRegExp convert(const automaton::EpsilonNFA& automaton); static regexp::UnboundedRegExp convert(const automaton::EpsilonNFA < > & automaton);
static regexp::UnboundedRegExp convert(const automaton::MultiInitialStateNFA < > & automaton); static regexp::UnboundedRegExp convert(const automaton::MultiInitialStateNFA < > & automaton);
static regexp::UnboundedRegExp convert(const automaton::NFA < > & automaton); static regexp::UnboundedRegExp convert(const automaton::NFA < > & automaton);
static regexp::UnboundedRegExp convert(const automaton::DFA<>& automaton); static regexp::UnboundedRegExp convert(const automaton::DFA<>& automaton);
......
...@@ -46,7 +46,7 @@ regexp::RegExp ToRegExpStateElimination::convert(const T& automaton) { ...@@ -46,7 +46,7 @@ regexp::RegExp ToRegExpStateElimination::convert(const T& automaton) {
regexp::RegExpIterate::iterate(transition(extendedAutomaton, *extendedAutomaton.getFinalStates().begin(), *extendedAutomaton.getFinalStates().begin())))); regexp::RegExpIterate::iterate(transition(extendedAutomaton, *extendedAutomaton.getFinalStates().begin(), *extendedAutomaton.getFinalStates().begin()))));
} }
   
auto ToRegExpStateEliminationEpsilonNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::EpsilonNFA>(ToRegExpStateElimination::convert); auto ToRegExpStateEliminationEpsilonNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::EpsilonNFA < > >(ToRegExpStateElimination::convert);
auto ToRegExpStateEliminationMultiInitialStateNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::MultiInitialStateNFA < > >(ToRegExpStateElimination::convert); auto ToRegExpStateEliminationMultiInitialStateNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::MultiInitialStateNFA < > >(ToRegExpStateElimination::convert);
auto ToRegExpStateEliminationNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::NFA < > >(ToRegExpStateElimination::convert); auto ToRegExpStateEliminationNFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::NFA < > >(ToRegExpStateElimination::convert);
auto ToRegExpStateEliminationDFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::DFA<>>(ToRegExpStateElimination::convert); auto ToRegExpStateEliminationDFA = ToRegExpStateElimination::RegistratorWrapper<regexp::RegExp, automaton::DFA<>>(ToRegExpStateElimination::convert);
......
...@@ -26,7 +26,7 @@ namespace automaton { ...@@ -26,7 +26,7 @@ namespace automaton {
   
namespace properties { namespace properties {
   
std::map<label::Label, std::set<label::Label>> AllEpsilonClosure::allEpsilonClosure( const automaton::EpsilonNFA & fsm) { std::map<label::Label, std::set<label::Label>> AllEpsilonClosure::allEpsilonClosure( const automaton::EpsilonNFA < > & fsm) {
std::deque<std::map<label::Label, std::set<label::Label>>> Qi; std::deque<std::map<label::Label, std::set<label::Label>>> Qi;
   
Qi.push_back({}); Qi.push_back({});
...@@ -52,7 +52,7 @@ std::map<label::Label, std::set<label::Label>> AllEpsilonClosure::allEpsilonClos ...@@ -52,7 +52,7 @@ std::map<label::Label, std::set<label::Label>> AllEpsilonClosure::allEpsilonClos
return Qi.at(i); return Qi.at(i);
} }
   
auto AllEpsilonClosureEpsilonNFA = AllEpsilonClosure::RegistratorWrapper<std::map<label::Label, std::set<label::Label>>, automaton::EpsilonNFA>(AllEpsilonClosure::allEpsilonClosure); auto AllEpsilonClosureEpsilonNFA = AllEpsilonClosure::RegistratorWrapper<std::map<label::Label, std::set<label::Label>>, automaton::EpsilonNFA < > >(AllEpsilonClosure::allEpsilonClosure);
   
std::map<label::Label, std::set<label::Label>> AllEpsilonClosure::allEpsilonClosure( const automaton::MultiInitialStateNFA < > & fsm) { std::map<label::Label, std::set<label::Label>> AllEpsilonClosure::allEpsilonClosure( const automaton::MultiInitialStateNFA < > & fsm) {
std::map<label::Label, std::set<label::Label>> closure; std::map<label::Label, std::set<label::Label>> closure;
......
...@@ -27,7 +27,7 @@ public: ...@@ -27,7 +27,7 @@ public:
/** /**
* Computes allEpsilon closure of a state in allEpsilon nonfree automaton * Computes allEpsilon closure of a state in allEpsilon nonfree automaton
*/ */
static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::EpsilonNFA & fsm); static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::EpsilonNFA < > & fsm);
static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::MultiInitialStateNFA < > & fsm); static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::MultiInitialStateNFA < > & fsm);
static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::NFA < > & fsm); static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::NFA < > & fsm);
static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::DFA < > & fsm); static std::map<label::Label, std::set<label::Label>> allEpsilonClosure( const automaton::DFA < > & fsm);
......
...@@ -24,7 +24,7 @@ namespace automaton { ...@@ -24,7 +24,7 @@ namespace automaton {
   
namespace properties { namespace properties {
   
std::set<label::Label> EpsilonClosure::epsilonClosure( const automaton::EpsilonNFA & fsm, const label::Label & q ) { std::set<label::Label> EpsilonClosure::epsilonClosure( const automaton::EpsilonNFA < > & fsm, const label::Label & q ) {
if(! fsm.getStates().count(q) ) throw exception::CommonException("State is not in the automaton"); if(! fsm.getStates().count(q) ) throw exception::CommonException("State is not in the automaton");
   
std::set<label::Label> closure; std::set<label::Label> closure;
...@@ -53,7 +53,7 @@ std::set<label::Label> EpsilonClosure::epsilonClosure( const automaton::EpsilonN ...@@ -53,7 +53,7 @@ std::set<label::Label> EpsilonClosure::epsilonClosure( const automaton::EpsilonN
return closure; return closure;
} }
   
auto EpsilonClosureEpsilonNFA = EpsilonClosure::RegistratorWrapper<std::set<label::Label>, automaton::EpsilonNFA>(EpsilonClosure::epsilonClosure); auto EpsilonClosureEpsilonNFA = EpsilonClosure::RegistratorWrapper<std::set<label::Label>, automaton::EpsilonNFA < > >(EpsilonClosure::epsilonClosure);
   
std::set<label::Label> EpsilonClosure::epsilonClosure( const automaton::MultiInitialStateNFA < > & fsm, const label::Label & q ) { std::set<label::Label> EpsilonClosure::epsilonClosure( const automaton::MultiInitialStateNFA < > & fsm, const label::Label & q ) {
if(! fsm.getStates().count(q) ) throw exception::CommonException("State is not in the automaton"); if(! fsm.getStates().count(q) ) throw exception::CommonException("State is not in the automaton");
......
...@@ -28,7 +28,7 @@ public: ...@@ -28,7 +28,7 @@ public:
/** /**
* Computes epsilon closure of a state in epsilon nonfree automaton * Computes epsilon closure of a state in epsilon nonfree automaton
*/ */
static std::set<label::Label> epsilonClosure( const automaton::EpsilonNFA & fsm, const label::Label & state ); static std::set<label::Label> epsilonClosure( const automaton::EpsilonNFA < > & fsm, const label::Label & state );
static std::set<label::Label> epsilonClosure( const automaton::MultiInitialStateNFA < > & fsm, const label::Label & state ); static std::set<label::Label> epsilonClosure( const automaton::MultiInitialStateNFA < > & fsm, const label::Label & state );
static std::set<label::Label> epsilonClosure( const automaton::NFA < > & fsm, const label::Label & state ); static std::set<label::Label> epsilonClosure( const automaton::NFA < > & fsm, const label::Label & state );
static std::set<label::Label> epsilonClosure( const automaton::DFA < > & fsm, const label::Label & state ); static std::set<label::Label> epsilonClosure( const automaton::DFA < > & fsm, const label::Label & state );
......
...@@ -51,7 +51,7 @@ std::set<label::Label> ReachableStates::reachableStates( const T & fsm ) { ...@@ -51,7 +51,7 @@ std::set<label::Label> ReachableStates::reachableStates( const T & fsm ) {
return Qi.at( i ); return Qi.at( i );
} }
   
auto ReachableStatesEpsilonNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::EpsilonNFA>(ReachableStates::reachableStates); auto ReachableStatesEpsilonNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::EpsilonNFA < > >(ReachableStates::reachableStates);
auto ReachableStatesNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::NFA < > >(ReachableStates::reachableStates); auto ReachableStatesNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::NFA < > >(ReachableStates::reachableStates);
auto ReachableStatesCompactNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::CompactNFA < > >(ReachableStates::reachableStates); auto ReachableStatesCompactNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::CompactNFA < > >(ReachableStates::reachableStates);
auto ReachableStatesExtendedNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::ExtendedNFA>(ReachableStates::reachableStates); auto ReachableStatesExtendedNFA = ReachableStates::RegistratorWrapper<std::set<label::Label>, automaton::ExtendedNFA>(ReachableStates::reachableStates);
......
...@@ -49,7 +49,7 @@ std::set<label::Label> UsefullStates::usefullStates( const T & fsm ) { ...@@ -49,7 +49,7 @@ std::set<label::Label> UsefullStates::usefullStates( const T & fsm ) {
return Qi.at( i ); return Qi.at( i );
} }
   
auto UsefullStatesEpsilonNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::EpsilonNFA>(UsefullStates::usefullStates); auto UsefullStatesEpsilonNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::EpsilonNFA < > >(UsefullStates::usefullStates);
auto UsefullStatesNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::NFA < > >(UsefullStates::usefullStates); auto UsefullStatesNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::NFA < > >(UsefullStates::usefullStates);
auto UsefullStatesCompactNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::CompactNFA < > >(UsefullStates::usefullStates); auto UsefullStatesCompactNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::CompactNFA < > >(UsefullStates::usefullStates);
auto UsefullStatesExtendedNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::ExtendedNFA>(UsefullStates::usefullStates); auto UsefullStatesExtendedNFA = UsefullStates::RegistratorWrapper<std::set<label::Label>, automaton::ExtendedNFA>(UsefullStates::usefullStates);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment