From 161d48fdff7a38e267db128d245465ce346fe2aa Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 1 Feb 2019 14:11:10 +0100 Subject: [PATCH] make determinisation documentation available --- .../src/automaton/determinize/Determinize.cpp | 141 +++++++++++++----- .../src/automaton/determinize/Determinize.h | 4 +- 2 files changed, 106 insertions(+), 39 deletions(-) diff --git a/alib2algo/src/automaton/determinize/Determinize.cpp b/alib2algo/src/automaton/determinize/Determinize.cpp index 30f5fbe804..e856f818f1 100644 --- a/alib2algo/src/automaton/determinize/Determinize.cpp +++ b/alib2algo/src/automaton/determinize/Determinize.cpp @@ -23,43 +23,110 @@ namespace automaton { namespace determinize { -auto DeterminizeDFA = registration::AbstractRegister < Determinize, automaton::DFA < >, const automaton::DFA < > & > ( Determinize::determinize ).setDocumentation ( "Yay" ); - -auto DeterminizeNFA = registration::AbstractRegister < Determinize, automaton::DFA < DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::NFA < > & > ( Determinize::determinize ); - -auto DeterminizeMultiInitialStateNFA = registration::AbstractRegister < Determinize, automaton::DFA < DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::MultiInitialStateNFA < > & > ( Determinize::determinize ); - - -auto DeterminizeDFTA = registration::AbstractRegister < Determinize, automaton::DFTA < >, const automaton::DFTA < > & > ( Determinize::determinize ); - -auto DeterminizeNFTA = registration::AbstractRegister < Determinize, automaton::DFTA < DefaultSymbolType, DefaultRankType, ext::set < DefaultSymbolType > >, const automaton::NFTA < > & > ( Determinize::determinize ); - - -auto DeterminizeInputDrivenDPDA = registration::AbstractRegister < Determinize, automaton::InputDrivenDPDA < >, const automaton::InputDrivenDPDA < > & > ( Determinize::determinize ); - -auto DeterminizeInputDrivenNPDA = registration::AbstractRegister < Determinize, automaton::InputDrivenDPDA < DefaultSymbolType, DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::InputDrivenNPDA < > & > ( Determinize::determinize ); - - -auto DeterminizeVisiblyPushdownDPDA = registration::AbstractRegister < Determinize, automaton::VisiblyPushdownDPDA < >, const automaton::VisiblyPushdownDPDA < > & > ( Determinize::determinize ); - -auto DeterminizeVisiblyPushdownNPDA = registration::AbstractRegister < Determinize, automaton::VisiblyPushdownDPDA < DefaultSymbolType, ext::pair < ext::set < ext::pair < DefaultStateType, DefaultStateType > >, DefaultSymbolType >, ext::set < ext::pair < DefaultStateType, DefaultStateType > > >, const automaton::VisiblyPushdownNPDA < > & > ( Determinize::determinize ); - - -auto DeterminizeRealTimeHeightDeterministicDPDA = registration::AbstractRegister < Determinize, automaton::RealTimeHeightDeterministicDPDA < >, const automaton::RealTimeHeightDeterministicDPDA < > & > ( Determinize::determinize ); - -auto DeterminizeRealTimeHeightDeterministicNPDA = registration::AbstractRegister < Determinize, automaton::RealTimeHeightDeterministicDPDA < DefaultSymbolType, DefaultEpsilonType, ext::pair < ext::set < ext::pair < DefaultStateType, DefaultStateType > >, ext::variant < DefaultEpsilonType, DefaultSymbolType > >, ext::set < ext::pair < DefaultStateType, DefaultStateType > > >, const automaton::RealTimeHeightDeterministicNPDA < > & > ( Determinize::determinize ); - - -auto DeterminizeSinglePopDPDA = registration::AbstractRegister < Determinize, automaton::SinglePopDPDA < >, const automaton::SinglePopDPDA < > & > ( Determinize::determinize ); - - -auto DeterminizeDPDA = registration::AbstractRegister < Determinize, automaton::DPDA < >, const automaton::DPDA < > & > ( Determinize::determinize ); - -auto DeterminizeNPDA = registration::AbstractRegister < Determinize, automaton::DPDA < >, const automaton::NPDA < > & > ( Determinize::determinize ); - - -auto DeterminizeOneTapeDTM = registration::AbstractRegister < Determinize, automaton::OneTapeDTM < >, const automaton::OneTapeDTM < > & > ( Determinize::determinize ); - +auto DeterminizeDFA = registration::AbstractRegister < Determinize, automaton::DFA < >, const automaton::DFA < > & > ( Determinize::determinize, "dfa" ).setDocumentation ( +"Determinization of deterministic finite automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dfa deterministic finite automaton\n\ +@return deterministic finite automaton equivalent to @p dfa" ); + +auto DeterminizeNFA = registration::AbstractRegister < Determinize, automaton::DFA < DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::NFA < > & > ( Determinize::determinize, "nfa" ).setDocumentation ( +"Implementation of subset determinization for nondeterministic finite automata.\n\ +\n\ +@param nfa nondeterministic finite automaton\n\ +@return deterministic finite automaton equivalent to @p nfa" ); + +auto DeterminizeMultiInitialStateNFA = registration::AbstractRegister < Determinize, automaton::DFA < DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::MultiInitialStateNFA < > & > ( Determinize::determinize, "nfa" ).setDocumentation ( +"Implementation of subset determinization for nondeterministic finite automata with multiple initial states.\n\ +\n\ +@param nfa nondeterministic finite automaton with multiple initial states\n\ +@return deterministic finite automaton equivalent to @p nfa" ); + + +auto DeterminizeDFTA = registration::AbstractRegister < Determinize, automaton::DFTA < >, const automaton::DFTA < > & > ( Determinize::determinize, "dfta" ).setDocumentation ( +"Determinization of deterministic finite tree automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dfta deterministic finite tree automaton\n\ +@return deterministic finite tree automaton equivalent to @p dfta" ); + +auto DeterminizeNFTA = registration::AbstractRegister < Determinize, automaton::DFTA < DefaultSymbolType, DefaultRankType, ext::set < DefaultSymbolType > >, const automaton::NFTA < > & > ( Determinize::determinize, "nfta" ).setDocumentation ( +"Implementation of subset determinization for nondeterministic finite tree automata.\n\ +\n\ +@param nfta nondeterministic finite tree automaton\n\ +@return deterministic finite tree automaton equivalent to @p nfta" ); + + +auto DeterminizeInputDrivenDPDA = registration::AbstractRegister < Determinize, automaton::InputDrivenDPDA < >, const automaton::InputDrivenDPDA < > & > ( Determinize::determinize, "dpda" ).setDocumentation ( +"Determinization of deterministic input-driven pushdown automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dpda deterministic input-driven pushdown automaton\n\ +@return deterministic input-driven pushdown automaton equivalent to @p dpda" ); + +auto DeterminizeInputDrivenNPDA = registration::AbstractRegister < Determinize, automaton::InputDrivenDPDA < DefaultSymbolType, DefaultSymbolType, ext::set < DefaultStateType > >, const automaton::InputDrivenNPDA < > & > ( Determinize::determinize, "npda" ).setDocumentation ( +"Implementation of determinization for input-driven pushdown automata.\n\ +\n\ +@param npda nondeterministic input-driven pushdown automaton\n\ +@return deterministic input-driven pushdown automaton equivalent to @p npda" ); + + +auto DeterminizeVisiblyPushdownDPDA = registration::AbstractRegister < Determinize, automaton::VisiblyPushdownDPDA < >, const automaton::VisiblyPushdownDPDA < > & > ( Determinize::determinize, "dpda" ).setDocumentation ( +"Determinization of deterministic visibly pushdown automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dpda deterministic visibly pushdown automaton\n\ +@return deterministic pushdown automaton equivalent to @p dpda" ); + +auto DeterminizeVisiblyPushdownNPDA = registration::AbstractRegister < Determinize, automaton::VisiblyPushdownDPDA < DefaultSymbolType, ext::pair < ext::set < ext::pair < DefaultStateType, DefaultStateType > >, DefaultSymbolType >, ext::set < ext::pair < DefaultStateType, DefaultStateType > > >, const automaton::VisiblyPushdownNPDA < > & > ( Determinize::determinize, "npda" ).setDocumentation ( +"Determinization of nondeterministic visibly pushdown automata.\n\ +\n\ +@param npda nondeterministic visibly pushdown automaton\n\ +@return deterministic pushdown automaton equivalent to @p npda" ); + + +auto DeterminizeRealTimeHeightDeterministicDPDA = registration::AbstractRegister < Determinize, automaton::RealTimeHeightDeterministicDPDA < >, const automaton::RealTimeHeightDeterministicDPDA < > & > ( Determinize::determinize, "dpda" ).setDocumentation ( +"Determinization of deterministic real-time height-deterministic pushdown automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dpda deterministic real-time height-deterministic pushdown automaton\n\ +@return deterministic pushdown automaton equivalent to @p dpda" ); + +auto DeterminizeRealTimeHeightDeterministicNPDA = registration::AbstractRegister < Determinize, automaton::RealTimeHeightDeterministicDPDA < DefaultSymbolType, DefaultEpsilonType, ext::pair < ext::set < ext::pair < DefaultStateType, DefaultStateType > >, ext::variant < DefaultEpsilonType, DefaultSymbolType > >, ext::set < ext::pair < DefaultStateType, DefaultStateType > > >, const automaton::RealTimeHeightDeterministicNPDA < > & > ( Determinize::determinize, "npda" ).setDocumentation ( +"Determinization of nondeterministic real-time height-deterministic pushdown automata.\n\ +\n\ +@param npda nondeterministic real-time height-deterministic pushdown automaton\n\ +@return deterministic pushdown automaton equivalent to @p npda" ); + + +auto DeterminizeSinglePopDPDA = registration::AbstractRegister < Determinize, automaton::SinglePopDPDA < >, const automaton::SinglePopDPDA < > & > ( Determinize::determinize, "dpda" ).setDocumentation ( +"Determinization of deterministic single pop pushdown automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dpda nondeterministic finite automaton with multiple initial states\n\ +@return deterministic single pop deterministic pushdown automaton equivalent do @p dpda" ); + + +auto DeterminizeDPDA = registration::AbstractRegister < Determinize, automaton::DPDA < >, const automaton::DPDA < > & > ( Determinize::determinize, "dpda" ).setDocumentation ( +"Determinization of deterministic pushdown automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dpda deterministic pushdown automaton\n\ +@return deterministic pushdown automaton equivalent to @p dpda" ); + +auto DeterminizeNPDA = registration::AbstractRegister < Determinize, automaton::DPDA < >, const automaton::NPDA < > & > ( Determinize::determinize, "npda" ).setDocumentation ( +"Determinization of nondeterministic pushdown automata is implemented as a cast of such automaton to RhPDA.\n\ +\n\ +@param npda nondeterministic pushdown automaton\n\ +@return nondeterministic pushdown automaton equivalent to @p npda" ); + + +auto DeterminizeOneTapeDTM = registration::AbstractRegister < Determinize, automaton::OneTapeDTM < >, const automaton::OneTapeDTM < > & > ( Determinize::determinize, "dtm" ).setDocumentation ( +"Determinization of deterministic pushdown automata.\n\ +Implemented as a no-op.\n\ +\n\ +@param dtm deterministic one-tape turing machine\n\ +@return deterministic one-tape turing machine equivalent to @p dtm" ); } /* namespace determinize */ diff --git a/alib2algo/src/automaton/determinize/Determinize.h b/alib2algo/src/automaton/determinize/Determinize.h index 5f1952d67b..1487864fae 100644 --- a/alib2algo/src/automaton/determinize/Determinize.h +++ b/alib2algo/src/automaton/determinize/Determinize.h @@ -64,7 +64,7 @@ public: * @tparam SymbolType Type for the input symbols. * @tparam StateType Type for the states. * @param dfa deterministic finite automaton - * @return deterministic finite automaton equivalent to @p nfa + * @return deterministic finite automaton equivalent to @p dfa */ template < class SymbolType, class StateType > static automaton::DFA < SymbolType, StateType > determinize ( const automaton::DFA < SymbolType, StateType > & dfa ); @@ -136,7 +136,7 @@ public: * @tparam PushdownSymbolType Type for the pushdown store symbols. * @tparam StateType Type for the states. * @param npda nondeterministic input-driven pushdown automaton - * @return deterministic input-driven pushdown automaton equivalent to @p dpda + * @return deterministic input-driven pushdown automaton equivalent to @p npda */ template < class InputSymbolType, class PushdownSymbolType, class StateType > static automaton::InputDrivenDPDA < InputSymbolType, PushdownSymbolType, ext::set < StateType > > determinize ( const automaton::InputDrivenNPDA < InputSymbolType, PushdownSymbolType, StateType > & npda ); -- GitLab