From f25ae0be3d90978f454629177c71fabf0a434e84 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Wed, 10 Jun 2015 10:34:30 +0200 Subject: [PATCH] simplify imports grammar --- acast2/src/cast/GrammarCastVisitor.cpp | 2 ++ alib2data/src/XmlApi.cpp | 1 + alib2data/src/grammar/ContextFree/CFG.cpp | 1 + alib2data/src/grammar/ContextFree/CFG.h | 1 - alib2data/src/grammar/ContextFree/CNF.cpp | 1 + alib2data/src/grammar/ContextFree/CNF.h | 1 - .../grammar/ContextFree/EpsilonFreeCFG.cpp | 1 + .../src/grammar/ContextFree/EpsilonFreeCFG.h | 1 - alib2data/src/grammar/ContextFree/GNF.cpp | 1 + alib2data/src/grammar/ContextFree/GNF.h | 1 - alib2data/src/grammar/ContextFree/LG.cpp | 1 + alib2data/src/grammar/ContextFree/LG.h | 1 - alib2data/src/grammar/Grammar.h | 15 ++++++++-- alib2data/src/grammar/GrammarClasses.h | 28 +++++++++++++++++++ alib2data/src/grammar/GrammarFeatures.h | 16 +++++++++++ .../src/grammar/GrammarFromStringLexer.cpp | 1 - .../src/grammar/GrammarFromStringLexer.h | 2 +- .../src/grammar/GrammarFromStringParser.cpp | 17 +---------- .../src/grammar/GrammarFromStringParser.h | 1 - .../src/grammar/GrammarFromXMLParser.cpp | 6 ++-- alib2data/src/grammar/GrammarFromXMLParser.h | 20 ++----------- .../src/grammar/GrammarToStringComposer.cpp | 27 ++++++------------ .../src/grammar/GrammarToStringComposer.h | 6 +--- .../src/grammar/GrammarToXMLComposer.cpp | 3 +- alib2data/src/grammar/GrammarToXMLComposer.h | 18 ++++-------- alib2data/src/object/ObjectBase.h | 19 +------------ alib2data/test-src/grammar/GrammarTest.cpp | 13 +++++++++ 27 files changed, 103 insertions(+), 102 deletions(-) create mode 100644 alib2data/src/grammar/GrammarClasses.h diff --git a/acast2/src/cast/GrammarCastVisitor.cpp b/acast2/src/cast/GrammarCastVisitor.cpp index 295ceb6d77..3b03a0d720 100644 --- a/acast2/src/cast/GrammarCastVisitor.cpp +++ b/acast2/src/cast/GrammarCastVisitor.cpp @@ -6,6 +6,8 @@ */ #include "GrammarCastVisitor.h" +#include "grammar/GrammarClasses.h" + #include "../CastVisitorBase.hpp" typedef cast_base_helper< grammar::VisitableGrammarBase::const_visitor_type, grammar::GrammarBase, alib::GrammarTypes, grammar::Grammar, alib::GrammarTypes > GrammarCastVisitorType; diff --git a/alib2data/src/XmlApi.cpp b/alib2data/src/XmlApi.cpp index 18409148ce..5c1f6c80dd 100644 --- a/alib2data/src/XmlApi.cpp +++ b/alib2data/src/XmlApi.cpp @@ -15,6 +15,7 @@ #include "string/StringClasses.h" #include "automaton/AutomatonClasses.h" #include "container/ContainerClasses.h" +#include "grammar/GrammarClasses.h" namespace alib { diff --git a/alib2data/src/grammar/ContextFree/CFG.cpp b/alib2data/src/grammar/ContextFree/CFG.cpp index 4944b190e1..7162f89776 100644 --- a/alib2data/src/grammar/ContextFree/CFG.cpp +++ b/alib2data/src/grammar/ContextFree/CFG.cpp @@ -8,6 +8,7 @@ #include "CFG.h" #include "../GrammarException.h" #include <algorithm> +#include <sstream> #include "../../alphabet/Symbol.h" diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h index 61816d597d..55ee73ea94 100644 --- a/alib2data/src/grammar/ContextFree/CFG.h +++ b/alib2data/src/grammar/ContextFree/CFG.h @@ -11,7 +11,6 @@ #include "../GrammarBase.h" #include <map> #include <vector> -#include <sstream> #include "../common/TerminalNonterminalAlphabetInitialSymbol.h" namespace grammar { diff --git a/alib2data/src/grammar/ContextFree/CNF.cpp b/alib2data/src/grammar/ContextFree/CNF.cpp index 628a472912..875c4b960c 100644 --- a/alib2data/src/grammar/ContextFree/CNF.cpp +++ b/alib2data/src/grammar/ContextFree/CNF.cpp @@ -8,6 +8,7 @@ #include "CNF.h" #include "../GrammarException.h" #include <algorithm> +#include <sstream> #include "../../alphabet/Symbol.h" diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h index 9c68f2bdf0..4911136566 100644 --- a/alib2data/src/grammar/ContextFree/CNF.h +++ b/alib2data/src/grammar/ContextFree/CNF.h @@ -11,7 +11,6 @@ #include "../GrammarBase.h" #include <map> #include <vector> -#include <sstream> #include <variant> #include "../common/TerminalNonterminalAlphabetInitialSymbol.h" diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp index 9203549150..0df67d4f80 100644 --- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp +++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp @@ -8,6 +8,7 @@ #include "EpsilonFreeCFG.h" #include "../GrammarException.h" #include <algorithm> +#include <sstream> #include "../../alphabet/Symbol.h" diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h index 901f307ef2..8a7589b80d 100644 --- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h +++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h @@ -11,7 +11,6 @@ #include "../GrammarBase.h" #include <map> #include <vector> -#include <sstream> #include "../common/TerminalNonterminalAlphabetInitialSymbol.h" namespace grammar { diff --git a/alib2data/src/grammar/ContextFree/GNF.cpp b/alib2data/src/grammar/ContextFree/GNF.cpp index fa63307907..ce821d8e23 100644 --- a/alib2data/src/grammar/ContextFree/GNF.cpp +++ b/alib2data/src/grammar/ContextFree/GNF.cpp @@ -8,6 +8,7 @@ #include "GNF.h" #include "../GrammarException.h" #include <algorithm> +#include <sstream> #include "../../alphabet/Symbol.h" diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h index 3ecaf3607e..c693249bd9 100644 --- a/alib2data/src/grammar/ContextFree/GNF.h +++ b/alib2data/src/grammar/ContextFree/GNF.h @@ -11,7 +11,6 @@ #include "../GrammarBase.h" #include <map> #include <vector> -#include <sstream> #include "../common/TerminalNonterminalAlphabetInitialSymbol.h" namespace grammar { diff --git a/alib2data/src/grammar/ContextFree/LG.cpp b/alib2data/src/grammar/ContextFree/LG.cpp index 0e193a764e..e5ed22a382 100644 --- a/alib2data/src/grammar/ContextFree/LG.cpp +++ b/alib2data/src/grammar/ContextFree/LG.cpp @@ -8,6 +8,7 @@ #include "LG.h" #include "../GrammarException.h" #include <algorithm> +#include <sstream> #include "../../alphabet/Symbol.h" diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h index 7b95823e1e..400426173e 100644 --- a/alib2data/src/grammar/ContextFree/LG.h +++ b/alib2data/src/grammar/ContextFree/LG.h @@ -12,7 +12,6 @@ #include <map> #include <tuple> #include <vector> -#include <sstream> #include <variant> #include "../common/TerminalNonterminalAlphabetInitialSymbol.h" diff --git a/alib2data/src/grammar/Grammar.h b/alib2data/src/grammar/Grammar.h index 4e26f7b034..bfdeecc943 100644 --- a/alib2data/src/grammar/Grammar.h +++ b/alib2data/src/grammar/Grammar.h @@ -14,9 +14,20 @@ namespace grammar { /** - * Wrapper around automata. + * Wrapper around grammars. */ -typedef alib::wrapper<GrammarBase> Grammar; +class Grammar : public alib::wrapper<GrammarBase> { +public: + explicit Grammar(GrammarBase* data) : alib::wrapper<GrammarBase>(data) { + } + + explicit Grammar(const GrammarBase& data) : alib::wrapper<GrammarBase>(data.clone()) { + } + + explicit Grammar(GrammarBase&& data) : alib::wrapper<GrammarBase>(std::move(data).plunder()) { + } + +}; } /* namespace grammar */ diff --git a/alib2data/src/grammar/GrammarClasses.h b/alib2data/src/grammar/GrammarClasses.h new file mode 100644 index 0000000000..06dd80e08f --- /dev/null +++ b/alib2data/src/grammar/GrammarClasses.h @@ -0,0 +1,28 @@ +/* + * GrammarClasses.h + * + * Created on: Jun 19, 2014 + * Author: Jan Travnicek + */ + +#ifndef GRAMMAR_CLASSES_H_ +#define GRAMMAR_CLASSES_H_ + +#include "Regular/RightRG.h" +#include "Regular/LeftRG.h" +#include "Regular/RightLG.h" +#include "Regular/LeftLG.h" + +#include "ContextFree/LG.h" +#include "ContextFree/CFG.h" +#include "ContextFree/EpsilonFreeCFG.h" +#include "ContextFree/GNF.h" +#include "ContextFree/CNF.h" + +#include "ContextSensitive/CSG.h" +#include "ContextSensitive/NonContractingGrammar.h" + +#include "Unrestricted/ContextPreservingUnrestrictedGrammar.h" +#include "Unrestricted/UnrestrictedGrammar.h" + +#endif /* GRAMMAR_CLASSES_H_ */ diff --git a/alib2data/src/grammar/GrammarFeatures.h b/alib2data/src/grammar/GrammarFeatures.h index 4387ca0793..4533db988b 100644 --- a/alib2data/src/grammar/GrammarFeatures.h +++ b/alib2data/src/grammar/GrammarFeatures.h @@ -26,6 +26,22 @@ enum class FEATURES { UNRESTRICTED_GRAMMAR }; +class Grammar; + +class LeftLG; +class LeftRG; +class RightLG; +class RightRG; +class LG; +class CFG; +class EpsilonFreeCFG; +class CNF; +class GNF; +class CSG; +class NonContractingGrammar; +class ContextPreservingUnrestrictedGrammar; +class UnrestrictedGrammar; + } /* namespace grammar */ #endif /* GRAMMAR_FEATURES_H_ */ diff --git a/alib2data/src/grammar/GrammarFromStringLexer.cpp b/alib2data/src/grammar/GrammarFromStringLexer.cpp index 23c22495e8..aa68a0f8f6 100644 --- a/alib2data/src/grammar/GrammarFromStringLexer.cpp +++ b/alib2data/src/grammar/GrammarFromStringLexer.cpp @@ -6,7 +6,6 @@ */ #include "GrammarFromStringLexer.h" -#include <istream> namespace grammar { diff --git a/alib2data/src/grammar/GrammarFromStringLexer.h b/alib2data/src/grammar/GrammarFromStringLexer.h index 6043b3353c..351ce84b9e 100644 --- a/alib2data/src/grammar/GrammarFromStringLexer.h +++ b/alib2data/src/grammar/GrammarFromStringLexer.h @@ -9,7 +9,7 @@ #define GRAMMAR_FROM_STRING_LEXER_H_ #include <string> -#include <sstream> +#include <istream> namespace grammar { diff --git a/alib2data/src/grammar/GrammarFromStringParser.cpp b/alib2data/src/grammar/GrammarFromStringParser.cpp index fd67483e42..78897a8fec 100644 --- a/alib2data/src/grammar/GrammarFromStringParser.cpp +++ b/alib2data/src/grammar/GrammarFromStringParser.cpp @@ -9,22 +9,7 @@ #include "../exception/AlibException.h" -#include "Regular/RightRG.h" -#include "Regular/LeftRG.h" -#include "Regular/RightLG.h" -#include "Regular/LeftLG.h" - -#include "ContextFree/LG.h" -#include "ContextFree/CFG.h" -#include "ContextFree/EpsilonFreeCFG.h" -#include "ContextFree/GNF.h" -#include "ContextFree/CNF.h" - -#include "ContextSensitive/CSG.h" -#include "ContextSensitive/NonContractingGrammar.h" - -#include "Unrestricted/ContextPreservingUnrestrictedGrammar.h" -#include "Unrestricted/UnrestrictedGrammar.h" +#include "GrammarClasses.h" #include "../StringApi.hpp" diff --git a/alib2data/src/grammar/GrammarFromStringParser.h b/alib2data/src/grammar/GrammarFromStringParser.h index dc070dfa3b..3c78e817d3 100644 --- a/alib2data/src/grammar/GrammarFromStringParser.h +++ b/alib2data/src/grammar/GrammarFromStringParser.h @@ -9,7 +9,6 @@ #define GRAMMAR_FROM_STRING_PARSER_H_ #include "GrammarFromStringLexer.h" -#include "Grammar.h" #include "GrammarFeatures.h" #include "../alphabet/Symbol.h" #include <set> diff --git a/alib2data/src/grammar/GrammarFromXMLParser.cpp b/alib2data/src/grammar/GrammarFromXMLParser.cpp index 43849203e9..54214f11d3 100644 --- a/alib2data/src/grammar/GrammarFromXMLParser.cpp +++ b/alib2data/src/grammar/GrammarFromXMLParser.cpp @@ -6,12 +6,12 @@ */ #include "GrammarFromXMLParser.h" - #include "../sax/ParserException.h" -#include "../alphabet/LabeledSymbol.h" - #include "../XmlApi.hpp" +#include "Grammar.h" +#include "GrammarClasses.h" + namespace grammar { Grammar GrammarFromXMLParser::parseGrammar(std::deque<sax::Token>::iterator& input) const { diff --git a/alib2data/src/grammar/GrammarFromXMLParser.h b/alib2data/src/grammar/GrammarFromXMLParser.h index 23527cb9d2..30eb28e887 100644 --- a/alib2data/src/grammar/GrammarFromXMLParser.h +++ b/alib2data/src/grammar/GrammarFromXMLParser.h @@ -9,26 +9,12 @@ #define GRAMMAR_FROM_XML_PARSER_H_ #include "../sax/FromXMLParserHelper.h" -#include "Grammar.h" -#include "GrammarFeatures.h" -#include "Regular/LeftLG.h" -#include "Regular/LeftRG.h" -#include "Regular/RightLG.h" -#include "Regular/RightRG.h" -#include "ContextFree/LG.h" -#include "ContextFree/CFG.h" -#include "ContextFree/EpsilonFreeCFG.h" -#include "ContextFree/CNF.h" -#include "ContextFree/GNF.h" -#include "ContextSensitive/CSG.h" -#include "ContextSensitive/NonContractingGrammar.h" -#include "Unrestricted/ContextPreservingUnrestrictedGrammar.h" -#include "Unrestricted/UnrestrictedGrammar.h" - #include <deque> #include <set> #include <variant> -#include "../sax/Token.h" +#include <vector> +#include "GrammarFeatures.h" +#include "../alphabet/Symbol.h" namespace alib { diff --git a/alib2data/src/grammar/GrammarToStringComposer.cpp b/alib2data/src/grammar/GrammarToStringComposer.cpp index f106f61f4d..3f4bbaa0ae 100644 --- a/alib2data/src/grammar/GrammarToStringComposer.cpp +++ b/alib2data/src/grammar/GrammarToStringComposer.cpp @@ -1,23 +1,12 @@ -#include "GrammarToStringComposer.h" -#include <sstream> - -#include "Regular/RightRG.h" -#include "Regular/RightLG.h" -#include "Regular/LeftRG.h" -#include "Regular/LeftLG.h" - -#include "ContextFree/CFG.h" -#include "ContextFree/EpsilonFreeCFG.h" -#include "ContextFree/LG.h" -#include "ContextFree/CNF.h" -#include "ContextFree/GNF.h" - -#include "ContextSensitive/CSG.h" -#include "ContextSensitive/NonContractingGrammar.h" - -#include "Unrestricted/ContextPreservingUnrestrictedGrammar.h" -#include "Unrestricted/UnrestrictedGrammar.h" +/* + * GrammarToStringComposer.cpp + * + * Created on: Nov 23, 2013 + * Author: Jan Travnicek + */ +#include "GrammarToStringComposer.h" +#include "GrammarClasses.h" #include "../StringApi.hpp" namespace grammar { diff --git a/alib2data/src/grammar/GrammarToStringComposer.h b/alib2data/src/grammar/GrammarToStringComposer.h index 5c092076d4..ad353fe16a 100644 --- a/alib2data/src/grammar/GrammarToStringComposer.h +++ b/alib2data/src/grammar/GrammarToStringComposer.h @@ -1,13 +1,9 @@ #ifndef GRAMMAR_TO_STRING_COMPOSER_H_ #define GRAMMAR_TO_STRING_COMPOSER_H_ -#include <iostream> +#include <ostream> #include "Grammar.h" -#include <map> -#include <list> -#include <set> - namespace grammar { class GrammarToStringComposer : public VisitableGrammarBase::const_visitor_type { diff --git a/alib2data/src/grammar/GrammarToXMLComposer.cpp b/alib2data/src/grammar/GrammarToXMLComposer.cpp index 0cde5b137d..7785030f4e 100644 --- a/alib2data/src/grammar/GrammarToXMLComposer.cpp +++ b/alib2data/src/grammar/GrammarToXMLComposer.cpp @@ -6,10 +6,11 @@ */ #include "GrammarToXMLComposer.h" -#include "../alphabet/BlankSymbol.h" #include "../XmlApi.hpp" +#include "GrammarClasses.h" + namespace grammar { void GrammarToXMLComposer::compose(std::deque<sax::Token>& out, const GrammarBase& grammar) const { diff --git a/alib2data/src/grammar/GrammarToXMLComposer.h b/alib2data/src/grammar/GrammarToXMLComposer.h index 6481191f08..b48f971fe5 100644 --- a/alib2data/src/grammar/GrammarToXMLComposer.h +++ b/alib2data/src/grammar/GrammarToXMLComposer.h @@ -10,20 +10,12 @@ #include <string> #include <deque> +#include <vector> +#include <tuple> +#include <map> +#include <set> +#include <variant> #include "Grammar.h" -#include "Regular/LeftLG.h" -#include "Regular/LeftRG.h" -#include "Regular/RightLG.h" -#include "Regular/RightRG.h" -#include "ContextFree/LG.h" -#include "ContextFree/CFG.h" -#include "ContextFree/EpsilonFreeCFG.h" -#include "ContextFree/CNF.h" -#include "ContextFree/GNF.h" -#include "ContextSensitive/CSG.h" -#include "ContextSensitive/NonContractingGrammar.h" -#include "Unrestricted/ContextPreservingUnrestrictedGrammar.h" -#include "Unrestricted/UnrestrictedGrammar.h" #include "../sax/Token.h" namespace alib { diff --git a/alib2data/src/object/ObjectBase.h b/alib2data/src/object/ObjectBase.h index f700b5bcd0..24ca799a4f 100644 --- a/alib2data/src/object/ObjectBase.h +++ b/alib2data/src/object/ObjectBase.h @@ -18,24 +18,7 @@ #include "ObjectFeatures.h" #include "../exception/ExceptionFeatures.h" #include "../automaton/AutomatonFeatures.h" - -namespace grammar { - -class LeftLG; -class LeftRG; -class RightLG; -class RightRG; -class LG; -class CFG; -class EpsilonFreeCFG; -class CNF; -class GNF; -class CSG; -class NonContractingGrammar; -class ContextPreservingUnrestrictedGrammar; -class UnrestrictedGrammar; - -} +#include "../grammar/GrammarFeatures.h" namespace graph { diff --git a/alib2data/test-src/grammar/GrammarTest.cpp b/alib2data/test-src/grammar/GrammarTest.cpp index a905842685..4fec2c3b82 100644 --- a/alib2data/test-src/grammar/GrammarTest.cpp +++ b/alib2data/test-src/grammar/GrammarTest.cpp @@ -5,6 +5,19 @@ #include "sax/SaxComposeInterface.h" #include "grammar/Unrestricted/UnrestrictedGrammar.h" +#include "grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h" + +#include "grammar/Regular/RightRG.h" +#include "grammar/Regular/RightLG.h" + +#include "grammar/ContextFree/LG.h" +#include "grammar/ContextFree/EpsilonFreeCFG.h" +#include "grammar/ContextFree/CFG.h" +#include "grammar/ContextFree/CNF.h" +#include "grammar/ContextFree/GNF.h" + +#include "grammar/ContextSensitive/CSG.h" +#include "grammar/ContextSensitive/NonContractingGrammar.h" #include "factory/XmlDataFactory.hpp" #include "factory/StringDataFactory.hpp" -- GitLab