From 9c5bd1ce5fb8b97e72fa29968afb98a05e53bf1f Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 4 Dec 2016 19:53:23 +0100 Subject: [PATCH] template auxiliary regexp convert algorithms --- alib2algo/src/regexp/convert/ToAutomaton.cpp | 10 ---------- alib2algo/src/regexp/convert/ToAutomaton.h | 18 ++++++++++++++++-- alib2algo/src/regexp/convert/ToGrammar.cpp | 10 ---------- alib2algo/src/regexp/convert/ToGrammar.h | 18 ++++++++++++++++-- 4 files changed, 32 insertions(+), 24 deletions(-) diff --git a/alib2algo/src/regexp/convert/ToAutomaton.cpp b/alib2algo/src/regexp/convert/ToAutomaton.cpp index 3ae1558fe0..e943f5b298 100644 --- a/alib2algo/src/regexp/convert/ToAutomaton.cpp +++ b/alib2algo/src/regexp/convert/ToAutomaton.cpp @@ -6,7 +6,6 @@ */ #include "ToAutomaton.h" -#include "ToAutomatonGlushkov.h" namespace regexp { @@ -16,16 +15,7 @@ automaton::Automaton ToAutomaton::convert(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -automaton::Automaton ToAutomaton::convert(const regexp::FormalRegExp < > & regexp) { - return automaton::Automaton(ToAutomatonGlushkov::convert(regexp)); -} - auto ToAutomatonFormalRegExp = ToAutomaton::RegistratorWrapper<automaton::Automaton, regexp::FormalRegExp < > >(ToAutomaton::convert); - -automaton::Automaton ToAutomaton::convert(const regexp::UnboundedRegExp < > & regexp) { - return automaton::Automaton(ToAutomatonGlushkov::convert(regexp)); -} - auto ToAutomatonUnboundedRegExp = ToAutomaton::RegistratorWrapper<automaton::Automaton, regexp::UnboundedRegExp < > >( ToAutomaton::convert); } /* namespace convert */ diff --git a/alib2algo/src/regexp/convert/ToAutomaton.h b/alib2algo/src/regexp/convert/ToAutomaton.h index bcbb8b9e9f..389da3e8fd 100644 --- a/alib2algo/src/regexp/convert/ToAutomaton.h +++ b/alib2algo/src/regexp/convert/ToAutomaton.h @@ -16,6 +16,8 @@ #include <automaton/Automaton.h> +#include "ToAutomatonGlushkov.h" + namespace regexp { namespace convert { @@ -28,11 +30,23 @@ public: */ static automaton::Automaton convert(const regexp::RegExp& regexp); - static automaton::Automaton convert(const regexp::FormalRegExp < > & regexp); - static automaton::Automaton convert(const regexp::UnboundedRegExp < > & regexp); + template < class SymbolType > + static automaton::Automaton convert(const regexp::FormalRegExp < SymbolType > & regexp); + template < class SymbolType > + static automaton::Automaton convert(const regexp::UnboundedRegExp < SymbolType > & regexp); }; +template < class SymbolType > +automaton::Automaton ToAutomaton::convert(const regexp::FormalRegExp < SymbolType > & regexp) { + return automaton::Automaton(ToAutomatonGlushkov::convert(regexp)); +} + +template < class SymbolType > +automaton::Automaton ToAutomaton::convert(const regexp::UnboundedRegExp < SymbolType > & regexp) { + return automaton::Automaton(ToAutomatonGlushkov::convert(regexp)); +} + } /* namespace convert */ } /* namespace regexp */ diff --git a/alib2algo/src/regexp/convert/ToGrammar.cpp b/alib2algo/src/regexp/convert/ToGrammar.cpp index d02b338ab0..0b51d8f6eb 100644 --- a/alib2algo/src/regexp/convert/ToGrammar.cpp +++ b/alib2algo/src/regexp/convert/ToGrammar.cpp @@ -6,7 +6,6 @@ */ #include "ToGrammar.h" -#include "ToGrammarRightRGGlushkov.h" namespace regexp { @@ -16,16 +15,7 @@ grammar::Grammar ToGrammar::convert(const regexp::RegExp& regexp) { return dispatch(regexp.getData()); } -grammar::Grammar ToGrammar::convert(const regexp::FormalRegExp < > & regexp) { - return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp)); -} - auto ToGrammarFormalRegExp = ToGrammar::RegistratorWrapper<grammar::Grammar, regexp::FormalRegExp < > >(ToGrammar::convert); - -grammar::Grammar ToGrammar::convert(const regexp::UnboundedRegExp < > & regexp) { - return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp)); -} - auto ToGrammarUnboundedRegExp = ToGrammar::RegistratorWrapper<grammar::Grammar, regexp::UnboundedRegExp < > >(ToGrammar::convert); } /* namespace convert */ diff --git a/alib2algo/src/regexp/convert/ToGrammar.h b/alib2algo/src/regexp/convert/ToGrammar.h index f302528b67..4af1274e84 100644 --- a/alib2algo/src/regexp/convert/ToGrammar.h +++ b/alib2algo/src/regexp/convert/ToGrammar.h @@ -14,6 +14,8 @@ #include <regexp/RegExp.h> #include <regexp/RegExpFeatures.h> +#include "ToGrammarRightRGGlushkov.h" + namespace regexp { namespace convert { @@ -26,11 +28,23 @@ public: */ static grammar::Grammar convert(const regexp::RegExp& regexp); - static grammar::Grammar convert(const regexp::FormalRegExp < > & regexp); - static grammar::Grammar convert(const regexp::UnboundedRegExp < > & regexp); + template < class SymbolType > + static grammar::Grammar convert(const regexp::FormalRegExp < SymbolType > & regexp); + template < class SymbolType > + static grammar::Grammar convert(const regexp::UnboundedRegExp < SymbolType > & regexp); }; +template < class SymbolType > +grammar::Grammar ToGrammar::convert(const regexp::FormalRegExp < SymbolType > & regexp) { + return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp)); +} + +template < class SymbolType > +grammar::Grammar ToGrammar::convert(const regexp::UnboundedRegExp < SymbolType > & regexp) { + return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp)); +} + } /* namespace convert */ } /* namespace regexp */ -- GitLab