From d9e084e8a8ffcbf656d567b1ee0a10ea4d42d7d9 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sat, 2 Feb 2019 19:28:51 +0100 Subject: [PATCH] user documentation of automaton conversions --- alib2algo/src/automaton/convert/ToGrammar.cpp | 13 +++++- alib2algo/src/automaton/convert/ToGrammar.h | 13 +++--- .../src/automaton/convert/ToGrammarLeftRG.cpp | 13 +++++- .../automaton/convert/ToGrammarRightRG.cpp | 13 +++++- .../convert/ToPostfixPushdownAutomaton.cpp | 13 +++++- alib2algo/src/automaton/convert/ToRegExp.cpp | 41 ++++++++++++++++--- .../automaton/convert/ToRegExpAlgebraic.cpp | 27 ++++++++++-- .../convert/ToRegExpStateElimination.cpp | 41 ++++++++++++++++--- 8 files changed, 145 insertions(+), 29 deletions(-) diff --git a/alib2algo/src/automaton/convert/ToGrammar.cpp b/alib2algo/src/automaton/convert/ToGrammar.cpp index 9c09db9d51..31624f1132 100644 --- a/alib2algo/src/automaton/convert/ToGrammar.cpp +++ b/alib2algo/src/automaton/convert/ToGrammar.cpp @@ -12,8 +12,17 @@ namespace automaton { namespace convert { -auto ToGrammarNFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammar::convert ); -auto ToGrammarDFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammar::convert ); +auto ToGrammarNFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammar::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToGrammarRightRG)\n\ +\n\ +@param automaton the automaton to convert\n\ +@return right regular grammar equivalent to the input @p automaton" ); + +auto ToGrammarDFA = registration::AbstractRegister < ToGrammar, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammar::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToGrammarRightRG)\n\ +\n\ +@param automaton the automaton to convert\n\ +@return right regular grammar equivalent to the input @p automaton" ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToGrammar.h b/alib2algo/src/automaton/convert/ToGrammar.h index e67c4869a2..209b10a145 100644 --- a/alib2algo/src/automaton/convert/ToGrammar.h +++ b/alib2algo/src/automaton/convert/ToGrammar.h @@ -42,16 +42,19 @@ class ToGrammar { public: /** * Performs the conversion (@sa ToGrammarRightRG::convert). - * @tparam SymbolType Type for symbols. - * @tparam StateType Type for states. - * @param automaton the automaton to convert - * @return right regular grammar equivalent to the input @p automaton + * + * \tparam SymbolType Type for symbols. + * \tparam StateType Type for states. + * + * \param automaton the automaton to convert + * + * \return right regular grammar equivalent to the input @p automaton */ template < class SymbolType, class StateType > static grammar::RightRG < SymbolType, StateType > convert(const automaton::NFA < SymbolType, StateType > & automaton); /** - * @overload + * \overload */ template < class SymbolType, class StateType > static grammar::RightRG < SymbolType, StateType > convert(const automaton::DFA < SymbolType, StateType > & automaton); diff --git a/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp b/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp index 8cba0df538..95fab45fdd 100644 --- a/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp +++ b/alib2algo/src/automaton/convert/ToGrammarLeftRG.cpp @@ -12,8 +12,17 @@ namespace automaton { namespace convert { -auto ToGrammarLeftRGNFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::NFA < > & > ( ToGrammarLeftRG::convert ); -auto ToGrammarLeftRGDFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::DFA < > & > ( ToGrammarLeftRG::convert ); +auto ToGrammarLeftRGNFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::NFA < > & > ( ToGrammarLeftRG::convert, "automaton" ).setDocumentation ( +"Performs the conversion of the finite automaton to left regular grammar.\n\ +\n\ +@param automaton a finite automaton to convert\n\ +@return left regular grammar equivalent to the source @p automaton." ); + +auto ToGrammarLeftRGDFA = registration::AbstractRegister < ToGrammarLeftRG, grammar::LeftRG < >, const automaton::DFA < > & > ( ToGrammarLeftRG::convert, "automaton").setDocumentation ( +"Performs the conversion of the finite automaton to left regular grammar.\n\ +\n\ +@param automaton a finite automaton to convert\n\ +@return left regular grammar equivalent to the source @p automaton." ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp b/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp index 58e84d9f6f..1883b2dbf5 100644 --- a/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp +++ b/alib2algo/src/automaton/convert/ToGrammarRightRG.cpp @@ -12,8 +12,17 @@ namespace automaton { namespace convert { -auto ToGrammarRightRGNFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammarRightRG::convert ); -auto ToGrammarRightRGDFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammarRightRG::convert ); +auto ToGrammarRightRGNFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::NFA < > & > ( ToGrammarRightRG::convert, "automaton" ).setDocumentation ( +"Performs the conversion of the finite automaton to right regular grammar.\n\ +\n\ +@param automaton a finite automaton to convert\n\ +@return right regular grammar equivalent to the source @p automaton." ); + +auto ToGrammarRightRGDFA = registration::AbstractRegister < ToGrammarRightRG, grammar::RightRG < >, const automaton::DFA < > & > ( ToGrammarRightRG::convert, "automaton" ).setDocumentation ( +"Performs the conversion of the finite automaton to right regular grammar.\n\ +\n\ +@param automaton a finite automaton to convert\n\ +ěreturn right regular grammar equivalent to the source @p automaton." ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp index 814a8666d6..9bae87f9e6 100644 --- a/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp +++ b/alib2algo/src/automaton/convert/ToPostfixPushdownAutomaton.cpp @@ -97,8 +97,17 @@ automaton::NPDA < > ToPostfixPushdownAutomaton::convert ( const automaton::NFTA return automaton; } -auto ToAutomatonDFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::DPDA < >, const automaton::DFTA < > & > ( ToPostfixPushdownAutomaton::convert ); -auto ToAutomatonNFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::NPDA < >, const automaton::NFTA < > & > ( ToPostfixPushdownAutomaton::convert ); +auto ToAutomatonDFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::DPDA < >, const automaton::DFTA < > & > ( ToPostfixPushdownAutomaton::convert, "dfta" ).setDocumentation ( +"Performs the conversion of the deterministic FTA to the deterministic PDA\n\ +\n\ +@param dfta Deterministic finite tree automaton to convert\n\ +@return (D)PDA equivalent to original finite tree automaton reading linearized postfix tree" ); + +auto ToAutomatonNFTA = registration::AbstractRegister < ToPostfixPushdownAutomaton, automaton::NPDA < >, const automaton::NFTA < > & > ( ToPostfixPushdownAutomaton::convert, "nfta" ).setDocumentation ( +"Performs the conversion of the deterministic FTA to the deterministic PDA\n\ +\n\ +@param nfta Nondeterministic finite tree automaton to convert\n\ +@return (N)PDA equivalent to original finite tree automaton reading linearized postfix tree" ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToRegExp.cpp b/alib2algo/src/automaton/convert/ToRegExp.cpp index 154c9cf3fe..3bd847ebf4 100644 --- a/alib2algo/src/automaton/convert/ToRegExp.cpp +++ b/alib2algo/src/automaton/convert/ToRegExp.cpp @@ -12,12 +12,41 @@ namespace automaton { namespace convert { -auto ToRegExpEpsilonNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExp::convert ); -auto ToRegExpMultiInitialStateNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExp::convert ); -auto ToRegExpNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExp::convert ); -auto ToRegExpDFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExp::convert ); -auto ToRegExpExtendedNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & > ( ToRegExp::convert ); -auto ToRegExpCompactNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & > ( ToRegExp::convert ); +auto ToRegExpEpsilonNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\ +\n\ +@param automaton the automaton to convert\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpMultiInitialStateNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\ +\n\ +@param automaton the automaton to convert\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\ +\n\ +@param automaton the automaton to convert\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpDFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\ +\n\ +@param automaton the automaton to convert\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpExtendedNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\ +\n\ +@param automaton the automaton to convert\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpCompactNFA = registration::AbstractRegister < ToRegExp, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & > ( ToRegExp::convert, "automaton" ).setDocumentation ( +"Performs the conversion (@sa ToRegExpStateElimination::convert).\n\ +\n\ +@param automaton the automaton to convert\n\ +@return regular expression equivalent to the input @p automaton" ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp index 1f636ccf2c..b0480fbe91 100644 --- a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp +++ b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.cpp @@ -12,10 +12,29 @@ namespace automaton { namespace convert { -auto ToRegExpAlgebraicEpsilonNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExpAlgebraic::convert ); -auto ToRegExpAlgebraicMultiInitialStateNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExpAlgebraic::convert ); -auto ToRegExpAlgebraicNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExpAlgebraic::convert ); -auto ToRegExpAlgebraicDFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExpAlgebraic::convert ); +auto ToRegExpAlgebraicEpsilonNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation ( +"Performs the actual conversion.\n\ +\n\ +@param automaton The automaton that is to be converted to the regular expression\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpAlgebraicMultiInitialStateNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation ( +"Performs the actual conversion.\n\ +\n\ +@param automaton The automaton that is to be converted to the regular expression\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpAlgebraicNFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation ( +"Performs the actual conversion.\n\ +\n\ +@param automaton The automaton that is to be converted to the regular expression\n\ +@return regular expression equivalent to the input @p automaton" ); + +auto ToRegExpAlgebraicDFA = registration::AbstractRegister < ToRegExpAlgebraic, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExpAlgebraic::convert, "automaton" ).setDocumentation ( +"Performs the actual conversion.\n\ +\n\ +@param automaton The automaton that is to be converted to the regular expression\n\ +@return regular expression equivalent to the input @p automaton" ); } /* namespace convert */ diff --git a/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp b/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp index 8c6967b2ac..151f72729b 100644 --- a/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp +++ b/alib2algo/src/automaton/convert/ToRegExpStateElimination.cpp @@ -12,12 +12,41 @@ namespace automaton { namespace convert { -auto ToRegExpStateEliminationEpsilonNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationMultiInitialStateNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::NFA < > & >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationDFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::DFA < > & >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationExtendedNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & >(ToRegExpStateElimination::convert); -auto ToRegExpStateEliminationCompactNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & >(ToRegExpStateElimination::convert); +auto ToRegExpStateEliminationEpsilonNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::EpsilonNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation ( +"Performs conversion.\n\ +\n\ +@param automaton finite automaton to convert\n\ +@return unbounded regular expression equivalent to the original automaton" ); + +auto ToRegExpStateEliminationMultiInitialStateNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::MultiInitialStateNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation ( +"Performs conversion.\n\ +\n\ +@param automaton finite automaton to convert\n\ +@return unbounded regular expression equivalent to the original automaton" ); + +auto ToRegExpStateEliminationNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::NFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation ( +"Performs conversion.\n\ +\n\ +@param automaton finite automaton to convert\n\ +@return unbounded regular expression equivalent to the original automaton" ); + +auto ToRegExpStateEliminationDFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::DFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation ( +"Performs conversion.\n\ +\n\ +@param automaton finite automaton to convert\n\ +@return unbounded regular expression equivalent to the original automaton" ); + +auto ToRegExpStateEliminationExtendedNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::ExtendedNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation ( +"Performs conversion.\n\ +\n\ +@param automaton finite automaton to convert\n\ +@return unbounded regular expression equivalent to the original automaton" ); + +auto ToRegExpStateEliminationCompactNFA = registration::AbstractRegister < ToRegExpStateElimination, regexp::UnboundedRegExp < >, const automaton::CompactNFA < > & > ( ToRegExpStateElimination::convert, "automaton" ).setDocumentation ( +"Performs conversion.\n\ +\n\ +@param automaton finite automaton to convert\n\ +@return unbounded regular expression equivalent to the original automaton" ); } /* namespace convert */ -- GitLab