diff --git a/acast2/src/cast/GrammarCastVisitor.cpp b/acast2/src/cast/GrammarCastVisitor.cpp index 295ceb6d7774573d9a4c8f07ee290cd48f8c6a36..3b03a0d720fd8500786e24b0a05f1fc4a498dcad 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 18409148ce0d0c01cd59afc4ca64f26dc4413f6e..5c1f6c80dda6b0700568d1934957344f3baac944 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 4944b190e1b22c143a49284b089a58866513ebd1..7162f89776a340e9c6bdc6a8a0ffb9ef0aaaefdd 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 61816d597df493413d0fba77b7c7ea41ed686ce3..55ee73ea94c02e4ea1de0e35df8149b1a80340ad 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 628a472912cbbb2e60a25f8eefe847660a88ab5d..875c4b960ca83958821f10ee261003f335495a1e 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 9c68f2bdf0897ac29e338c95cf9f9b5d3f97a362..49111365669141437f04641fdc03cf804b5fa039 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 920354915052bb834acab9e44e4b7b7ca0372185..0df67d4f80d82fa55442b2a347a2f75961abe190 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 901f307ef2e059146fc03a06c71c363e101fdbf1..8a7589b80db729925a58f26704693d2a96e58cb1 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 fa6330790764d7d430cbecbaa2e989ec3f55ebca..ce821d8e23ab2e02b15014a544ed0afa0c7871f7 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 3ecaf3607ed14b7070708f5188b290d1a959887d..c693249bd99fc9f286329c930e44ba0849ab8424 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 0e193a764ee90e8944b326845980e01d2790136d..e5ed22a382cc498ff04ea2b7056968a950866056 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 7b95823e1e58b6765e2f78c5beca9b630e82a501..400426173e6e2773c1495e4b89c1880a51d89748 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 4e26f7b034f2a077d47a5fc90db4c44eb84c6265..bfdeecc9431d9f1795ae9df78f3d99b1c9bb6af4 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 0000000000000000000000000000000000000000..06dd80e08f52d786f3441c37819eaa18f2df1c5f --- /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 4387ca0793608305d8c6e007ed516a3cb10953fd..4533db988b2af174386d6e630635b8c72cefc5cb 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 23c22495e885457194b642d3ff191f93c6a25a19..aa68a0f8f686ac16dfcd8273588df63b71a76975 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 6043b3353c52bfe7d3294bfd56847ca02f658696..351ce84b9e59c0a209f4a01e50f6768414583b1f 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 fd67483e42b62c97d72c3520f1a1245c3f0236dd..78897a8fec498f9b6fb791118711cd85fcdce388 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 dc070dfa3b10bfcb4488f82308003fdbd538a050..3c78e817d3ab1e14d0b21782f1cb19b6f98b981b 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 43849203e95bb49a7697de5513e90e5a985e543c..54214f11d3183aa3132e68f08be5cb687e4e0879 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 23527cb9d242dab7ce517ab379c0e351a9d9edde..30eb28e887d53686bdbdadd4631a160a6921415d 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 f106f61f4d905ca8dfba20114859a96fe4984b74..3f4bbaa0aede0454f12b4164784a85e970f42434 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 5c092076d4d2bbae1b78d962286054fa6a916c26..ad353fe16af2fc5a03bf9cfd467a52198426298a 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 0cde5b137d7b523ea8342f56bc7fcb03fb9efced..7785030f4ea695464479c0476c06305727d78616 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 6481191f08249798ac97dbd30fd3193b2a9647e2..b48f971fe56b9ce2d00e456349ecce9a8d416ab1 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 f700b5bcd0810db822ecd444be8cf28044e4a48b..24ca799a4f0d9ca0180003977dcb998a8374ae13 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 a905842685e7334d85d42174e063512737f9749d..4fec2c3b82b059daef6cf9f8353d633f86789379 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"