diff --git a/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.cpp b/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.cpp index b7302c366a30e5d4e1301166e5d5f0125abe0129..51095e4f1c923dc1189f2aee4761ec774643d8a2 100644 --- a/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.cpp +++ b/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.cpp @@ -50,7 +50,7 @@ template<> regexp::RegExp StateEliminationFormal::convert(const automaton::Automaton& automaton) { regexp::RegExp* out = NULL; - automaton.getData().Accept((void*) &out, StateEliminationFormal::STATE_ELIMINATION); + automaton.getData().Accept((void*) &out, StateEliminationFormal::STATE_ELIMINATION_FORMAL); regexp::RegExp res = std::move(*out); delete out; return res; @@ -92,6 +92,16 @@ void StateEliminationFormal::Visit(void*, const automaton::CompactNFA& ) const throw exception::AlibException("Unsupported automaton type CompactNFA"); } +void StateEliminationFormal::Visit(void*, const automaton::DPDA&) const +{ + throw exception::AlibException("Unsupported automaton type DPDA"); +} + +void StateEliminationFormal::Visit(void*, const automaton::SinglePopDPDA&) const +{ + throw exception::AlibException("Unsupported automaton type SinglePopDPDA"); +} + void StateEliminationFormal::Visit(void*, const automaton::NPDA&) const { throw exception::AlibException("Unsupported automaton type NPDA"); @@ -287,6 +297,6 @@ void StateEliminationFormal::extendExtendedNFA(automaton::ExtendedNFA& automaton } } -const StateEliminationFormal StateEliminationFormal::STATE_ELIMINATION; +const StateEliminationFormal StateEliminationFormal::STATE_ELIMINATION_FORMAL; } /* namespace fa2re */ diff --git a/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.h b/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.h index 594ffa704106d6e907d45053d68f0d512ffa8219..86fcb39b750f39a3d527bc2e2adaaf0d4acfbd55 100644 --- a/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.h +++ b/alib2algo/src/conversions/fa2re/formal/StateEliminationFormal.h @@ -41,6 +41,8 @@ private: void Visit(void*, const automaton::DFA& automaton) const; void Visit(void*, const automaton::ExtendedNFA& automaton) const; void Visit(void*, const automaton::CompactNFA& automaton) const; + void Visit(void*, const automaton::DPDA& automaton) const; + void Visit(void*, const automaton::SinglePopDPDA& automaton) const; void Visit(void*, const automaton::NPDA& automaton) const; void Visit(void*, const automaton::SinglePopNPDA& automaton) const; void Visit(void*, const automaton::OneTapeDTM& automaton) const; @@ -54,7 +56,7 @@ private: static automaton::ExtendedNFA eliminateState(const automaton::ExtendedNFA& extendedAutomaton, const automaton::State& state); - static const StateEliminationFormal STATE_ELIMINATION; + static const StateEliminationFormal STATE_ELIMINATION_FORMAL; }; } /* namespace fa2re */ diff --git a/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.cpp b/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.cpp index 311a8c74e073bfd8f81a263f54c338772f409fbf..890e1454b1b26da31f6d1c04e1de93063b864d46 100644 --- a/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.cpp +++ b/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.cpp @@ -10,7 +10,6 @@ #include <regexp/unbounded/UnboundedRegExp.h> #include <label/StringLabel.h> #include <exception/AlibException.h> -#include <factory/DataFactory.hpp> #include "../../../regexp/RegExpOptimize.h" @@ -49,7 +48,7 @@ template<> regexp::RegExp StateEliminationUnbounded::convert(const automaton::Automaton& automaton) { regexp::RegExp* out = NULL; - automaton.getData().Accept((void*) &out, StateEliminationUnbounded::STATE_ELIMINATION); + automaton.getData().Accept((void*) &out, StateEliminationUnbounded::STATE_ELIMINATION_UNBOUNDED); regexp::RegExp res = std::move(*out); delete out; return res; @@ -91,6 +90,16 @@ void StateEliminationUnbounded::Visit(void*, const automaton::CompactNFA& ) cons throw exception::AlibException("Unsupported automaton type CompactNFA"); } +void StateEliminationUnbounded::Visit(void*, const automaton::DPDA&) const +{ + throw exception::AlibException("Unsupported automaton type DPDA"); +} + +void StateEliminationUnbounded::Visit(void*, const automaton::SinglePopDPDA&) const +{ + throw exception::AlibException("Unsupported automaton type SinglePopDPDA"); +} + void StateEliminationUnbounded::Visit(void*, const automaton::NPDA&) const { throw exception::AlibException("Unsupported automaton type NPDA"); @@ -267,6 +276,6 @@ void StateEliminationUnbounded::extendExtendedNFA(automaton::ExtendedNFA& automa } } -const StateEliminationUnbounded StateEliminationUnbounded::STATE_ELIMINATION; +const StateEliminationUnbounded StateEliminationUnbounded::STATE_ELIMINATION_UNBOUNDED; } /* namespace fa2re */ diff --git a/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.h b/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.h index f5e081814c788fde3331c074db7391d65a6403e8..419e100b352293a630bd5972ef1167455535c5bd 100644 --- a/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.h +++ b/alib2algo/src/conversions/fa2re/unbounded/StateEliminationUnbounded.h @@ -41,6 +41,8 @@ private: void Visit(void*, const automaton::DFA& automaton) const; void Visit(void*, const automaton::ExtendedNFA& automaton) const; void Visit(void*, const automaton::CompactNFA& automaton) const; + void Visit(void*, const automaton::DPDA& automaton) const; + void Visit(void*, const automaton::SinglePopDPDA& automaton) const; void Visit(void*, const automaton::NPDA& automaton) const; void Visit(void*, const automaton::SinglePopNPDA& automaton) const; void Visit(void*, const automaton::OneTapeDTM& automaton) const; @@ -54,7 +56,7 @@ private: static automaton::ExtendedNFA eliminateState(const automaton::ExtendedNFA& extendedAutomaton, const automaton::State& state); - static const StateEliminationUnbounded STATE_ELIMINATION; + static const StateEliminationUnbounded STATE_ELIMINATION_UNBOUNDED; }; } /* namespace fa2re */