From ca325310a222eb1420f94d54e7e23dbf97051774 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 15 Aug 2014 22:39:52 +0200 Subject: [PATCH] Object parser parses all data xmls --- alib2data/src/alphabet/SymbolFromXMLParser.h | 2 +- alib2data/src/automaton/AutomatonFromXMLParser.h | 8 ++++++++ .../src/container/ContainerFromXMLParser.hpp | 8 ++++++++ alib2data/src/exception/ExceptionFromXMLParser.h | 2 +- alib2data/src/grammar/GrammarFromXMLParser.h | 8 ++++++++ alib2data/src/label/LabelFromXMLParser.h | 8 +++++++- alib2data/src/object/ObjectFromXMLParser.cpp | 15 +++++++++++++++ alib2data/src/regexp/RegExpFromXMLParser.h | 7 +++++++ alib2data/src/string/StringFromXMLParser.h | 7 +++++++ 9 files changed, 62 insertions(+), 3 deletions(-) diff --git a/alib2data/src/alphabet/SymbolFromXMLParser.h b/alib2data/src/alphabet/SymbolFromXMLParser.h index 3d337b147a..9195c91fdd 100644 --- a/alib2data/src/alphabet/SymbolFromXMLParser.h +++ b/alib2data/src/alphabet/SymbolFromXMLParser.h @@ -56,7 +56,7 @@ namespace alib { class ObjectFromXMLParser; -} /* namespace grammar */ +} /* namespace object */ namespace alphabet { diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.h b/alib2data/src/automaton/AutomatonFromXMLParser.h index 58416fefb5..dd2123f3bb 100644 --- a/alib2data/src/automaton/AutomatonFromXMLParser.h +++ b/alib2data/src/automaton/AutomatonFromXMLParser.h @@ -33,6 +33,12 @@ struct api; } /* namespace alib */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace automaton { /** @@ -95,6 +101,8 @@ class AutomatonFromXMLParser : public sax::FromXMLParserHelper { SinglePopNPDA parseSinglePopNPDA(std::list<sax::Token>& input) const; OneTapeDTM parseOneTapeDTM(std::list<sax::Token>& input) const; + friend class alib::ObjectFromXMLParser; + template<typename T> friend class alib::api; public: bool first(std::list<sax::Token>& input) const; diff --git a/alib2data/src/container/ContainerFromXMLParser.hpp b/alib2data/src/container/ContainerFromXMLParser.hpp index d6717b6d36..44f56c797b 100644 --- a/alib2data/src/container/ContainerFromXMLParser.hpp +++ b/alib2data/src/container/ContainerFromXMLParser.hpp @@ -19,6 +19,12 @@ struct api; } /* namespace alib */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace container { /** @@ -31,6 +37,8 @@ public: template<typename T> std::set<T> parseSet(std::list<sax::Token>& input) const; + friend class alib::ObjectFromXMLParser; + template<typename T> friend class alib::api; }; diff --git a/alib2data/src/exception/ExceptionFromXMLParser.h b/alib2data/src/exception/ExceptionFromXMLParser.h index ce3eb59114..904e7c2f80 100644 --- a/alib2data/src/exception/ExceptionFromXMLParser.h +++ b/alib2data/src/exception/ExceptionFromXMLParser.h @@ -25,7 +25,7 @@ namespace alib { class ObjectFromXMLParser; -} +} /* namespace alib */ namespace exception { diff --git a/alib2data/src/grammar/GrammarFromXMLParser.h b/alib2data/src/grammar/GrammarFromXMLParser.h index b0d63f7ad9..d1def31f87 100644 --- a/alib2data/src/grammar/GrammarFromXMLParser.h +++ b/alib2data/src/grammar/GrammarFromXMLParser.h @@ -38,6 +38,12 @@ struct api; } /* namespace alib */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace grammar { /** @@ -93,6 +99,8 @@ class GrammarFromXMLParser : public sax::FromXMLParserHelper { LeftRG parseLeftRG(std::list<sax::Token>& input) const; LeftLG parseLeftLG(std::list<sax::Token>& input) const; + friend class alib::ObjectFromXMLParser; + template<typename T> friend class alib::api; public: bool first(std::list<sax::Token>& input) const; diff --git a/alib2data/src/label/LabelFromXMLParser.h b/alib2data/src/label/LabelFromXMLParser.h index 8f3f27c3d8..df213bc8c0 100644 --- a/alib2data/src/label/LabelFromXMLParser.h +++ b/alib2data/src/label/LabelFromXMLParser.h @@ -38,6 +38,12 @@ class AutomatonFromXMLParser; } /* namespace automaton */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace label { /** @@ -52,8 +58,8 @@ class LabelFromXMLParser : public sax::FromXMLParserHelper { StringLabel parseStringLabel(std::list<sax::Token>& input) const; friend class alphabet::SymbolFromXMLParser; - friend class automaton::AutomatonFromXMLParser; + friend class alib::ObjectFromXMLParser; template<typename T> friend class alib::api; public: diff --git a/alib2data/src/object/ObjectFromXMLParser.cpp b/alib2data/src/object/ObjectFromXMLParser.cpp index 07e5dab739..662f31b3ff 100644 --- a/alib2data/src/object/ObjectFromXMLParser.cpp +++ b/alib2data/src/object/ObjectFromXMLParser.cpp @@ -23,6 +23,21 @@ Object ObjectFromXMLParser::parseObject(std::list<sax::Token>& input) const { } else if(alib::FromXMLParsers::exceptionParser.first(input)) { exception::AlibException exception = alib::FromXMLParsers::exceptionParser.parseException(input); tmp = std::move(exception).plunder(); + } else if(alib::FromXMLParsers::labelParser.first(input)) { + label::Label label = alib::FromXMLParsers::labelParser.parseLabel(input); + tmp = std::move(label.getData()).plunder(); + } else if(alib::FromXMLParsers::regexpParser.first(input)) { + regexp::RegExp regexp = alib::FromXMLParsers::regexpParser.parseRegExp(input); + tmp = std::move(regexp.getData()).plunder(); + } else if(alib::FromXMLParsers::stringParser.first(input)) { + string::String string = alib::FromXMLParsers::stringParser.parseString(input); + tmp = std::move(string.getData()).plunder(); + } else if(alib::FromXMLParsers::automatonParser.first(input)) { + automaton::Automaton automaton = alib::FromXMLParsers::automatonParser.parseAutomaton(input); + tmp = std::move(automaton.getData()).plunder(); + } else if(alib::FromXMLParsers::grammarParser.first(input)) { + grammar::Grammar grammar = alib::FromXMLParsers::grammarParser.parseGrammar(input); + tmp = std::move(grammar.getData()).plunder(); } else { throw exception::AlibException("Unknown element in xml"); } diff --git a/alib2data/src/regexp/RegExpFromXMLParser.h b/alib2data/src/regexp/RegExpFromXMLParser.h index 90779c709c..38f821267b 100644 --- a/alib2data/src/regexp/RegExpFromXMLParser.h +++ b/alib2data/src/regexp/RegExpFromXMLParser.h @@ -29,6 +29,12 @@ class AutomatonFromXMLParser; } /* namespace automaton */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace regexp { /** @@ -61,6 +67,7 @@ class RegExpFromXMLParser : public sax::FromXMLParserHelper { FormalRegExp parseFormalRegExp(std::list<sax::Token>& input) const; friend class automaton::AutomatonFromXMLParser; + friend class alib::ObjectFromXMLParser; template<typename T> friend class alib::api; public: diff --git a/alib2data/src/string/StringFromXMLParser.h b/alib2data/src/string/StringFromXMLParser.h index 9ccf9dbfbe..c00242a5ed 100644 --- a/alib2data/src/string/StringFromXMLParser.h +++ b/alib2data/src/string/StringFromXMLParser.h @@ -32,6 +32,12 @@ class AutomatonFromXMLParser; } /* namespace automaton */ +namespace alib { + +class ObjectFromXMLParser; + +} /* namespace alib */ + namespace string { /** @@ -49,6 +55,7 @@ class StringFromXMLParser : public sax::FromXMLParserHelper { Epsilon parseEpsilon(std::list<sax::Token>& input) const; friend class automaton::AutomatonFromXMLParser; + friend class alib::ObjectFromXMLParser; template<typename T> friend class alib::api; public: -- GitLab