From fd867cb38572744fda72d9c3ecffa3e5dfada440 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Mon, 14 Nov 2016 09:25:39 +0100 Subject: [PATCH] template ToGrammar algorithm --- alib2algo/src/automaton/convert/ToGrammar.cpp | 11 +---------- alib2algo/src/automaton/convert/ToGrammar.h | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/alib2algo/src/automaton/convert/ToGrammar.cpp b/alib2algo/src/automaton/convert/ToGrammar.cpp index d494233250..469033cba8 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 e348383319..449377349d 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 */ -- GitLab