#include "src/parser/NondeterministicModelParser.h" #include #include #include "src/parser/NondeterministicSparseTransitionParser.h" #include "src/parser/AtomicPropositionLabelingParser.h" #include "src/parser/SparseStateRewardParser.h" namespace storm { namespace parser { NondeterministicModelParser::Result NondeterministicModelParser::parseNondeterministicModel(std::string const & transitionsFilename, std::string const & labelingFilename, std::string const & stateRewardFilename, std::string const & transitionRewardFilename) { // Parse the transitions. storm::storage::SparseMatrix transitions(std::move(storm::parser::NondeterministicSparseTransitionParser::parseNondeterministicTransitions(transitionsFilename))); uint_fast64_t stateCount = transitions.getColumnCount(); // Parse the state labeling. storm::models::sparse::StateLabeling labeling(std::move(storm::parser::AtomicPropositionLabelingParser::parseAtomicPropositionLabeling(stateCount, labelingFilename))); // Only parse state rewards if a file is given. boost::optional> stateRewards; if (stateRewardFilename != "") { stateRewards = storm::parser::SparseStateRewardParser::parseSparseStateReward(stateCount, stateRewardFilename); } // Only parse transition rewards if a file is given. boost::optional> transitionRewards; if (transitionRewardFilename != "") { transitionRewards = storm::parser::NondeterministicSparseTransitionParser::parseNondeterministicTransitionRewards(transitionRewardFilename, transitions); } // Construct the result. Result result(std::move(transitions), std::move(labeling)); result.stateRewards = stateRewards; result.transitionRewards = transitionRewards; return result; } storm::models::sparse::Mdp NondeterministicModelParser::parseMdp(std::string const & transitionsFilename, std::string const & labelingFilename, std::string const & stateRewardFilename, std::string const & transitionRewardFilename) { Result parserResult = parseNondeterministicModel(transitionsFilename, labelingFilename, stateRewardFilename, transitionRewardFilename); return storm::models::sparse::Mdp(std::move(parserResult.transitionSystem), std::move(parserResult.labeling), std::move(parserResult.stateRewards), std::move(parserResult.transitionRewards), boost::optional>>()); } } /* namespace parser */ } /* namespace storm */