From a495ae8c4f1f7a35fd882a16d495f7004f698352 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Tue, 12 May 2015 09:13:17 +0200 Subject: [PATCH] make alib2algo compilant with llvm --- alib2algo/src/automaton/convert/ToGrammar.h | 2 + .../src/automaton/convert/ToGrammarLeftRG.h | 4 + .../src/automaton/convert/ToGrammarRightRG.h | 4 + alib2algo/src/automaton/convert/ToRegExp.h | 4 + .../src/automaton/convert/ToRegExpAlgebraic.h | 4 + .../convert/ToRegExpStateElimination.h | 4 + .../src/automaton/determinize/Determinize.h | 3 + .../automaton/properties/AllEpsilonClosure.h | 2 + .../src/automaton/properties/EpsilonClosure.h | 1 + .../automaton/properties/ReachableStates.h | 2 + .../src/automaton/properties/UsefullStates.h | 2 + alib2algo/src/automaton/run/Accept.h | 2 + alib2algo/src/automaton/run/Occurrences.h | 2 + alib2algo/src/automaton/run/Result.h | 2 + .../simplify/EpsilonRemoverIncoming.h | 2 + .../simplify/EpsilonRemoverOutgoing.h | 2 + alib2algo/src/automaton/simplify/Minimize.h | 2 + .../automaton/simplify/MinimizeBrzozowski.h | 4 + alib2algo/src/automaton/simplify/Normalize.h | 2 + alib2algo/src/automaton/simplify/Rename.h | 2 + .../automaton/simplify/SingleInitialState.h | 2 + alib2algo/src/automaton/simplify/Total.h | 6 +- alib2algo/src/automaton/simplify/Trim.h | 3 +- .../simplify/UnreachableStatesRemover.h | 2 + .../automaton/simplify/UselessStatesRemover.h | 2 + .../transform/AutomataConcatenation.h | 2 + .../AutomataConcatenationEpsilonTransition.h | 2 + .../AutomataIntersectionCartesianProduct.h | 2 + .../transform/AutomataUnionCartesianProduct.h | 2 + .../AutomataUnionEpsilonTransition.h | 2 + .../automaton/transform/AutomatonIteration.h | 2 + .../AutomatonIterationEpsilonTransition.h | 2 + .../src/automaton/transform/Compaction.h | 6 +- .../src/automaton/transform/PDAToRHPDA.h | 6 +- .../src/automaton/transform/RHPDAToPDA.h | 4 + alib2algo/src/automaton/transform/Reverse.h | 6 +- .../src/common/StringContainerConverter.hpp | 6 +- alib2algo/src/grammar/convert/ToAutomaton.h | 2 + .../src/grammar/convert/ToGrammarLeftRG.h | 30 +++--- .../src/grammar/convert/ToGrammarRightRG.h | 30 +++--- alib2algo/src/grammar/convert/ToRegExp.cpp | 36 ------- alib2algo/src/grammar/convert/ToRegExp.h | 13 +-- .../src/grammar/convert/ToRegExpAlgebraic.h | 30 +++--- .../src/grammar/generate/GenerateUpToLength.h | 2 + .../src/grammar/properties/IsLanguageEmpty.h | 2 + .../properties/IsLanguageGeneratingEpsilon.h | 2 + .../properties/NonterminalUnitRuleCycle.h | 2 + .../grammar/properties/NullableNonterminals.h | 2 + .../properties/ProductiveNonterminals.h | 2 + .../grammar/properties/UnreachableSymbols.h | 2 + .../src/grammar/simplify/EpsilonRemover.h | 2 + .../grammar/simplify/LeftRecursionRemover.h | 2 + .../src/grammar/simplify/SimpleRulesRemover.h | 2 + alib2algo/src/grammar/simplify/ToCNF.h | 2 + alib2algo/src/grammar/simplify/ToGNF.cpp | 2 - alib2algo/src/grammar/simplify/ToGNF.h | 2 + alib2algo/src/grammar/simplify/Trim.h | 2 + .../simplify/UnproductiveSymbolsRemover.h | 2 + .../simplify/UnreachableSymbolsRemover.h | 2 + .../src/graph/shortestpath/BellmanFord.h | 2 + alib2algo/src/graph/shortestpath/Dijkstra.h | 2 + .../src/graph/shortestpath/FloydWarshall.h | 2 + alib2algo/src/graph/sort/TopologicalSort.h | 2 + alib2algo/src/graph/spanningtree/JarnikPrim.h | 2 + alib2algo/src/graph/traverse/Bfs.h | 2 + alib2algo/src/graph/traverse/Dfs.h | 2 + alib2algo/src/regexp/GlushkovSymbol.cpp | 7 +- alib2algo/src/regexp/GlushkovTraversal.cpp | 100 +++++++++--------- alib2algo/src/regexp/convert/ToAutomaton.h | 2 + .../regexp/convert/ToAutomatonDerivation.h | 2 + .../src/regexp/convert/ToAutomatonGlushkov.h | 2 + .../src/regexp/convert/ToAutomatonThompson.h | 2 + alib2algo/src/regexp/convert/ToGrammar.h | 2 + .../convert/ToGrammarRightRGDerivation.h | 2 + .../regexp/convert/ToGrammarRightRGGlushkov.h | 2 + alib2algo/src/regexp/properties/RegExpEmpty.h | 2 + .../src/regexp/properties/RegExpEpsilon.h | 3 +- .../src/regexp/simplify/RegExpOptimize.h | 2 + .../src/regexp/transform/RegExpAlternate.h | 2 + .../src/regexp/transform/RegExpConcatenate.h | 2 + .../src/regexp/transform/RegExpDerivation.h | 2 + .../src/regexp/transform/RegExpIntegral.h | 2 + .../src/regexp/transform/RegExpIterate.h | 2 + alib2algo/src/string/naive/ExactCompare.h | 2 + alib2algo/src/string/naive/ExactEqual.h | 2 + .../src/string/simplify/NormalizeAlphabet.h | 2 + .../src/string/simplify/NormalizeRotation.h | 2 + alib2algo/src/stringology/exact/BorderArray.h | 2 + .../stringology/exact/BoyerMooreHorspool.h | 2 + .../stringology/exact/ExactFactorAutomaton.h | 2 + alib2algo/src/stringology/exact/ExactMatch.h | 2 + .../exact/ExactMatchingAutomaton.h | 2 + ...ultiNondeterministicSubsequenceAutomaton.h | 2 + ...xactNondeterministicSubsequenceAutomaton.h | 2 + .../exact/ExactSubsequenceAutomaton.h | 2 + alib2data/src/automaton/AutomatonBase.h | 8 +- alib2data/src/grammar/GrammarBase.h | 2 +- 97 files changed, 312 insertions(+), 156 deletions(-) diff --git a/alib2algo/src/automaton/convert/ToGrammar.h b/alib2algo/src/automaton/convert/ToGrammar.h index ecc050680c..c0def5d6df 100644 --- a/alib2algo/src/automaton/convert/ToGrammar.h +++ b/alib2algo/src/automaton/convert/ToGrammar.h @@ -21,6 +21,8 @@ namespace convert { class ToGrammar : public automaton::VisitableAutomatonBase::const_visitor_type { public: + ToGrammar() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/automaton/convert/ToGrammarLeftRG.h b/alib2algo/src/automaton/convert/ToGrammarLeftRG.h index 26e7f96752..462d4bf866 100644 --- a/alib2algo/src/automaton/convert/ToGrammarLeftRG.h +++ b/alib2algo/src/automaton/convert/ToGrammarLeftRG.h @@ -25,6 +25,8 @@ namespace convert { */ class ToGrammarLeftRG : public automaton::VisitableConstFSMBase { public: + ToGrammarLeftRG() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. @@ -35,6 +37,8 @@ public: static grammar::LeftRG convert(const automaton::DFA& automaton); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const automaton::EpsilonNFA& automaton) const; void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const; void Visit(void*, const automaton::NFA& automaton) const; diff --git a/alib2algo/src/automaton/convert/ToGrammarRightRG.h b/alib2algo/src/automaton/convert/ToGrammarRightRG.h index 448e32e38c..4807e826c6 100644 --- a/alib2algo/src/automaton/convert/ToGrammarRightRG.h +++ b/alib2algo/src/automaton/convert/ToGrammarRightRG.h @@ -25,6 +25,8 @@ namespace convert { */ class ToGrammarRightRG : public automaton::VisitableConstFSMBase { public: + ToGrammarRightRG() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. @@ -35,6 +37,8 @@ public: static grammar::RightRG convert(const automaton::DFA& automaton); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const automaton::EpsilonNFA& automaton) const; void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const; void Visit(void*, const automaton::NFA& automaton) const; diff --git a/alib2algo/src/automaton/convert/ToRegExp.h b/alib2algo/src/automaton/convert/ToRegExp.h index 3718c38af0..a50bcdfbcd 100644 --- a/alib2algo/src/automaton/convert/ToRegExp.h +++ b/alib2algo/src/automaton/convert/ToRegExp.h @@ -22,6 +22,8 @@ namespace convert { class ToRegExp : public automaton::VisitableConstFSMBase { public: + ToRegExp() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. @@ -29,6 +31,8 @@ public: static regexp::RegExp convert(const automaton::Automaton& automaton); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const EpsilonNFA& automaton) const; void Visit(void*, const MultiInitialStateNFA& automaton) const; void Visit(void*, const NFA& automaton) const; diff --git a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h index 54d1f89f7b..dd158a7893 100644 --- a/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h +++ b/alib2algo/src/automaton/convert/ToRegExpAlgebraic.h @@ -29,6 +29,8 @@ namespace convert { */ class ToRegExpAlgebraic : public automaton::VisitableConstFSMBase { public: + ToRegExpAlgebraic() {} + /** * Performs conversion. * @return regular expression equivalent to input automaton. @@ -41,6 +43,8 @@ public: static regexp::UnboundedRegExp convert(const automaton::DFA& automaton); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const automaton::EpsilonNFA&) const; void Visit(void*, const automaton::MultiInitialStateNFA&) const; void Visit(void*, const automaton::NFA&) const; diff --git a/alib2algo/src/automaton/convert/ToRegExpStateElimination.h b/alib2algo/src/automaton/convert/ToRegExpStateElimination.h index f11cd29792..5a7962995b 100644 --- a/alib2algo/src/automaton/convert/ToRegExpStateElimination.h +++ b/alib2algo/src/automaton/convert/ToRegExpStateElimination.h @@ -28,6 +28,8 @@ namespace convert { */ class ToRegExpStateElimination : public automaton::VisitableConstFSMBase { public: + ToRegExpStateElimination() {} + /** * Performs conversion. * @param automaton automaton to convert @@ -39,6 +41,8 @@ public: static regexp::RegExp convert(const T& automaton); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const automaton::EpsilonNFA& automaton) const; void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const; void Visit(void*, const automaton::NFA& automaton) const; diff --git a/alib2algo/src/automaton/determinize/Determinize.h b/alib2algo/src/automaton/determinize/Determinize.h index 94f936c5f0..ef939cbe80 100644 --- a/alib2algo/src/automaton/determinize/Determinize.h +++ b/alib2algo/src/automaton/determinize/Determinize.h @@ -31,6 +31,9 @@ namespace determinize { * Class for running determinization algorithm on fsm. */ class Determinize : public automaton::VisitableAutomatonBase::const_visitor_type { +public: + Determinize() {} + private: void Visit(void*, const automaton::EpsilonNFA& automaton) const; void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const; diff --git a/alib2algo/src/automaton/properties/AllEpsilonClosure.h b/alib2algo/src/automaton/properties/AllEpsilonClosure.h index c7fc6bfeed..f3aecf94ca 100644 --- a/alib2algo/src/automaton/properties/AllEpsilonClosure.h +++ b/alib2algo/src/automaton/properties/AllEpsilonClosure.h @@ -20,6 +20,8 @@ namespace properties { class AllEpsilonClosure : public VisitableAutomatonBase::const_visitor_type { public: + AllEpsilonClosure() {} + static std::map<automaton::State, std::set<automaton::State>> allEpsilonClosure( const automaton::Automaton & automaton); /** diff --git a/alib2algo/src/automaton/properties/EpsilonClosure.h b/alib2algo/src/automaton/properties/EpsilonClosure.h index f2dd9f8ab9..fc055dd8b9 100644 --- a/alib2algo/src/automaton/properties/EpsilonClosure.h +++ b/alib2algo/src/automaton/properties/EpsilonClosure.h @@ -21,6 +21,7 @@ namespace properties { class EpsilonClosure : public VisitableAutomatonBase::const_visitor_type { public: + EpsilonClosure() {} static std::set<automaton::State> epsilonClosure( const automaton::Automaton & automaton, const automaton::State & state ); /** diff --git a/alib2algo/src/automaton/properties/ReachableStates.h b/alib2algo/src/automaton/properties/ReachableStates.h index 88ede0f89d..aee2eaff8e 100644 --- a/alib2algo/src/automaton/properties/ReachableStates.h +++ b/alib2algo/src/automaton/properties/ReachableStates.h @@ -21,6 +21,8 @@ namespace properties { class ReachableStates : public VisitableAutomatonBase::const_visitor_type { public: + ReachableStates() {} + static std::set<automaton::State> reachableStates( const automaton::Automaton & automaton ); /** diff --git a/alib2algo/src/automaton/properties/UsefullStates.h b/alib2algo/src/automaton/properties/UsefullStates.h index 3fa2b58735..d58b7e861b 100644 --- a/alib2algo/src/automaton/properties/UsefullStates.h +++ b/alib2algo/src/automaton/properties/UsefullStates.h @@ -21,6 +21,8 @@ namespace properties { class UsefullStates : public VisitableAutomatonBase::const_visitor_type { public: + UsefullStates() {} + static std::set<automaton::State> usefullStates( const automaton::Automaton & automaton ); /** diff --git a/alib2algo/src/automaton/run/Accept.h b/alib2algo/src/automaton/run/Accept.h index ed451178ce..e8cb279368 100644 --- a/alib2algo/src/automaton/run/Accept.h +++ b/alib2algo/src/automaton/run/Accept.h @@ -19,6 +19,8 @@ namespace run { class Accept : public automaton::VisitableAutomatonBase::const_visitor_type { public: + Accept() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/automaton/run/Occurrences.h b/alib2algo/src/automaton/run/Occurrences.h index dc15fb5848..4f838ee55e 100644 --- a/alib2algo/src/automaton/run/Occurrences.h +++ b/alib2algo/src/automaton/run/Occurrences.h @@ -19,6 +19,8 @@ namespace run { class Occurrences : public automaton::VisitableAutomatonBase::const_visitor_type { public: + Occurrences() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/automaton/run/Result.h b/alib2algo/src/automaton/run/Result.h index acdebc95b5..29aac2185d 100644 --- a/alib2algo/src/automaton/run/Result.h +++ b/alib2algo/src/automaton/run/Result.h @@ -20,6 +20,8 @@ namespace run { class Result : public automaton::VisitableAutomatonBase::const_visitor_type { public: + Result() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h b/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h index 8a79bb5d25..fc96737d3d 100644 --- a/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h +++ b/alib2algo/src/automaton/simplify/EpsilonRemoverIncoming.h @@ -25,6 +25,8 @@ namespace simplify { class EpsilonRemoverIncoming : public automaton::VisitableAutomatonBase::const_visitor_type { public: + EpsilonRemoverIncoming() {} + static automaton::Automaton remove( const automaton::Automaton & automaton ); /** diff --git a/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h b/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h index e76b99a711..9966620209 100644 --- a/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h +++ b/alib2algo/src/automaton/simplify/EpsilonRemoverOutgoing.h @@ -25,6 +25,8 @@ namespace simplify { class EpsilonRemoverOutgoing : public automaton::VisitableAutomatonBase::const_visitor_type { public: + EpsilonRemoverOutgoing() {} + static automaton::Automaton remove( const automaton::Automaton & automaton ); /** diff --git a/alib2algo/src/automaton/simplify/Minimize.h b/alib2algo/src/automaton/simplify/Minimize.h index d71753aa99..0d2de23012 100644 --- a/alib2algo/src/automaton/simplify/Minimize.h +++ b/alib2algo/src/automaton/simplify/Minimize.h @@ -17,6 +17,8 @@ namespace simplify { class Minimize : public automaton::VisitableAutomatonBase::const_visitor_type { public: + Minimize() {} + /** * @param dfa automaton to minimize */ diff --git a/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h b/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h index c21dc2d49b..4d21d0d19e 100644 --- a/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h +++ b/alib2algo/src/automaton/simplify/MinimizeBrzozowski.h @@ -17,6 +17,8 @@ namespace simplify { class MinimizeBrzozowski : public automaton::VisitableConstFSMBase { public: + MinimizeBrzozowski() {} + /** * @param dfa automaton to minimize */ @@ -26,6 +28,8 @@ public: static automaton::DFA minimize(const automaton::NFA& nfa); protected: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const automaton::EpsilonNFA& automaton) const; void Visit(void*, const automaton::MultiInitialStateNFA& automaton) const; void Visit(void*, const automaton::NFA& automaton) const; diff --git a/alib2algo/src/automaton/simplify/Normalize.h b/alib2algo/src/automaton/simplify/Normalize.h index 791ae5a70d..25c8b05279 100644 --- a/alib2algo/src/automaton/simplify/Normalize.h +++ b/alib2algo/src/automaton/simplify/Normalize.h @@ -18,6 +18,8 @@ namespace simplify { class Normalize : public automaton::VisitableAutomatonBase::const_visitor_type { public: + Normalize() {} + /** * @param dfa automaton to normalize */ diff --git a/alib2algo/src/automaton/simplify/Rename.h b/alib2algo/src/automaton/simplify/Rename.h index 9312f94ed8..55f9efac91 100644 --- a/alib2algo/src/automaton/simplify/Rename.h +++ b/alib2algo/src/automaton/simplify/Rename.h @@ -22,6 +22,8 @@ namespace simplify { class Rename : public automaton::VisitableAutomatonBase::const_visitor_type { public: + Rename() {} + /** * @param dfa automaton to rename */ diff --git a/alib2algo/src/automaton/simplify/SingleInitialState.h b/alib2algo/src/automaton/simplify/SingleInitialState.h index 881fe35269..e15fb96370 100644 --- a/alib2algo/src/automaton/simplify/SingleInitialState.h +++ b/alib2algo/src/automaton/simplify/SingleInitialState.h @@ -21,6 +21,8 @@ namespace simplify { */ class SingleInitialState : public VisitableAutomatonBase::const_visitor_type { public: + SingleInitialState() {} + /** * Computes epsilon closure of a state in epsilon nonfree automaton */ diff --git a/alib2algo/src/automaton/simplify/Total.h b/alib2algo/src/automaton/simplify/Total.h index 9730b0b96e..10f817895d 100644 --- a/alib2algo/src/automaton/simplify/Total.h +++ b/alib2algo/src/automaton/simplify/Total.h @@ -23,8 +23,10 @@ namespace simplify { * Makes finite automaton's transition function total. * Source: Melichar: Algorithm 2.22 */ -class Total : public VisitableConstFSMBase { +class Total : public automaton::VisitableConstFSMBase { public: + Total() {} + /** * Computes epsilon closure of a state in epsilon nonfree automaton */ @@ -34,6 +36,8 @@ public: static automaton::DFA total(const automaton::DFA& automaton); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const EpsilonNFA& automaton) const; void Visit(void*, const MultiInitialStateNFA& automaton) const; void Visit(void*, const NFA& automaton) const; diff --git a/alib2algo/src/automaton/simplify/Trim.h b/alib2algo/src/automaton/simplify/Trim.h index 2cb8fd2b5f..2cd0c10aea 100644 --- a/alib2algo/src/automaton/simplify/Trim.h +++ b/alib2algo/src/automaton/simplify/Trim.h @@ -6,7 +6,7 @@ */ #ifndef AUTOMATON_TRIM_H_ -#define AUTOMAONT_TRIM_H_ +#define AUTOMATON_TRIM_H_ #include <algorithm> #include <deque> @@ -19,6 +19,7 @@ namespace simplify { class Trim : public automaton::VisitableAutomatonBase::const_visitor_type { public: + Trim() {} static automaton::Automaton trim( const automaton::Automaton & automaton ); /** diff --git a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h index b584132dda..9a7877f3f3 100644 --- a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h +++ b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h @@ -19,6 +19,8 @@ namespace simplify { class UnreachableStatesRemover : public automaton::VisitableAutomatonBase::const_visitor_type { public: + UnreachableStatesRemover() {} + static automaton::Automaton remove( const automaton::Automaton & automaton ); /** diff --git a/alib2algo/src/automaton/simplify/UselessStatesRemover.h b/alib2algo/src/automaton/simplify/UselessStatesRemover.h index 38c8662632..1b18987c30 100644 --- a/alib2algo/src/automaton/simplify/UselessStatesRemover.h +++ b/alib2algo/src/automaton/simplify/UselessStatesRemover.h @@ -19,6 +19,8 @@ namespace simplify { class UselessStatesRemover : public automaton::VisitableAutomatonBase::const_visitor_type { public: + UselessStatesRemover() {} + static automaton::Automaton remove( const automaton::Automaton & automaton ); /** diff --git a/alib2algo/src/automaton/transform/AutomataConcatenation.h b/alib2algo/src/automaton/transform/AutomataConcatenation.h index fb4cdda014..dc1dd54b3f 100644 --- a/alib2algo/src/automaton/transform/AutomataConcatenation.h +++ b/alib2algo/src/automaton/transform/AutomataConcatenation.h @@ -24,6 +24,8 @@ namespace transform class AutomataConcatenation : public automaton::VisitableAutomatonBase::const_promoting_visitor_type { public: + AutomataConcatenation() {} + static automaton::Automaton concatenation(const automaton::Automaton& first, const automaton::Automaton& second); static automaton::NFA concatenation(const automaton::DFA& first, const automaton::DFA& second); diff --git a/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h b/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h index 133b493f7a..e8b27489db 100644 --- a/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h +++ b/alib2algo/src/automaton/transform/AutomataConcatenationEpsilonTransition.h @@ -24,6 +24,8 @@ namespace transform class AutomataConcatenationEpsilonTransition : public automaton::VisitableAutomatonBase::const_promoting_visitor_type { public: + AutomataConcatenationEpsilonTransition() {} + static automaton::Automaton concatenation(const automaton::Automaton& first, const automaton::Automaton& second); static automaton::EpsilonNFA concatenation(const automaton::DFA& first, const automaton::DFA& second); diff --git a/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h b/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h index 2369fda445..5cba54c245 100644 --- a/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h +++ b/alib2algo/src/automaton/transform/AutomataIntersectionCartesianProduct.h @@ -24,6 +24,8 @@ namespace transform class AutomataIntersectionCartesianProduct : public automaton::VisitableAutomatonBase::const_promoting_visitor_type { public: + AutomataIntersectionCartesianProduct() {} + static automaton::Automaton intersection(const automaton::Automaton& first, const automaton::Automaton& second); static automaton::NFA intersection(const automaton::NFA& first, const automaton::NFA& second); diff --git a/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h b/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h index 424f6f39d8..a06aed29c3 100644 --- a/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h +++ b/alib2algo/src/automaton/transform/AutomataUnionCartesianProduct.h @@ -24,6 +24,8 @@ namespace transform class AutomataUnionCartesianProduct : public automaton::VisitableAutomatonBase::const_promoting_visitor_type { public: + AutomataUnionCartesianProduct() {} + static automaton::Automaton unification(const automaton::Automaton& first, const automaton::Automaton& second); static automaton::NFA unification(const automaton::NFA& first, const automaton::NFA& second); diff --git a/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h b/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h index 7a79873aed..c367d1d76a 100644 --- a/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h +++ b/alib2algo/src/automaton/transform/AutomataUnionEpsilonTransition.h @@ -24,6 +24,8 @@ namespace transform class AutomataUnionEpsilonTransition : public automaton::VisitableAutomatonBase::const_promoting_visitor_type { public: + AutomataUnionEpsilonTransition() {} + static automaton::Automaton unification(const automaton::Automaton& first, const automaton::Automaton& second); static automaton::EpsilonNFA unification(const automaton::EpsilonNFA& first, const automaton::EpsilonNFA& second); diff --git a/alib2algo/src/automaton/transform/AutomatonIteration.h b/alib2algo/src/automaton/transform/AutomatonIteration.h index 1a7646abd8..fb7d2728e8 100644 --- a/alib2algo/src/automaton/transform/AutomatonIteration.h +++ b/alib2algo/src/automaton/transform/AutomatonIteration.h @@ -24,6 +24,8 @@ namespace transform class AutomatonIteration : public automaton::VisitableAutomatonBase::const_visitor_type { public: + AutomatonIteration() {} + static automaton::Automaton iteration(const automaton::Automaton& automaton); template<class T> diff --git a/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h b/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h index 80cf82296d..307d6c55fe 100644 --- a/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h +++ b/alib2algo/src/automaton/transform/AutomatonIterationEpsilonTransition.h @@ -24,6 +24,8 @@ namespace transform class AutomatonIterationEpsilonTransition : public automaton::VisitableAutomatonBase::const_visitor_type { public: + AutomatonIterationEpsilonTransition() {} + static automaton::Automaton iteration(const automaton::Automaton& automaton); template<class T> diff --git a/alib2algo/src/automaton/transform/Compaction.h b/alib2algo/src/automaton/transform/Compaction.h index 520ad9a028..e0da50de24 100644 --- a/alib2algo/src/automaton/transform/Compaction.h +++ b/alib2algo/src/automaton/transform/Compaction.h @@ -17,8 +17,10 @@ namespace transform { /** * Transforms FSM to CompactNFA */ -class Compaction : public VisitableConstFSMBase { +class Compaction : public automaton::VisitableConstFSMBase { public: + Compaction() {} + static automaton::CompactNFA convert( const automaton::DFA& automaton); static automaton::CompactNFA convert( const automaton::NFA& automaton); static automaton::CompactNFA convert( const automaton::CompactNFA& automaton); @@ -31,6 +33,8 @@ public: static automaton::Automaton convert( const automaton::Automaton & automaton ); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const CompactNFA& automaton) const; void Visit(void*, const DFA& automaton) const; void Visit(void*, const EpsilonNFA& automaton) const; diff --git a/alib2algo/src/automaton/transform/PDAToRHPDA.h b/alib2algo/src/automaton/transform/PDAToRHPDA.h index d0fa1a715a..504043797d 100644 --- a/alib2algo/src/automaton/transform/PDAToRHPDA.h +++ b/alib2algo/src/automaton/transform/PDAToRHPDA.h @@ -17,8 +17,10 @@ namespace automaton { -class PDAToRHPDA : public VisitableConstPDABase { +class PDAToRHPDA : public automaton::VisitableConstPDABase { public: + PDAToRHPDA() {} + static automaton::RealTimeHeightDeterministicDPDA convert( const automaton::RealTimeHeightDeterministicDPDA & pda); static automaton::RealTimeHeightDeterministicDPDA convert( const automaton::DPDA & pda); static automaton::RealTimeHeightDeterministicNPDA convert( const automaton::RealTimeHeightDeterministicNPDA & pda); @@ -29,6 +31,8 @@ public: */ static automaton::Automaton convert( const automaton::Automaton & automaton ); private: + using automaton::VisitableConstPDABase::Visit; + void Visit(void*, const DPDA& automaton) const; void Visit(void*, const SinglePopDPDA& automaton) const; void Visit(void*, const InputDrivenNPDA& automaton) const; diff --git a/alib2algo/src/automaton/transform/RHPDAToPDA.h b/alib2algo/src/automaton/transform/RHPDAToPDA.h index ece6eb275c..fe256487c7 100644 --- a/alib2algo/src/automaton/transform/RHPDAToPDA.h +++ b/alib2algo/src/automaton/transform/RHPDAToPDA.h @@ -19,6 +19,8 @@ namespace automaton { class RHPDAToPDA : public VisitableConstPDABase { public: + RHPDAToPDA() {} + static automaton::DPDA convert( const automaton::RealTimeHeightDeterministicDPDA & pda); static automaton::DPDA convert( const automaton::DPDA & pda); static automaton::NPDA convert( const automaton::RealTimeHeightDeterministicNPDA & pda); @@ -29,6 +31,8 @@ public: */ static automaton::Automaton convert( const automaton::Automaton & automaton ); private: + using automaton::VisitableConstPDABase::Visit; + void Visit(void*, const DPDA& automaton) const; void Visit(void*, const SinglePopDPDA& automaton) const; void Visit(void*, const InputDrivenDPDA& automaton) const; diff --git a/alib2algo/src/automaton/transform/Reverse.h b/alib2algo/src/automaton/transform/Reverse.h index c8528d9091..de596f31a5 100644 --- a/alib2algo/src/automaton/transform/Reverse.h +++ b/alib2algo/src/automaton/transform/Reverse.h @@ -15,8 +15,10 @@ namespace automaton { namespace transform { -class Reverse : public VisitableConstFSMBase { +class Reverse : public automaton::VisitableConstFSMBase { public: + Reverse() {} + static automaton::MultiInitialStateNFA convert(const automaton::DFA& automaton); static automaton::MultiInitialStateNFA convert(const automaton::NFA& automaton); static automaton::MultiInitialStateNFA convert(const automaton::MultiInitialStateNFA& automaton); @@ -28,6 +30,8 @@ public: */ static automaton::Automaton convert( const automaton::Automaton & automaton ); private: + using automaton::VisitableConstFSMBase::Visit; + void Visit(void*, const DFA& automaton) const; void Visit(void*, const NFA& automaton) const; void Visit(void*, const MultiInitialStateNFA& automaton) const; diff --git a/alib2algo/src/common/StringContainerConverter.hpp b/alib2algo/src/common/StringContainerConverter.hpp index e37a80ef87..ec62386e92 100644 --- a/alib2algo/src/common/StringContainerConverter.hpp +++ b/alib2algo/src/common/StringContainerConverter.hpp @@ -23,6 +23,8 @@ namespace common { template<class R, class S, class T> class StringContainerConverter : public string::VisitableStringBase::const_visitor_type { public: + StringContainerConverter() {} + /** * Performs conversion from contaier<String> to container<T>. * @return container<T>. @@ -61,7 +63,7 @@ inline void VisitHelper(void* data, const string::Epsilon& text) { template<class R, class S, class T, typename std::enable_if< ! std::is_constructible<T, string::Epsilon>::value >::type* = nullptr > -inline void VisitHelper(void* data, const string::Epsilon& text) { +inline void VisitHelper(void*, const string::Epsilon&) { throw exception::AlibException("Unsupported string type Epsilon"); } @@ -81,7 +83,7 @@ inline void VisitHelper(void* data, const string::LinearString& text) { template<class R, class S, class T, typename std::enable_if< ! std::is_constructible<T, string::LinearString>::value >::type* = nullptr > -inline void VisitHelper(void* data, const string::LinearString& text) { +inline void VisitHelper(void*, const string::LinearString&) { throw exception::AlibException("Unsupported string type LinearString"); } diff --git a/alib2algo/src/grammar/convert/ToAutomaton.h b/alib2algo/src/grammar/convert/ToAutomaton.h index aeea0edfbc..4fba464c35 100644 --- a/alib2algo/src/grammar/convert/ToAutomaton.h +++ b/alib2algo/src/grammar/convert/ToAutomaton.h @@ -25,6 +25,8 @@ namespace convert { */ class ToAutomaton : public grammar::VisitableGrammarBase::const_visitor_type { public: + ToAutomaton() {} + /** * Performs conversion. * @param grammar Regular grammar to convert. diff --git a/alib2algo/src/grammar/convert/ToGrammarLeftRG.h b/alib2algo/src/grammar/convert/ToGrammarLeftRG.h index 58648f091a..19212cb58e 100644 --- a/alib2algo/src/grammar/convert/ToGrammarLeftRG.h +++ b/alib2algo/src/grammar/convert/ToGrammarLeftRG.h @@ -2,7 +2,7 @@ * ToGrammarLeftRG.h * * Created on: 8. 3. 2014 - * Author: Tomas Pecka + * Author: Tomas Pecka */ #ifndef TO_GRAMMAR_LEFT_RG_H_ @@ -22,21 +22,25 @@ namespace convert { class ToGrammarLeftRG : public grammar::VisitableConstRGBase { public: - /** - * Performs conversion. - * @param grammar Right regular grammar to convert - * @return left regular grammar which is equivalent to source right regular grammar. - */ - static grammar::LeftRG convert(const grammar::Grammar& grammar); - static grammar::LeftRG convert(const grammar::RightRG& grammar); + ToGrammarLeftRG() {} + + /** + * Performs conversion. + * @param grammar Right regular grammar to convert + * @return left regular grammar which is equivalent to source right regular grammar. + */ + static grammar::LeftRG convert(const grammar::Grammar& grammar); + static grammar::LeftRG convert(const grammar::RightRG& grammar); private: - void Visit(void*, const grammar::RightRG& grammar) const; - void Visit(void*, const grammar::LeftRG& grammar) const; - void Visit(void*, const grammar::RightLG& grammar) const; - void Visit(void*, const grammar::LeftLG& grammar) const; + using grammar::VisitableConstRGBase::Visit; + + void Visit(void*, const grammar::RightRG& grammar) const; + void Visit(void*, const grammar::LeftRG& grammar) const; + void Visit(void*, const grammar::RightLG& grammar) const; + void Visit(void*, const grammar::LeftLG& grammar) const; - static const ToGrammarLeftRG TO_GRAMMAR_LEFT_RG; + static const ToGrammarLeftRG TO_GRAMMAR_LEFT_RG; }; } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToGrammarRightRG.h b/alib2algo/src/grammar/convert/ToGrammarRightRG.h index 468b72aa3a..99bc56b535 100644 --- a/alib2algo/src/grammar/convert/ToGrammarRightRG.h +++ b/alib2algo/src/grammar/convert/ToGrammarRightRG.h @@ -2,7 +2,7 @@ * ToGrammarRightRG.h * * Created on: 8. 3. 2014 - * Author: Tomas Pecka + * Author: Tomas Pecka */ #ifndef TO_GRAMMAR_RIGHT_RG_H_ @@ -22,21 +22,25 @@ namespace convert { class ToGrammarRightRG : public grammar::VisitableConstRGBase { public: - /** - * Performs conversion. - * @param grammar Left regular grammar to convert - * @return right regular grammar which is equivalent to source left regular grammar. - */ - static grammar::RightRG convert(const grammar::Grammar& grammar); - static grammar::RightRG convert(const grammar::LeftRG& grammar); + ToGrammarRightRG() {} + + /** + * Performs conversion. + * @param grammar Left regular grammar to convert + * @return right regular grammar which is equivalent to source left regular grammar. + */ + static grammar::RightRG convert(const grammar::Grammar& grammar); + static grammar::RightRG convert(const grammar::LeftRG& grammar); private: - void Visit(void*, const grammar::RightRG& grammar) const; - void Visit(void*, const grammar::LeftRG& grammar) const; - void Visit(void*, const grammar::RightLG& grammar) const; - void Visit(void*, const grammar::LeftLG& grammar) const; + using grammar::VisitableConstRGBase::Visit; + + void Visit(void*, const grammar::RightRG& grammar) const; + void Visit(void*, const grammar::LeftRG& grammar) const; + void Visit(void*, const grammar::RightLG& grammar) const; + void Visit(void*, const grammar::LeftLG& grammar) const; - static const ToGrammarRightRG TO_GRAMMAR_RIGHT_RG; + static const ToGrammarRightRG TO_GRAMMAR_RIGHT_RG; }; } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToRegExp.cpp b/alib2algo/src/grammar/convert/ToRegExp.cpp index fe2696f7f4..7f6d8587db 100644 --- a/alib2algo/src/grammar/convert/ToRegExp.cpp +++ b/alib2algo/src/grammar/convert/ToRegExp.cpp @@ -44,42 +44,6 @@ void ToRegExp::Visit(void*, const grammar::LeftLG&) const throw exception::AlibException("Unsupported grammar type LeftLG"); } -void ToRegExp::Visit(void*, const grammar::LG& ) const { - throw exception::AlibException("Unsupported grammar type LG"); -} - -void ToRegExp::Visit(void*, const grammar::CFG& ) const { - throw exception::AlibException("Unsupported grammar type CFG"); -} - -void ToRegExp::Visit(void*, const grammar::EpsilonFreeCFG& ) const { - throw exception::AlibException("Unsupported grammar type EpsilonFreeCFG"); -} - -void ToRegExp::Visit(void*, const grammar::CNF& ) const { - throw exception::AlibException("Unsupported grammar type CFG"); -} - -void ToRegExp::Visit(void*, const grammar::GNF& ) const { - throw exception::AlibException("Unsupported grammar type GNF"); -} - -void ToRegExp::Visit(void*, const grammar::CSG&) const { - throw exception::AlibException("Unsupported grammar type CSG"); -} - -void ToRegExp::Visit(void*, const grammar::NonContractingGrammar&) const { - throw exception::AlibException("Unsupported grammar type NonConctractingGrammar"); -} - -void ToRegExp::Visit(void*, const grammar::ContextPreservingUnrestrictedGrammar&) const { - throw exception::AlibException("Unsupported grammar type ContextPreservingUnrestrictedGrammar"); -} - -void ToRegExp::Visit(void*, const grammar::UnrestrictedGrammar&) const { - throw exception::AlibException("Unsupported grammar type UnrestrictedGrammar"); -} - const ToRegExp ToRegExp::TO_REG_EXP; } /* namespace convert */ diff --git a/alib2algo/src/grammar/convert/ToRegExp.h b/alib2algo/src/grammar/convert/ToRegExp.h index aace07b45d..02acd08001 100644 --- a/alib2algo/src/grammar/convert/ToRegExp.h +++ b/alib2algo/src/grammar/convert/ToRegExp.h @@ -21,6 +21,8 @@ namespace convert { class ToRegExp : public grammar::VisitableConstRGBase { public: + ToRegExp() {} + /** * @return regexp equivalent to source right regular grammar. * @param grammar Grammar to convert @@ -28,19 +30,12 @@ public: static regexp::RegExp convert(const grammar::Grammar& grammar); protected: + using grammar::VisitableConstRGBase::Visit; + void Visit(void*, const grammar::RightRG& grammar) const; void Visit(void*, const grammar::LeftRG& grammar) const; void Visit(void*, const grammar::RightLG& grammar) const; void Visit(void*, const grammar::LeftLG& grammar) const; - void Visit(void*, const grammar::LG& grammar) const; - void Visit(void*, const grammar::CFG& grammar) const; - void Visit(void*, const grammar::EpsilonFreeCFG& grammar) const; - void Visit(void*, const grammar::CNF& grammar) const; - void Visit(void*, const grammar::GNF& grammar) const; - void Visit(void*, const grammar::CSG& grammar) const; - void Visit(void*, const grammar::NonContractingGrammar& grammar) const; - void Visit(void*, const grammar::ContextPreservingUnrestrictedGrammar& grammar) const; - void Visit(void*, const grammar::UnrestrictedGrammar& grammar) const; static const ToRegExp TO_REG_EXP; }; diff --git a/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h b/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h index 3370fc3dfd..ff75ab962b 100644 --- a/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h +++ b/alib2algo/src/grammar/convert/ToRegExpAlgebraic.h @@ -2,7 +2,7 @@ * ToRegExpAlgebraic.h * * Created on: 4. 3. 2014 - * Author: Tomas Pecka + * Author: Tomas Pecka */ #ifndef GRAMMAR_TO_REG_EXP_ALGEBRAIC_H_ @@ -21,22 +21,26 @@ namespace convert { class ToRegExpAlgebraic : public grammar::VisitableConstRGBase { public: - /** - * @return regexp equivalent to source right regular grammar. - * @param grammar Grammar to convert - */ - static regexp::RegExp convert(const grammar::Grammar& grammar); + ToRegExpAlgebraic() {} - static regexp::RegExp convert(const grammar::RightRG& grammar); - static regexp::RegExp convert(const grammar::LeftRG& grammar); + /** + * @return regexp equivalent to source right regular grammar. + * @param grammar Grammar to convert + */ + static regexp::RegExp convert(const grammar::Grammar& grammar); + + static regexp::RegExp convert(const grammar::RightRG& grammar); + static regexp::RegExp convert(const grammar::LeftRG& grammar); protected: - void Visit(void*, const grammar::RightRG& grammar) const; - void Visit(void*, const grammar::LeftRG& grammar) const; - void Visit(void*, const grammar::RightLG& grammar) const; - void Visit(void*, const grammar::LeftLG& grammar) const; + using grammar::VisitableConstRGBase::Visit; + + void Visit(void*, const grammar::RightRG& grammar) const; + void Visit(void*, const grammar::LeftRG& grammar) const; + void Visit(void*, const grammar::RightLG& grammar) const; + void Visit(void*, const grammar::LeftLG& grammar) const; - static const ToRegExpAlgebraic TO_REG_EXP_ALGEBRAIC; + static const ToRegExpAlgebraic TO_REG_EXP_ALGEBRAIC; }; } /* namespace covert */ diff --git a/alib2algo/src/grammar/generate/GenerateUpToLength.h b/alib2algo/src/grammar/generate/GenerateUpToLength.h index 4b89f67fbf..26b2d1fc8b 100644 --- a/alib2algo/src/grammar/generate/GenerateUpToLength.h +++ b/alib2algo/src/grammar/generate/GenerateUpToLength.h @@ -21,6 +21,8 @@ namespace generate { */ class GenerateUpToLength : public grammar::VisitableGrammarBase::const_visitor_type { public: + GenerateUpToLength() {} + static std::set<string::LinearString> generate( const grammar::Grammar & grammar, unsigned length ); template<class T> diff --git a/alib2algo/src/grammar/properties/IsLanguageEmpty.h b/alib2algo/src/grammar/properties/IsLanguageEmpty.h index ccfd0b6004..0921e4f4ad 100644 --- a/alib2algo/src/grammar/properties/IsLanguageEmpty.h +++ b/alib2algo/src/grammar/properties/IsLanguageEmpty.h @@ -19,6 +19,8 @@ namespace properties { */ class IsLanguageEmpty : public grammar::VisitableGrammarBase::const_visitor_type { public: + IsLanguageEmpty() {} + static bool isLanguageEmpty( const grammar::Grammar & grammar ); /* diff --git a/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h b/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h index 0eb20a7505..ef87b98b7c 100644 --- a/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h +++ b/alib2algo/src/grammar/properties/IsLanguageGeneratingEpsilon.h @@ -19,6 +19,8 @@ namespace properties { */ class IsLanguageGeneratingEpsilon : public grammar::VisitableGrammarBase::const_visitor_type { public: + IsLanguageGeneratingEpsilon() {} + static bool isLanguageGeneratingEpsilon( const grammar::Grammar & grammar ); /* diff --git a/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h b/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h index 0d64caae30..c5802dc48d 100644 --- a/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h +++ b/alib2algo/src/grammar/properties/NonterminalUnitRuleCycle.h @@ -20,6 +20,8 @@ namespace properties { */ class NonterminalUnitRuleCycle : public grammar::VisitableGrammarBase::const_visitor_type { public: + NonterminalUnitRuleCycle() {} + static std::set<alphabet::Symbol> getNonterminalUnitRuleCycle( const grammar::Grammar & grammar, const alphabet::Symbol& nonterminal ); /** diff --git a/alib2algo/src/grammar/properties/NullableNonterminals.h b/alib2algo/src/grammar/properties/NullableNonterminals.h index 7c55b69614..85e47beb54 100644 --- a/alib2algo/src/grammar/properties/NullableNonterminals.h +++ b/alib2algo/src/grammar/properties/NullableNonterminals.h @@ -20,6 +20,8 @@ namespace properties { */ class NullableNonterminals : public grammar::VisitableGrammarBase::const_visitor_type { public: + NullableNonterminals() {} + static std::set<alphabet::Symbol> getNullableNonterminals( const grammar::Grammar & grammar ); /** diff --git a/alib2algo/src/grammar/properties/ProductiveNonterminals.h b/alib2algo/src/grammar/properties/ProductiveNonterminals.h index 317b51cd28..688c011f06 100644 --- a/alib2algo/src/grammar/properties/ProductiveNonterminals.h +++ b/alib2algo/src/grammar/properties/ProductiveNonterminals.h @@ -20,6 +20,8 @@ namespace properties { */ class ProductiveNonterminals : public grammar::VisitableGrammarBase::const_visitor_type { public: + ProductiveNonterminals() {} + static std::set<alphabet::Symbol> getProductiveNonterminals( const grammar::Grammar & grammar ); /** diff --git a/alib2algo/src/grammar/properties/UnreachableSymbols.h b/alib2algo/src/grammar/properties/UnreachableSymbols.h index 3c9bbf976d..a77f3421e2 100644 --- a/alib2algo/src/grammar/properties/UnreachableSymbols.h +++ b/alib2algo/src/grammar/properties/UnreachableSymbols.h @@ -20,6 +20,8 @@ namespace properties { */ class UnreachableSymbols : public grammar::VisitableGrammarBase::const_visitor_type { public: + UnreachableSymbols() {} + static std::set<alphabet::Symbol> getUnreachableSymbols( const grammar::Grammar & grammar ); /** diff --git a/alib2algo/src/grammar/simplify/EpsilonRemover.h b/alib2algo/src/grammar/simplify/EpsilonRemover.h index e67dae4143..dd4a59cfdb 100644 --- a/alib2algo/src/grammar/simplify/EpsilonRemover.h +++ b/alib2algo/src/grammar/simplify/EpsilonRemover.h @@ -30,6 +30,8 @@ namespace simplify { class EpsilonRemover : public grammar::VisitableGrammarBase::const_visitor_type { public: + EpsilonRemover() {} + static grammar::Grammar remove( const grammar::Grammar & grammar ); static grammar::EpsilonFreeCFG remove( const grammar::CFG & grammar ); diff --git a/alib2algo/src/grammar/simplify/LeftRecursionRemover.h b/alib2algo/src/grammar/simplify/LeftRecursionRemover.h index f4877c9bb6..9b21ec1645 100644 --- a/alib2algo/src/grammar/simplify/LeftRecursionRemover.h +++ b/alib2algo/src/grammar/simplify/LeftRecursionRemover.h @@ -30,6 +30,8 @@ namespace simplify { class LeftRecursionRemover : public grammar::VisitableGrammarBase::const_visitor_type { public: + LeftRecursionRemover() {} + static grammar::Grammar remove( const grammar::Grammar & grammar ); static grammar::EpsilonFreeCFG remove( const grammar::EpsilonFreeCFG & grammar ); diff --git a/alib2algo/src/grammar/simplify/SimpleRulesRemover.h b/alib2algo/src/grammar/simplify/SimpleRulesRemover.h index 05c1fa88e4..0f29d0c0d0 100644 --- a/alib2algo/src/grammar/simplify/SimpleRulesRemover.h +++ b/alib2algo/src/grammar/simplify/SimpleRulesRemover.h @@ -30,6 +30,8 @@ namespace simplify { class SimpleRulesRemover : public grammar::VisitableGrammarBase::const_visitor_type { public: + SimpleRulesRemover() {} + static grammar::Grammar remove( const grammar::Grammar & grammar ); static grammar::CFG remove( const grammar::CFG & grammar ); diff --git a/alib2algo/src/grammar/simplify/ToCNF.h b/alib2algo/src/grammar/simplify/ToCNF.h index 485a076e16..55f85daa8a 100644 --- a/alib2algo/src/grammar/simplify/ToCNF.h +++ b/alib2algo/src/grammar/simplify/ToCNF.h @@ -30,6 +30,8 @@ namespace simplify { class ToCNF : public grammar::VisitableGrammarBase::const_visitor_type { public: + ToCNF() {} + static grammar::Grammar convert( const grammar::Grammar & grammar ); static grammar::CNF convert( const grammar::CFG & grammar ); diff --git a/alib2algo/src/grammar/simplify/ToGNF.cpp b/alib2algo/src/grammar/simplify/ToGNF.cpp index 71b34b7e17..6507b2f5e9 100644 --- a/alib2algo/src/grammar/simplify/ToGNF.cpp +++ b/alib2algo/src/grammar/simplify/ToGNF.cpp @@ -14,8 +14,6 @@ #include "alphabet/LabeledSymbol.h" #include "alphabet/SymbolPairSymbol.h" -#include <factory/StringDataFactory.hpp> - namespace grammar { namespace simplify { diff --git a/alib2algo/src/grammar/simplify/ToGNF.h b/alib2algo/src/grammar/simplify/ToGNF.h index 87d9f30a20..764b4a6919 100644 --- a/alib2algo/src/grammar/simplify/ToGNF.h +++ b/alib2algo/src/grammar/simplify/ToGNF.h @@ -30,6 +30,8 @@ namespace simplify { class ToGNF : public grammar::VisitableGrammarBase::const_visitor_type { public: + ToGNF() {} + static grammar::Grammar convert( const grammar::Grammar & grammar ); static grammar::GNF convert( const grammar::CFG & grammar ); diff --git a/alib2algo/src/grammar/simplify/Trim.h b/alib2algo/src/grammar/simplify/Trim.h index 25cb46cdd3..2c288411ed 100644 --- a/alib2algo/src/grammar/simplify/Trim.h +++ b/alib2algo/src/grammar/simplify/Trim.h @@ -19,6 +19,8 @@ namespace simplify { */ class Trim : public grammar::VisitableGrammarBase::const_visitor_type { public: + Trim() {} + static grammar::Grammar trim( const grammar::Grammar & grammar ); /** diff --git a/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h b/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h index de8a17830e..d821b30863 100644 --- a/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h +++ b/alib2algo/src/grammar/simplify/UnproductiveSymbolsRemover.h @@ -25,6 +25,8 @@ namespace simplify { */ class UnproductiveSymbolsRemover : public grammar::VisitableGrammarBase::const_visitor_type { public: + UnproductiveSymbolsRemover() {} + static grammar::Grammar remove( const grammar::Grammar & automaton ); /** diff --git a/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h b/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h index 1144d510cc..18ef5dc502 100644 --- a/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h +++ b/alib2algo/src/grammar/simplify/UnreachableSymbolsRemover.h @@ -25,6 +25,8 @@ namespace simplify { */ class UnreachableSymbolsRemover : public grammar::VisitableGrammarBase::const_visitor_type { public: + UnreachableSymbolsRemover() {} + static grammar::Grammar remove( const grammar::Grammar & automaton ); /* diff --git a/alib2algo/src/graph/shortestpath/BellmanFord.h b/alib2algo/src/graph/shortestpath/BellmanFord.h index 1c117f6a40..730175966d 100644 --- a/alib2algo/src/graph/shortestpath/BellmanFord.h +++ b/alib2algo/src/graph/shortestpath/BellmanFord.h @@ -21,6 +21,8 @@ namespace shortestpath class BellmanFord : public graph::VisitableGraphBase::const_visitor_type { public: + BellmanFord() {} + typedef std::unordered_map<Node, int> Result; static Result bellmanford(const Graph &graph, const Node &start); diff --git a/alib2algo/src/graph/shortestpath/Dijkstra.h b/alib2algo/src/graph/shortestpath/Dijkstra.h index d9373e3ca3..52cf36902b 100644 --- a/alib2algo/src/graph/shortestpath/Dijkstra.h +++ b/alib2algo/src/graph/shortestpath/Dijkstra.h @@ -18,6 +18,8 @@ namespace shortestpath class Dijkstra : public graph::VisitableGraphBase::const_visitor_type { public: + Dijkstra() {} + typedef std::unordered_map<Node, int> Result; static Result dijkstra(const Graph &graph, const Node &start); diff --git a/alib2algo/src/graph/shortestpath/FloydWarshall.h b/alib2algo/src/graph/shortestpath/FloydWarshall.h index f9a7ab1855..bbc16ca708 100644 --- a/alib2algo/src/graph/shortestpath/FloydWarshall.h +++ b/alib2algo/src/graph/shortestpath/FloydWarshall.h @@ -22,6 +22,8 @@ namespace shortestpath class FloydWarshall : public graph::VisitableGraphBase::const_visitor_type { public: + FloydWarshall() {} + typedef std::unordered_map<Node, std::unordered_map<Node, int>> Result; static Result floydwarshall(const Graph &graph); diff --git a/alib2algo/src/graph/sort/TopologicalSort.h b/alib2algo/src/graph/sort/TopologicalSort.h index ec30472bc7..b746cb2bd5 100644 --- a/alib2algo/src/graph/sort/TopologicalSort.h +++ b/alib2algo/src/graph/sort/TopologicalSort.h @@ -16,6 +16,8 @@ namespace sort class TopologicalSort : public graph::VisitableGraphBase::const_visitor_type { public: + TopologicalSort() {} + typedef std::list<Node> Result; static Result topologicalsort(const Graph &graph); diff --git a/alib2algo/src/graph/spanningtree/JarnikPrim.h b/alib2algo/src/graph/spanningtree/JarnikPrim.h index cf1273514f..8b8d11e24b 100644 --- a/alib2algo/src/graph/spanningtree/JarnikPrim.h +++ b/alib2algo/src/graph/spanningtree/JarnikPrim.h @@ -14,6 +14,8 @@ namespace spanningtree class JarnikPrim : public graph::VisitableGraphBase::const_visitor_type { public: + JarnikPrim() {} + static Graph jarnikprim(const Graph &graph, const Node &start); static UndirectedGraph jarnikprim(const UndirectedGraph &graph, const Node &start); diff --git a/alib2algo/src/graph/traverse/Bfs.h b/alib2algo/src/graph/traverse/Bfs.h index f4a468bfe9..c180b1a323 100644 --- a/alib2algo/src/graph/traverse/Bfs.h +++ b/alib2algo/src/graph/traverse/Bfs.h @@ -19,6 +19,8 @@ namespace traverse class Bfs : public graph::VisitableGraphBase::const_visitor_type { public: + Bfs() {} + typedef std::function<bool(const Node&)> Function; typedef std::function<bool(const Node&, const Node&, int)> FunctionExt; diff --git a/alib2algo/src/graph/traverse/Dfs.h b/alib2algo/src/graph/traverse/Dfs.h index 7f068d4d3b..532b53ba9d 100644 --- a/alib2algo/src/graph/traverse/Dfs.h +++ b/alib2algo/src/graph/traverse/Dfs.h @@ -19,6 +19,8 @@ namespace traverse class Dfs : public graph::VisitableGraphBase::const_visitor_type { public: + Dfs() {} + typedef std::function<bool(const Node&)> Function; typedef std::function<bool(const Node&, const Node&, int, int)> FunctionExt; diff --git a/alib2algo/src/regexp/GlushkovSymbol.cpp b/alib2algo/src/regexp/GlushkovSymbol.cpp index eebd332357..0be8280ad5 100644 --- a/alib2algo/src/regexp/GlushkovSymbol.cpp +++ b/alib2algo/src/regexp/GlushkovSymbol.cpp @@ -7,9 +7,6 @@ #include "GlushkovSymbol.h" -using namespace alphabet; -using namespace regexp; - namespace regexp { @@ -29,9 +26,9 @@ int GlushkovSymbol::getId( void ) const return m_i; } -Symbol GlushkovSymbol::getInputSymbol( void ) const +alphabet::Symbol GlushkovSymbol::getInputSymbol( void ) const { - return Symbol( m_regexpSymbol->getSymbol( ) ); + return alphabet::Symbol( m_regexpSymbol->getSymbol( ) ); } regexp::UnboundedRegExpSymbol const * GlushkovSymbol::getSymbolPtr( void ) const diff --git a/alib2algo/src/regexp/GlushkovTraversal.cpp b/alib2algo/src/regexp/GlushkovTraversal.cpp index 07060c8d35..fa7c5bec08 100644 --- a/alib2algo/src/regexp/GlushkovTraversal.cpp +++ b/alib2algo/src/regexp/GlushkovTraversal.cpp @@ -9,10 +9,6 @@ #include "properties/RegExpEpsilon.h" -using namespace alib; -using namespace regexp; -using namespace std; - namespace regexp { @@ -33,9 +29,9 @@ bool GlushkovTraversal::pos( GlushkovSymbol const& symbol, regexp::UnboundedRegE return pos( & node->getRegExp(), symbol.getSymbolPtr( ) ); } -set<GlushkovSymbol> GlushkovTraversal::first( regexp::UnboundedRegExp const& re ) +std::set<GlushkovSymbol> GlushkovTraversal::first( regexp::UnboundedRegExp const& re ) { - set<GlushkovSymbol> firstSet, symbolSet = getSymbols( re ); + std::set<GlushkovSymbol> firstSet, symbolSet = getSymbols( re ); for( auto const& s : first( & re.getRegExp() ) ) firstSet.insert( findSymbol( s, symbolSet ) ); @@ -43,9 +39,9 @@ set<GlushkovSymbol> GlushkovTraversal::first( regexp::UnboundedRegExp const& re return firstSet; } -set<GlushkovSymbol> GlushkovTraversal::last( regexp::UnboundedRegExp const& re ) +std::set<GlushkovSymbol> GlushkovTraversal::last( regexp::UnboundedRegExp const& re ) { - set<GlushkovSymbol> lastSet, symbolSet = getSymbols( re ); + std::set<GlushkovSymbol> lastSet, symbolSet = getSymbols( re ); for( auto const& s : last( & re.getRegExp() ) ) lastSet.insert( findSymbol( s, symbolSet ) ); @@ -53,9 +49,9 @@ set<GlushkovSymbol> GlushkovTraversal::last( regexp::UnboundedRegExp const& re ) return lastSet; } -set<GlushkovSymbol> GlushkovTraversal::follow( regexp::UnboundedRegExp const& re, GlushkovSymbol const& symbol ) +std::set<GlushkovSymbol> GlushkovTraversal::follow( regexp::UnboundedRegExp const& re, GlushkovSymbol const& symbol ) { - set<GlushkovSymbol> followSet, symbolSet = getSymbols( re ); + std::set<GlushkovSymbol> followSet, symbolSet = getSymbols( re ); for( auto const& s: follow( & re.getRegExp(), symbol.getSymbolPtr( ) ) ) followSet.insert( findSymbol( s, symbolSet ) ); @@ -65,7 +61,7 @@ set<GlushkovSymbol> GlushkovTraversal::follow( regexp::UnboundedRegExp const& re // ----------------------------------------------------------------------------- -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpElement const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpElement const * const & node ) { regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node ); regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node ); @@ -90,9 +86,9 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::Unb throw exception::AlibException( "GlushkovTraversal::first - invalid RegExpElement node" ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpAlternation const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpAlternation const * const & node ) { - set<regexp::UnboundedRegExpSymbol const *> ret, tmp; + std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp; for( auto const& element : node->getElements( ) ) { @@ -103,9 +99,9 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::Unb return ret; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpConcatenation const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpConcatenation const * const & node ) { - set<regexp::UnboundedRegExpSymbol const *> ret, tmp; + std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp; for( auto const& element : node->getElements( ) ) { @@ -119,29 +115,29 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::Unb return ret; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpIteration const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpIteration const * const & node ) { return first( & node->getElement( ) ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpSymbol const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpSymbol const * const & node ) { - return set<regexp::UnboundedRegExpSymbol const *> { node }; + return std::set<regexp::UnboundedRegExpSymbol const *> { node }; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEpsilon const * const & /* node */ ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEpsilon const * const & /* node */ ) { - return set<regexp::UnboundedRegExpSymbol const *>( ); + return std::set<regexp::UnboundedRegExpSymbol const *>( ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEmpty const * const & /* node */ ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::first( regexp::UnboundedRegExpEmpty const * const & /* node */ ) { - return set<regexp::UnboundedRegExpSymbol const *>( ); + return std::set<regexp::UnboundedRegExpSymbol const *>( ); } // ---------------------------------------------------------------------------- -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpElement const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpElement const * const & node ) { regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node ); regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node ); @@ -166,22 +162,22 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::Unbo throw exception::AlibException( "GlushkovTraversal::last - invalid RegExpElement node" ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpAlternation const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpAlternation const * const & node ) { - set<regexp::UnboundedRegExpSymbol const *> ret; + std::set<regexp::UnboundedRegExpSymbol const *> ret; for( auto const& element : node->getElements( ) ) { - set<regexp::UnboundedRegExpSymbol const *> tmp = last( element ); + std::set<regexp::UnboundedRegExpSymbol const *> tmp = last( element ); ret.insert( tmp.begin( ), tmp.end( ) ); } return ret; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpConcatenation const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpConcatenation const * const & node ) { - set<regexp::UnboundedRegExpSymbol const *> ret, tmp; + std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp; for( auto it = node->getElements( ).rbegin( ); it != node->getElements( ).rend( ) ; it ++ ) { @@ -195,29 +191,29 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::Unbo return ret; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpIteration const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpIteration const * const & node ) { return last( & node->getElement( ) ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpSymbol const * const & node ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpSymbol const * const & node ) { - return set<regexp::UnboundedRegExpSymbol const *> { node }; + return std::set<regexp::UnboundedRegExpSymbol const *> { node }; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEpsilon const * const & /* node */ ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEpsilon const * const & /* node */ ) { - return set<regexp::UnboundedRegExpSymbol const *>( ); + return std::set<regexp::UnboundedRegExpSymbol const *>( ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEmpty const * const & /* node */ ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::last( regexp::UnboundedRegExpEmpty const * const & /* node */ ) { - return set<regexp::UnboundedRegExpSymbol const *>( ); + return std::set<regexp::UnboundedRegExpSymbol const *>( ); } // ---------------------------------------------------------------------------- -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpElement const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpElement const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) { regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node ); regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node ); @@ -247,7 +243,7 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::Un throw exception::AlibException( "GlushkovTraversal::follow() - unknown RegExpElement node" ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpAlternation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpAlternation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) { for( auto const& element : node->getElements( ) ) if( pos( element, symbolptr ) ) @@ -256,9 +252,9 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::Un throw exception::AlibException( "GlushkovTraversal::follow(Alt)" ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpConcatenation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpConcatenation const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) { - set<regexp::UnboundedRegExpSymbol const *> ret, tmp, lastSet; + std::set<regexp::UnboundedRegExpSymbol const *> ret, tmp, lastSet; for( auto e = node->getElements( ).begin( ); e != node->getElements( ).end( ); e ++ ) { @@ -284,33 +280,33 @@ set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::Un return ret; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpIteration const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpIteration const * const & node, regexp::UnboundedRegExpSymbol const * const & symbolptr ) { - set<regexp::UnboundedRegExpSymbol const *> ret = follow( & node->getElement( ), symbolptr ); - set<regexp::UnboundedRegExpSymbol const *> lastSet = last( & node->getElement( ) ); + std::set<regexp::UnboundedRegExpSymbol const *> ret = follow( & node->getElement( ), symbolptr ); + std::set<regexp::UnboundedRegExpSymbol const *> lastSet = last( & node->getElement( ) ); if( isInSet( symbolptr, lastSet ) ) { - set<regexp::UnboundedRegExpSymbol const *> firstSet = first( & node->getElement( ) ); + std::set<regexp::UnboundedRegExpSymbol const *> firstSet = first( & node->getElement( ) ); ret.insert( firstSet.begin( ), firstSet.end( ) ); } return ret; } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpSymbol const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpSymbol const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ ) { - return set<regexp::UnboundedRegExpSymbol const *>( ); + return std::set<regexp::UnboundedRegExpSymbol const *>( ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEmpty const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEmpty const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ ) { - return set<regexp::UnboundedRegExpSymbol const *>( ); + return std::set<regexp::UnboundedRegExpSymbol const *>( ); } -set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEpsilon const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ ) +std::set<regexp::UnboundedRegExpSymbol const *> GlushkovTraversal::follow( regexp::UnboundedRegExpEpsilon const * const & /* node */, regexp::UnboundedRegExpSymbol const * const & /* symbolptr */ ) { - return set<regexp::UnboundedRegExpSymbol const *>( ); + return std::set<regexp::UnboundedRegExpSymbol const *>( ); } // ---------------------------------------------------------------------------- @@ -383,9 +379,9 @@ bool GlushkovTraversal::pos( regexp::UnboundedRegExpEpsilon const * const & /* n // ---------------------------------------------------------------------------- -set<GlushkovSymbol> GlushkovTraversal::getSymbols( regexp::UnboundedRegExp const& re ) +std::set<GlushkovSymbol> GlushkovTraversal::getSymbols( regexp::UnboundedRegExp const& re ) { - set<GlushkovSymbol> alphabet; + std::set<GlushkovSymbol> alphabet; int i = 1; getSymbols( & re.getRegExp( ), alphabet, i ); @@ -393,7 +389,7 @@ set<GlushkovSymbol> GlushkovTraversal::getSymbols( regexp::UnboundedRegExp const return alphabet; } -void GlushkovTraversal::getSymbols( regexp::UnboundedRegExpElement const * const & node, set<GlushkovSymbol> & alphabet, int & i ) +void GlushkovTraversal::getSymbols( regexp::UnboundedRegExpElement const * const & node, std::set<GlushkovSymbol> & alphabet, int & i ) { regexp::UnboundedRegExpAlternation const * const alternation = dynamic_cast<regexp::UnboundedRegExpAlternation const * const>( node ); regexp::UnboundedRegExpConcatenation const * const concatenation = dynamic_cast<regexp::UnboundedRegExpConcatenation const * const>( node ); diff --git a/alib2algo/src/regexp/convert/ToAutomaton.h b/alib2algo/src/regexp/convert/ToAutomaton.h index 9894aff997..9e52611d37 100644 --- a/alib2algo/src/regexp/convert/ToAutomaton.h +++ b/alib2algo/src/regexp/convert/ToAutomaton.h @@ -22,6 +22,8 @@ namespace convert { class ToAutomaton : public regexp::VisitableRegExpBase::const_visitor_type { public: + ToAutomaton() {} + /** * Performs conversion. * @return FSM equivalent to original regular expression. diff --git a/alib2algo/src/regexp/convert/ToAutomatonDerivation.h b/alib2algo/src/regexp/convert/ToAutomatonDerivation.h index 7b26ff65f4..2c25d32cc1 100644 --- a/alib2algo/src/regexp/convert/ToAutomatonDerivation.h +++ b/alib2algo/src/regexp/convert/ToAutomatonDerivation.h @@ -26,6 +26,8 @@ namespace convert { class ToAutomatonDerivation : public regexp::VisitableRegExpBase::const_visitor_type { public: + ToAutomatonDerivation() {} + /** * Performs conversion. * @return FSM equivalent to original regular expression. diff --git a/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h b/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h index edf737ad00..e916394f7b 100644 --- a/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h +++ b/alib2algo/src/regexp/convert/ToAutomatonGlushkov.h @@ -26,6 +26,8 @@ namespace convert { class ToAutomatonGlushkov : public regexp::VisitableRegExpBase::const_visitor_type { public: + ToAutomatonGlushkov() {} + /** * Performs conversion. * @param re Original regular expression. diff --git a/alib2algo/src/regexp/convert/ToAutomatonThompson.h b/alib2algo/src/regexp/convert/ToAutomatonThompson.h index e2608c9b1c..1c33e992e0 100644 --- a/alib2algo/src/regexp/convert/ToAutomatonThompson.h +++ b/alib2algo/src/regexp/convert/ToAutomatonThompson.h @@ -29,6 +29,8 @@ namespace convert { class ToAutomatonThompson : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type { public: + ToAutomatonThompson() {} + /** * Performs conversion. * @param regexp regexp to convert diff --git a/alib2algo/src/regexp/convert/ToGrammar.h b/alib2algo/src/regexp/convert/ToGrammar.h index de8438c541..02536f818d 100644 --- a/alib2algo/src/regexp/convert/ToGrammar.h +++ b/alib2algo/src/regexp/convert/ToGrammar.h @@ -18,6 +18,8 @@ namespace convert { class ToGrammar : public regexp::VisitableRegExpBase::const_visitor_type { public: + ToGrammar() {} + /** * Performs conversion. * @return right regular grammar equivalent to source regexp. diff --git a/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h b/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h index 4027f71691..349d490350 100644 --- a/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h +++ b/alib2algo/src/regexp/convert/ToGrammarRightRGDerivation.h @@ -24,6 +24,8 @@ namespace convert { class ToGrammarRightRGDerivation : public regexp::VisitableRegExpBase::const_visitor_type { public: + ToGrammarRightRGDerivation() {} + /** * Performs conversion. * @return right regular grammar equivalent to source regexp. diff --git a/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h b/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h index 7eec5a0307..2d03c778aa 100644 --- a/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h +++ b/alib2algo/src/regexp/convert/ToGrammarRightRGGlushkov.h @@ -26,6 +26,8 @@ namespace convert { class ToGrammarRightRGGlushkov : public regexp::VisitableRegExpBase::const_visitor_type { public: + ToGrammarRightRGGlushkov() {} + /** * Performs conversion. * @param regexp original regular expression diff --git a/alib2algo/src/regexp/properties/RegExpEmpty.h b/alib2algo/src/regexp/properties/RegExpEmpty.h index d76fa5fac3..4b68a96832 100644 --- a/alib2algo/src/regexp/properties/RegExpEmpty.h +++ b/alib2algo/src/regexp/properties/RegExpEmpty.h @@ -23,6 +23,8 @@ namespace properties { class RegExpEmpty : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type { public: + RegExpEmpty() {} + static bool languageIsEmpty(const regexp::RegExp& regexp); static bool languageIsEmpty(const regexp::FormalRegExp& regexp); diff --git a/alib2algo/src/regexp/properties/RegExpEpsilon.h b/alib2algo/src/regexp/properties/RegExpEpsilon.h index c5ba4793b8..8b2da94bba 100644 --- a/alib2algo/src/regexp/properties/RegExpEpsilon.h +++ b/alib2algo/src/regexp/properties/RegExpEpsilon.h @@ -18,12 +18,13 @@ namespace properties { /** * Checks, whether regexp (or its subtree) describes epsilon (empty string). - * TODO: Better API? * */ class RegExpEpsilon : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type { public: + RegExpEpsilon() {} + static bool languageContainsEpsilon(const regexp::RegExp& regexp); static bool languageContainsEpsilon(const regexp::FormalRegExp& regexp); diff --git a/alib2algo/src/regexp/simplify/RegExpOptimize.h b/alib2algo/src/regexp/simplify/RegExpOptimize.h index 3c1b3d2182..db510610f9 100644 --- a/alib2algo/src/regexp/simplify/RegExpOptimize.h +++ b/alib2algo/src/regexp/simplify/RegExpOptimize.h @@ -64,6 +64,8 @@ namespace simplify { class RegExpOptimize : public regexp::VisitableRegExpBase::const_visitor_type { public: + RegExpOptimize() {} + static regexp::RegExp optimize( const regexp::RegExp & regexp ); static regexp::UnboundedRegExp optimize( const regexp::UnboundedRegExp & regexp ); diff --git a/alib2algo/src/regexp/transform/RegExpAlternate.h b/alib2algo/src/regexp/transform/RegExpAlternate.h index bb6b3b91ed..21dbc77657 100644 --- a/alib2algo/src/regexp/transform/RegExpAlternate.h +++ b/alib2algo/src/regexp/transform/RegExpAlternate.h @@ -22,6 +22,8 @@ namespace regexp class RegExpAlternate : public regexp::VisitableRegExpBase::const_promoting_visitor_type { public: + RegExpAlternate() {} + static regexp::RegExp alternate(const regexp::RegExp& first, const regexp::RegExp& second); static regexp::FormalRegExp alternate(const regexp::FormalRegExp& first, const regexp::FormalRegExp& second); diff --git a/alib2algo/src/regexp/transform/RegExpConcatenate.h b/alib2algo/src/regexp/transform/RegExpConcatenate.h index 01c4810ab8..2f025b7058 100644 --- a/alib2algo/src/regexp/transform/RegExpConcatenate.h +++ b/alib2algo/src/regexp/transform/RegExpConcatenate.h @@ -22,6 +22,8 @@ namespace regexp class RegExpConcatenate : public regexp::VisitableRegExpBase::const_promoting_visitor_type { public: + RegExpConcatenate() {} + static regexp::RegExp concatenate(const regexp::RegExp& first, const regexp::RegExp& second); static regexp::FormalRegExp concatenate(const regexp::FormalRegExp& first, const regexp::FormalRegExp& second); diff --git a/alib2algo/src/regexp/transform/RegExpDerivation.h b/alib2algo/src/regexp/transform/RegExpDerivation.h index d7402ceec1..9e578c2504 100644 --- a/alib2algo/src/regexp/transform/RegExpDerivation.h +++ b/alib2algo/src/regexp/transform/RegExpDerivation.h @@ -27,6 +27,8 @@ namespace regexp class RegExpDerivation : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type { public: + RegExpDerivation() {} + /** * @param regexp RegExp to derivate * @param string String to derivate given RegExp over diff --git a/alib2algo/src/regexp/transform/RegExpIntegral.h b/alib2algo/src/regexp/transform/RegExpIntegral.h index 1f8d6ffc2a..e86206b37a 100644 --- a/alib2algo/src/regexp/transform/RegExpIntegral.h +++ b/alib2algo/src/regexp/transform/RegExpIntegral.h @@ -24,6 +24,8 @@ namespace regexp class RegExpIntegral : public regexp::VisitableRegExpBase::const_visitor_type, regexp::FormalRegExpElement::const_visitor_type, regexp::UnboundedRegExpElement::const_visitor_type { public: + RegExpIntegral() {} + /** * @param regexp RegExp to integrate * @param string String to integrate given RegExp over diff --git a/alib2algo/src/regexp/transform/RegExpIterate.h b/alib2algo/src/regexp/transform/RegExpIterate.h index df65d580db..b313cd0db2 100644 --- a/alib2algo/src/regexp/transform/RegExpIterate.h +++ b/alib2algo/src/regexp/transform/RegExpIterate.h @@ -22,6 +22,8 @@ namespace regexp class RegExpIterate : public regexp::VisitableRegExpBase::const_visitor_type { public: + RegExpIterate() {} + static regexp::RegExp iterate(const regexp::RegExp& regexp); static regexp::FormalRegExp iterate(const regexp::FormalRegExp& regexp); diff --git a/alib2algo/src/string/naive/ExactCompare.h b/alib2algo/src/string/naive/ExactCompare.h index 3e6cdc880b..ada478f2da 100644 --- a/alib2algo/src/string/naive/ExactCompare.h +++ b/alib2algo/src/string/naive/ExactCompare.h @@ -16,6 +16,8 @@ namespace naive { class ExactCompare : public string::VisitableStringBase::const_promoting_visitor_type { public: + ExactCompare() {} + static int compare(const string::String& u, const string::String& v); static int compare(const string::Epsilon& u, const string::Epsilon& v); diff --git a/alib2algo/src/string/naive/ExactEqual.h b/alib2algo/src/string/naive/ExactEqual.h index b131b5fdaf..e0490504fd 100644 --- a/alib2algo/src/string/naive/ExactEqual.h +++ b/alib2algo/src/string/naive/ExactEqual.h @@ -16,6 +16,8 @@ namespace naive { class ExactEqual : public string::VisitableStringBase::const_promoting_visitor_type { public: + ExactEqual() {} + static bool equals(const string::String& u, const string::String& v); static bool equals(const string::Epsilon& u, const string::Epsilon& v); diff --git a/alib2algo/src/string/simplify/NormalizeAlphabet.h b/alib2algo/src/string/simplify/NormalizeAlphabet.h index 3452bf8e57..ae869d9fa4 100644 --- a/alib2algo/src/string/simplify/NormalizeAlphabet.h +++ b/alib2algo/src/string/simplify/NormalizeAlphabet.h @@ -17,6 +17,8 @@ namespace simplify { class NormalizeAlphabet : public string::VisitableStringBase::const_visitor_type { public: + NormalizeAlphabet() {} + /** * @param dfa automaton to normalize */ diff --git a/alib2algo/src/string/simplify/NormalizeRotation.h b/alib2algo/src/string/simplify/NormalizeRotation.h index d280a9feeb..097d4bbbd5 100644 --- a/alib2algo/src/string/simplify/NormalizeRotation.h +++ b/alib2algo/src/string/simplify/NormalizeRotation.h @@ -17,6 +17,8 @@ namespace simplify { class NormalizeRotation : public string::VisitableStringBase::const_visitor_type { public: + NormalizeRotation() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/stringology/exact/BorderArray.h b/alib2algo/src/stringology/exact/BorderArray.h index c1283cbefa..348a759971 100644 --- a/alib2algo/src/stringology/exact/BorderArray.h +++ b/alib2algo/src/stringology/exact/BorderArray.h @@ -17,6 +17,8 @@ namespace exact { class BorderArray : public string::VisitableStringBase::const_visitor_type { public: + BorderArray() {} + /** * Computes border array of string * @param string string to compute border array for diff --git a/alib2algo/src/stringology/exact/BoyerMooreHorspool.h b/alib2algo/src/stringology/exact/BoyerMooreHorspool.h index e42f44b3e1..b009922e15 100644 --- a/alib2algo/src/stringology/exact/BoyerMooreHorspool.h +++ b/alib2algo/src/stringology/exact/BoyerMooreHorspool.h @@ -20,6 +20,8 @@ namespace exact { */ class BoyerMooreHorspool : public string::VisitableStringBase::const_same_visitor_type { public: + BoyerMooreHorspool() {} + /** * Search for pattern in linear string. * @return set set of occurences diff --git a/alib2algo/src/stringology/exact/ExactFactorAutomaton.h b/alib2algo/src/stringology/exact/ExactFactorAutomaton.h index b4957b220e..d5549a32e8 100644 --- a/alib2algo/src/stringology/exact/ExactFactorAutomaton.h +++ b/alib2algo/src/stringology/exact/ExactFactorAutomaton.h @@ -19,6 +19,8 @@ namespace exact { class ExactFactorAutomaton : public string::VisitableStringBase::const_visitor_type { public: + ExactFactorAutomaton() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/stringology/exact/ExactMatch.h b/alib2algo/src/stringology/exact/ExactMatch.h index 26e95dc0bf..faf97daecc 100644 --- a/alib2algo/src/stringology/exact/ExactMatch.h +++ b/alib2algo/src/stringology/exact/ExactMatch.h @@ -16,6 +16,8 @@ namespace exact { class ExactMatch : public string::VisitableStringBase::const_promoting_visitor_type { public: + ExactMatch() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h b/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h index 53087d50ce..d2fc0ef8c1 100644 --- a/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h +++ b/alib2algo/src/stringology/exact/ExactMatchingAutomaton.h @@ -19,6 +19,8 @@ namespace exact { class ExactMatchingAutomaton : public string::VisitableStringBase::const_visitor_type { public: + ExactMatchingAutomaton() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h b/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h index eec9e5c0d4..17b021b8da 100644 --- a/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h +++ b/alib2algo/src/stringology/exact/ExactMultiNondeterministicSubsequenceAutomaton.h @@ -19,6 +19,8 @@ namespace exact { class ExactMultiNondeterministicSubsequenceAutomaton { public: + ExactMultiNondeterministicSubsequenceAutomaton() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h b/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h index d96b6ded3c..40fccb82eb 100644 --- a/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h +++ b/alib2algo/src/stringology/exact/ExactNondeterministicSubsequenceAutomaton.h @@ -19,6 +19,8 @@ namespace exact { class ExactNondeterministicSubsequenceAutomaton : public string::VisitableStringBase::const_visitor_type { public: + ExactNondeterministicSubsequenceAutomaton() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h b/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h index 0cc61c8b19..0da0b1d86b 100644 --- a/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h +++ b/alib2algo/src/stringology/exact/ExactSubsequenceAutomaton.h @@ -19,6 +19,8 @@ namespace exact { class ExactSubsequenceAutomaton : public string::VisitableStringBase::const_visitor_type { public: + ExactSubsequenceAutomaton() {} + /** * Performs conversion. * @return left regular grammar equivalent to source automaton. diff --git a/alib2data/src/automaton/AutomatonBase.h b/alib2data/src/automaton/AutomatonBase.h index 6ce99dfa05..ebcfc1846a 100644 --- a/alib2data/src/automaton/AutomatonBase.h +++ b/alib2data/src/automaton/AutomatonBase.h @@ -33,7 +33,7 @@ public: }; class VisitableConstFSMBase : public VisitableAutomatonBase::const_visitor_type { - +public: using VisitableAutomatonBase::const_visitor_type::Visit; void Visit(void*, const NFTA&) const { @@ -90,7 +90,7 @@ class VisitableConstFSMBase : public VisitableAutomatonBase::const_visitor_type }; class VisitableConstPDABase : public VisitableAutomatonBase::const_visitor_type { - +public: using VisitableAutomatonBase::const_visitor_type::Visit; void Visit(void*, const NFTA&) const { @@ -132,7 +132,7 @@ class VisitableConstPDABase : public VisitableAutomatonBase::const_visitor_type }; class VisitableConstNondeterministicAutomatonBase : public VisitableAutomatonBase::const_visitor_type { - +public: using VisitableAutomatonBase::const_visitor_type::Visit; void Visit(void*, const DFTA&) const { @@ -169,7 +169,7 @@ class VisitableConstNondeterministicAutomatonBase : public VisitableAutomatonBas }; class VisitableConstDeterministicAutomatonBase : public VisitableAutomatonBase::const_visitor_type { - +public: using VisitableAutomatonBase::const_visitor_type::Visit; void Visit(void*, const NFTA&) const { diff --git a/alib2data/src/grammar/GrammarBase.h b/alib2data/src/grammar/GrammarBase.h index 74018b7af9..9dc7b96f19 100644 --- a/alib2data/src/grammar/GrammarBase.h +++ b/alib2data/src/grammar/GrammarBase.h @@ -33,7 +33,7 @@ public: }; class VisitableConstRGBase : public VisitableGrammarBase::const_visitor_type { - +public: using VisitableGrammarBase::const_visitor_type::Visit; void Visit(void*, const grammar::ContextPreservingUnrestrictedGrammar&) const -- GitLab