diff --git a/alib2algo/src/automaton/convert/ToGrammar.cpp b/alib2algo/src/automaton/convert/ToGrammar.cpp index d494233250ea16df52855848b486e930c5978fb9..469033cba8a447bd8323c021142c0f323c2bfec6 100644 --- a/alib2algo/src/automaton/convert/ToGrammar.cpp +++ b/alib2algo/src/automaton/convert/ToGrammar.cpp @@ -6,7 +6,6 @@ */ #include "ToGrammar.h" -#include "ToGrammarRightRG.h" namespace automaton { @@ -16,17 +15,9 @@ grammar::Grammar ToGrammar::convert(const automaton::Automaton& automaton) { return dispatch(automaton.getData()); } -grammar::Grammar ToGrammar::convert(const automaton::NFA < > & automaton) { - return grammar::Grammar(ToGrammarRightRG::convert(automaton)); -} - auto ToGrammarNFA = ToGrammar::RegistratorWrapper<grammar::Grammar, automaton::NFA < > >(ToGrammar::convert); -grammar::Grammar ToGrammar::convert(const automaton::DFA<>& automaton) { - return grammar::Grammar(ToGrammarRightRG::convert(automaton)); -} - -auto ToGrammarDFA = ToGrammar::RegistratorWrapper<grammar::Grammar, automaton::DFA<>>(ToGrammar::convert); +auto ToGrammarDFA = ToGrammar::RegistratorWrapper<grammar::Grammar, automaton::DFA < > >(ToGrammar::convert); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToGrammar.h b/alib2algo/src/automaton/convert/ToGrammar.h index e3483833192e86a1be0f744a57a10036f2e5f924..449377349d7a3ce133af122b4273c643e8b6251c 100644 --- a/alib2algo/src/automaton/convert/ToGrammar.h +++ b/alib2algo/src/automaton/convert/ToGrammar.h @@ -17,6 +17,8 @@ #include <grammar/Grammar.h> #include <automaton/Automaton.h> +#include "ToGrammarRightRG.h" + namespace automaton { namespace convert { @@ -29,10 +31,23 @@ public: */ static grammar::Grammar convert(const automaton::Automaton& automaton); - static grammar::Grammar convert(const automaton::NFA<>& automaton); - static grammar::Grammar convert(const automaton::DFA<>& automaton); + template < class SymbolType, class StateType > + static grammar::Grammar convert(const automaton::NFA < SymbolType, StateType > & automaton); + template < class SymbolType, class StateType > + static grammar::Grammar convert(const automaton::DFA < SymbolType, StateType > & automaton); }; +template < class SymbolType, class StateType > +grammar::Grammar ToGrammar::convert(const automaton::NFA < SymbolType, StateType > & automaton) { + return grammar::Grammar(ToGrammarRightRG::convert(automaton)); +} + +template < class SymbolType, class StateType > +grammar::Grammar ToGrammar::convert(const automaton::DFA < SymbolType, StateType > & automaton) { + return grammar::Grammar(ToGrammarRightRG::convert(automaton)); +} + + } /* namespace convert */ } /* namespace automaton */