From 2c52920b3218af1e7e6edbebb25c188b8b9b0687 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 4 Dec 2016 20:33:23 +0100 Subject: [PATCH] template grammar convert auxiliary algorithm --- alib2algo/src/grammar/convert/ToRegExp.cpp | 10 ---------- alib2algo/src/grammar/convert/ToRegExp.h | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/alib2algo/src/grammar/convert/ToRegExp.cpp b/alib2algo/src/grammar/convert/ToRegExp.cpp index d5c837d54d..b4c7e4a280 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 6e04769a8c..8a8173c19f 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 */ -- GitLab