#pragma once #include #include "storm/storage/expressions/ExpressionManager.h" #include "storm/parser/ExpressionParser.h" #include "storm/storage/expressions/ExpressionEvaluator.h" #include "storm-dft/storage/dft/DFT.h" #include "storm-dft/storage/dft/DFTBuilder.h" // JSON parser #include "json.hpp" using json = nlohmann::json; namespace storm { namespace parser { template class DFTJsonParser { storm::storage::DFTBuilder builder; std::shared_ptr manager; storm::parser::ExpressionParser parser; storm::expressions::ExpressionEvaluator evaluator; std::unordered_map identifierMapping; public: DFTJsonParser() : manager(new storm::expressions::ExpressionManager()), parser(*manager), evaluator(*manager) { } storm::storage::DFT parseJson(std::string const& filename); private: void readFile(std::string const& filename); std::string generateUniqueName(std::string const& id, std::string const& name); ValueType parseRationalExpression(std::string const& expr); }; } }