diff --git a/alib2algo/src/grammar/convert/ToRegExp.cpp b/alib2algo/src/grammar/convert/ToRegExp.cpp index d5c837d54d57cf7ed09df605d9eae99e81fbd79b..b4c7e4a280cfae42db0333034f194c13e0e2d5fa 100644 --- a/alib2algo/src/grammar/convert/ToRegExp.cpp +++ b/alib2algo/src/grammar/convert/ToRegExp.cpp @@ -6,7 +6,6 @@ */ #include "ToRegExp.h" -#include "ToRegExpAlgebraic.h" namespace grammar { @@ -16,16 +15,7 @@ regexp::RegExp ToRegExp::convert(const grammar::Grammar& grammar) { return dispatch(grammar.getData()); } -regexp::RegExp ToRegExp::convert(const grammar::RightRG < > & grammar) { - return regexp::RegExp(ToRegExpAlgebraic::convert(grammar)); -} - auto ToRegExpRightRG = ToRegExp::RegistratorWrapper<regexp::RegExp, grammar::RightRG < > >(ToRegExp::convert); - -regexp::RegExp ToRegExp::convert(const grammar::LeftRG < > & grammar) { - return regexp::RegExp(ToRegExpAlgebraic::convert(grammar)); -} - auto ToRegExpLeftRG = ToRegExp::RegistratorWrapper<regexp::RegExp, grammar::LeftRG < > >(ToRegExp::convert); } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToRegExp.h b/alib2algo/src/grammar/convert/ToRegExp.h index 6e04769a8c44cae9b8d19ad8129657fa81a30569..8a8173c19f138887fbf7f3fef88d16374d7da5cc 100644 --- a/alib2algo/src/grammar/convert/ToRegExp.h +++ b/alib2algo/src/grammar/convert/ToRegExp.h @@ -16,6 +16,8 @@ #include <regexp/RegExp.h> +#include "ToRegExpAlgebraic.h" + namespace grammar { namespace convert { @@ -28,10 +30,22 @@ public: */ static regexp::RegExp convert(const grammar::Grammar& grammar); - static regexp::RegExp convert(const grammar::RightRG < > & grammar); - static regexp::RegExp convert(const grammar::LeftRG < > & grammar); + template < class SymbolType > + static regexp::RegExp convert(const grammar::RightRG < SymbolType > & grammar); + template < class SymbolType > + static regexp::RegExp convert(const grammar::LeftRG < SymbolType > & grammar); }; +template < class SymbolType > +regexp::RegExp ToRegExp::convert(const grammar::RightRG < SymbolType > & grammar) { + return regexp::RegExp(ToRegExpAlgebraic::convert(grammar)); +} + +template < class SymbolType > +regexp::RegExp ToRegExp::convert(const grammar::LeftRG < SymbolType > & grammar) { + return regexp::RegExp(ToRegExpAlgebraic::convert(grammar)); +} + } /* namespace covert */ } /* namespace grammar */