From 3e8a76588121fd0e92be1e63c7f3bf738f53cfd0 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Mon, 18 Sep 2017 15:05:33 +0200 Subject: [PATCH] rethrow parsed exception in abstraction --- aarbology2/src/aarbology.cpp | 2 ++ acast2/src/acast.cpp | 2 ++ acompaction2/src/acompaction.cpp | 2 ++ aconversions2/src/aconversion.cpp | 2 ++ aderivation2/src/aderivation.cpp | 2 ++ adeterminize2/src/adeterminize.cpp | 2 ++ aecho2/src/aecho.cpp | 2 ++ aepsilon2/src/aepsilon.cpp | 2 ++ agenerate2/src/agenerate.cpp | 2 ++ aintegral2/src/aintegral.cpp | 2 ++ alangop2/src/alangop.cpp | 2 ++ alib2cli/src/ast/params/FileParam.h | 4 +++- alib2cli/src/ast/statements/FileStatement.cpp | 4 +++- alib2common/src/abstraction/CastRegistry.hpp | 1 + alib2common/src/abstraction/DowncastRegistry.hpp | 1 + alib2common/src/abstraction/ImmediateRegistry.hpp | 5 ++--- alib2common/src/abstraction/NormalizeRegistry.hpp | 1 + alib2common/src/abstraction/OperationAbstraction.hpp | 1 - alib2common/src/abstraction/ValuePrinterRegistry.hpp | 1 + alib2common/src/abstraction/XmlComposerAbstraction.hpp | 1 + alib2common/src/abstraction/XmlComposerRegistry.hpp | 1 + alib2common/src/abstraction/XmlFileWriterAbstraction.hpp | 1 + alib2common/src/abstraction/XmlFileWriterRegistry.hpp | 1 + alib2common/src/abstraction/XmlParserAbstraction.hpp | 8 ++++++++ alib2common/src/abstraction/XmlParserRegistry.hpp | 2 ++ aminimize2/src/aminimize.cpp | 2 ++ anormalize2/src/anormalize.cpp | 2 ++ aql2/src/aql.cpp | 2 ++ aql2/src/prompt/Prompt.cpp | 2 ++ aquery2/src/aquery.cpp | 2 ++ arand2/src/arand.cpp | 2 ++ arename2/src/arename.cpp | 2 ++ areverse2/src/areverse.cpp | 2 ++ arun2/src/arun.cpp | 2 ++ astringology2/src/astringology.cpp | 2 ++ atrim2/src/atrim.cpp | 2 ++ 36 files changed, 70 insertions(+), 6 deletions(-) diff --git a/aarbology2/src/aarbology.cpp b/aarbology2/src/aarbology.cpp index 40f838d0a9..7116a1a1db 100644 --- a/aarbology2/src/aarbology.cpp +++ b/aarbology2/src/aarbology.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * argv[] ) { try { common::GlobalData::argc = argc; diff --git a/acast2/src/acast.cpp b/acast2/src/acast.cpp index 357c92b93a..c680c38079 100644 --- a/acast2/src/acast.cpp +++ b/acast2/src/acast.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + // ----------------------------------------------------------------------------------------- int main(int argc, char** argv) { diff --git a/acompaction2/src/acompaction.cpp b/acompaction2/src/acompaction.cpp index a6b397d575..7988e0e841 100644 --- a/acompaction2/src/acompaction.cpp +++ b/acompaction2/src/acompaction.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char** argv) { try { common::GlobalData::argc = argc; diff --git a/aconversions2/src/aconversion.cpp b/aconversions2/src/aconversion.cpp index ddf86ad296..ae63ccebd3 100644 --- a/aconversions2/src/aconversion.cpp +++ b/aconversions2/src/aconversion.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + #include "ConversionHandler.h" int main ( int argc, char * argv[] ) { diff --git a/aderivation2/src/aderivation.cpp b/aderivation2/src/aderivation.cpp index b6dd82e440..658e249cdc 100644 --- a/aderivation2/src/aderivation.cpp +++ b/aderivation2/src/aderivation.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char** argv) { try { common::GlobalData::argc = argc; diff --git a/adeterminize2/src/adeterminize.cpp b/adeterminize2/src/adeterminize.cpp index d03e680367..aa2be2e2b4 100644 --- a/adeterminize2/src/adeterminize.cpp +++ b/adeterminize2/src/adeterminize.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * * argv ) { try { common::GlobalData::argc = argc; diff --git a/aecho2/src/aecho.cpp b/aecho2/src/aecho.cpp index 935b7a3e8e..2acb4b3520 100644 --- a/aecho2/src/aecho.cpp +++ b/aecho2/src/aecho.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char** argv) { try { common::GlobalData::argc = argc; diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp index bafcd33ce9..6757f8c1b0 100644 --- a/aepsilon2/src/aepsilon.cpp +++ b/aepsilon2/src/aepsilon.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char** argv) { try { common::GlobalData::argc = argc; diff --git a/agenerate2/src/agenerate.cpp b/agenerate2/src/agenerate.cpp index d0e8271b9c..633a890458 100644 --- a/agenerate2/src/agenerate.cpp +++ b/agenerate2/src/agenerate.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * argv[] ) { try { common::GlobalData::argc = argc; diff --git a/aintegral2/src/aintegral.cpp b/aintegral2/src/aintegral.cpp index fae81777ec..bda22e659f 100644 --- a/aintegral2/src/aintegral.cpp +++ b/aintegral2/src/aintegral.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char** argv) { try { common::GlobalData::argc = argc; diff --git a/alangop2/src/alangop.cpp b/alangop2/src/alangop.cpp index a60085a6e4..ad6f226ae6 100644 --- a/alangop2/src/alangop.cpp +++ b/alangop2/src/alangop.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char* argv[]) { try { common::GlobalData::argc = argc; diff --git a/alib2cli/src/ast/params/FileParam.h b/alib2cli/src/ast/params/FileParam.h index 4c50a5e387..4a83ee066c 100644 --- a/alib2cli/src/ast/params/FileParam.h +++ b/alib2cli/src/ast/params/FileParam.h @@ -16,7 +16,9 @@ public: virtual std::shared_ptr < abstraction::OperationAbstraction > translateAndEval ( const std::shared_ptr < abstraction::OperationAbstraction > &, Environment & environment ) const override { ext::deque < sax::Token > tokens = sax::FromXMLParserHelper::parseInput ( m_arg->eval ( environment ) ); std::string type = tokens [ 0 ].getData ( ); - return abstraction::Registry::getXmlParserAbstraction ( type, tokens ); + std::shared_ptr < abstraction::OperationAbstraction > res = abstraction::Registry::getXmlParserAbstraction ( type, tokens ); + res->eval ( ); + return res; } }; diff --git a/alib2cli/src/ast/statements/FileStatement.cpp b/alib2cli/src/ast/statements/FileStatement.cpp index 98a0ad940d..15920e32ee 100644 --- a/alib2cli/src/ast/statements/FileStatement.cpp +++ b/alib2cli/src/ast/statements/FileStatement.cpp @@ -18,7 +18,9 @@ std::shared_ptr < abstraction::OperationAbstraction > FileStatement::translateAn if ( type == "" ) type = tokens [ 0 ].getData ( ); - return abstraction::Registry::getXmlParserAbstraction ( type, tokens ); + std::shared_ptr < abstraction::OperationAbstraction > res = abstraction::Registry::getXmlParserAbstraction ( type, std::move ( tokens ) ); + res->eval ( ); + return res; } } /* namespace cli */ diff --git a/alib2common/src/abstraction/CastRegistry.hpp b/alib2common/src/abstraction/CastRegistry.hpp index b685188769..ab4b03720b 100644 --- a/alib2common/src/abstraction/CastRegistry.hpp +++ b/alib2common/src/abstraction/CastRegistry.hpp @@ -11,6 +11,7 @@ #include <memory> #include <string> #include <set> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> diff --git a/alib2common/src/abstraction/DowncastRegistry.hpp b/alib2common/src/abstraction/DowncastRegistry.hpp index 331f477e69..a073e5788a 100644 --- a/alib2common/src/abstraction/DowncastRegistry.hpp +++ b/alib2common/src/abstraction/DowncastRegistry.hpp @@ -10,6 +10,7 @@ #include <memory> #include <string> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> diff --git a/alib2common/src/abstraction/ImmediateRegistry.hpp b/alib2common/src/abstraction/ImmediateRegistry.hpp index 369995e001..a4e1d273fc 100644 --- a/alib2common/src/abstraction/ImmediateRegistry.hpp +++ b/alib2common/src/abstraction/ImmediateRegistry.hpp @@ -8,10 +8,9 @@ #ifndef _IMMEDIATE_REGISTRY_HPP_ #define _IMMEDIATE_REGISTRY_HPP_ -#include <factory/XmlDataFactory.hpp> - #include <memory> #include <string> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> @@ -43,7 +42,7 @@ public: template < class ResultType > static void registerImmediate ( std::string result ) { if ( ! getEntries ( ).insert ( std::make_pair ( result, std::unique_ptr < Entry > ( new EntryImpl < ResultType > ( ) ) ) ).second ) - throw ::exception::CommonException ( "Entry " + result + " already registered." ); + throw exception::CommonException ( "Entry " + result + " already registered." ); } template < class ResultType > diff --git a/alib2common/src/abstraction/NormalizeRegistry.hpp b/alib2common/src/abstraction/NormalizeRegistry.hpp index a5791d6d00..fc5e768ff8 100644 --- a/alib2common/src/abstraction/NormalizeRegistry.hpp +++ b/alib2common/src/abstraction/NormalizeRegistry.hpp @@ -10,6 +10,7 @@ #include <memory> #include <string> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> diff --git a/alib2common/src/abstraction/OperationAbstraction.hpp b/alib2common/src/abstraction/OperationAbstraction.hpp index 258d42e38f..d37e9f12b2 100644 --- a/alib2common/src/abstraction/OperationAbstraction.hpp +++ b/alib2common/src/abstraction/OperationAbstraction.hpp @@ -14,7 +14,6 @@ #include <functional> #include <exception/CommonException.h> -#include <factory/XmlDataFactory.hpp> namespace abstraction { diff --git a/alib2common/src/abstraction/ValuePrinterRegistry.hpp b/alib2common/src/abstraction/ValuePrinterRegistry.hpp index 8d797d1ec7..d3851708e7 100644 --- a/alib2common/src/abstraction/ValuePrinterRegistry.hpp +++ b/alib2common/src/abstraction/ValuePrinterRegistry.hpp @@ -10,6 +10,7 @@ #include <memory> #include <string> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> diff --git a/alib2common/src/abstraction/XmlComposerAbstraction.hpp b/alib2common/src/abstraction/XmlComposerAbstraction.hpp index da4003dbcc..d3cd659e2d 100644 --- a/alib2common/src/abstraction/XmlComposerAbstraction.hpp +++ b/alib2common/src/abstraction/XmlComposerAbstraction.hpp @@ -10,6 +10,7 @@ #include <abstraction/UnaryOperationAbstraction.hpp> #include <tuple> +#include <factory/XmlDataFactory.hpp> namespace abstraction { diff --git a/alib2common/src/abstraction/XmlComposerRegistry.hpp b/alib2common/src/abstraction/XmlComposerRegistry.hpp index 7b85af772d..89b4ed56d5 100644 --- a/alib2common/src/abstraction/XmlComposerRegistry.hpp +++ b/alib2common/src/abstraction/XmlComposerRegistry.hpp @@ -11,6 +11,7 @@ #include <memory> #include <string> #include <set> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> diff --git a/alib2common/src/abstraction/XmlFileWriterAbstraction.hpp b/alib2common/src/abstraction/XmlFileWriterAbstraction.hpp index c4283495b8..07a4f47f9a 100644 --- a/alib2common/src/abstraction/XmlFileWriterAbstraction.hpp +++ b/alib2common/src/abstraction/XmlFileWriterAbstraction.hpp @@ -10,6 +10,7 @@ #include <abstraction/UnaryOperationAbstraction.hpp> #include <tuple> +#include <factory/XmlDataFactory.hpp> namespace abstraction { diff --git a/alib2common/src/abstraction/XmlFileWriterRegistry.hpp b/alib2common/src/abstraction/XmlFileWriterRegistry.hpp index bca003992a..3bf2a05406 100644 --- a/alib2common/src/abstraction/XmlFileWriterRegistry.hpp +++ b/alib2common/src/abstraction/XmlFileWriterRegistry.hpp @@ -11,6 +11,7 @@ #include <memory> #include <string> #include <set> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> diff --git a/alib2common/src/abstraction/XmlParserAbstraction.hpp b/alib2common/src/abstraction/XmlParserAbstraction.hpp index 5011921ef8..90db4e5263 100644 --- a/alib2common/src/abstraction/XmlParserAbstraction.hpp +++ b/alib2common/src/abstraction/XmlParserAbstraction.hpp @@ -10,6 +10,8 @@ #include <abstraction/NullaryOperationAbstraction.hpp> #include <tuple> +#include <exception/CommonException.h> +#include <factory/XmlDataFactory.hpp> namespace abstraction { @@ -31,6 +33,12 @@ public: } }; +template < > +inline bool XmlParserAbstraction < exception::CommonException >::run ( ) { + exception::CommonException ex = alib::XmlDataFactory::fromTokens ( std::move ( m_tokens ) ); + throw ex; +} + } /* namespace abstraction */ #endif /* _XML_PARSER_ABSTRACTION_HPP_ */ diff --git a/alib2common/src/abstraction/XmlParserRegistry.hpp b/alib2common/src/abstraction/XmlParserRegistry.hpp index eef86abb62..cce9aaf60b 100644 --- a/alib2common/src/abstraction/XmlParserRegistry.hpp +++ b/alib2common/src/abstraction/XmlParserRegistry.hpp @@ -10,9 +10,11 @@ #include <memory> #include <string> +#include <map> #include <exception/CommonException.h> #include <abstraction/OperationAbstraction.hpp> +#include <factory/XmlDataFactory.hpp> namespace abstraction { diff --git a/aminimize2/src/aminimize.cpp b/aminimize2/src/aminimize.cpp index f9686bfce8..80994a095e 100644 --- a/aminimize2/src/aminimize.cpp +++ b/aminimize2/src/aminimize.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char** argv) { try { common::GlobalData::argc = argc; diff --git a/anormalize2/src/anormalize.cpp b/anormalize2/src/anormalize.cpp index 2afa35add0..f340f745c2 100644 --- a/anormalize2/src/anormalize.cpp +++ b/anormalize2/src/anormalize.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * * argv ) { try { common::GlobalData::argc = argc; diff --git a/aql2/src/aql.cpp b/aql2/src/aql.cpp index c5de390dc3..1b7403027f 100644 --- a/aql2/src/aql.cpp +++ b/aql2/src/aql.cpp @@ -34,6 +34,8 @@ std::istream& operator>> ( std::istream & in, std::pair < T, U > & value ) { #include "prompt/Prompt.h" +#include <factory/XmlDataFactory.hpp> + namespace TCLAP { template < class T, class U > diff --git a/aql2/src/prompt/Prompt.cpp b/aql2/src/prompt/Prompt.cpp index 144bdfc832..5a4507b9ba 100644 --- a/aql2/src/prompt/Prompt.cpp +++ b/aql2/src/prompt/Prompt.cpp @@ -17,6 +17,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + char * Prompt::stripwhite ( char * begin ) { while ( isspace ( * begin ) ) ++ begin; diff --git a/aquery2/src/aquery.cpp b/aquery2/src/aquery.cpp index 5dec9ad18a..ca1733ebfd 100644 --- a/aquery2/src/aquery.cpp +++ b/aquery2/src/aquery.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * argv[] ) { try { common::GlobalData::argc = argc; diff --git a/arand2/src/arand.cpp b/arand2/src/arand.cpp index 039b02d443..810466a114 100644 --- a/arand2/src/arand.cpp +++ b/arand2/src/arand.cpp @@ -14,6 +14,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * argv[] ) { try { common::GlobalData::argc = argc; diff --git a/arename2/src/arename.cpp b/arename2/src/arename.cpp index 18384e979d..29da8c7f1d 100644 --- a/arename2/src/arename.cpp +++ b/arename2/src/arename.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * * argv ) { try { common::GlobalData::argc = argc; diff --git a/areverse2/src/areverse.cpp b/areverse2/src/areverse.cpp index d2f39fe7c5..9d3249e0ac 100644 --- a/areverse2/src/areverse.cpp +++ b/areverse2/src/areverse.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char** argv) { try { common::GlobalData::argc = argc; diff --git a/arun2/src/arun.cpp b/arun2/src/arun.cpp index 2b2d7f24be..be4785f260 100644 --- a/arun2/src/arun.cpp +++ b/arun2/src/arun.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main(int argc, char* argv[]) { try { common::GlobalData::argc = argc; diff --git a/astringology2/src/astringology.cpp b/astringology2/src/astringology.cpp index 7e9ff82c57..4a05c94f1c 100644 --- a/astringology2/src/astringology.cpp +++ b/astringology2/src/astringology.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + int main ( int argc, char * argv[] ) { try { common::GlobalData::argc = argc; diff --git a/atrim2/src/atrim.cpp b/atrim2/src/atrim.cpp index 694eb4d140..29c65c1e20 100644 --- a/atrim2/src/atrim.cpp +++ b/atrim2/src/atrim.cpp @@ -13,6 +13,8 @@ #include <lexer/Lexer.h> #include <parser/Parser.h> +#include <factory/XmlDataFactory.hpp> + std::string trimGrammar ( bool del_unreachable, bool del_unproductive ) { if( del_unreachable && del_unproductive ) return "execute grammar::simplify::Trim $input > $output"; -- GitLab