Browse Source
Added DtmcParser class that parses a whole DTMC, making use of the
Added DtmcParser class that parses a whole DTMC, making use of the
labeling and transitions parser. Removed the parseDtmc function from IoUtility, as it became obsolete with the DtmcParser class, fitted test cases accordingly.main
6 changed files with 87 additions and 14 deletions
-
2src/models/Dtmc.h
-
33src/parser/DtmcParser.cpp
-
39src/parser/DtmcParser.h
-
14src/utility/IoUtility.cpp
-
4src/utility/IoUtility.h
-
9test/parser/ParseDtmcTest.cpp
@ -0,0 +1,33 @@ |
|||||
|
/*
|
||||
|
* DtmcParser.cpp |
||||
|
* |
||||
|
* Created on: 19.12.2012 |
||||
|
* Author: thomas |
||||
|
*/ |
||||
|
|
||||
|
#include "DtmcParser.h"
|
||||
|
#include "DeterministicSparseTransitionParser.h"
|
||||
|
#include "AtomicPropositionLabelingParser.h"
|
||||
|
|
||||
|
namespace mrmc { |
||||
|
namespace parser { |
||||
|
|
||||
|
/*!
|
||||
|
* Parses a transition file and a labeling file and produces a DTMC out of them; a pointer to the dtmc |
||||
|
* is saved in the field "dtmc" |
||||
|
* Note that the labeling file may have at most as many nodes as the transition file! |
||||
|
* |
||||
|
* @param transitionSystemFile String containing the location of the transition file (....tra) |
||||
|
* @param labelingFile String containing the location of the labeling file (....lab) |
||||
|
*/ |
||||
|
DtmcParser::DtmcParser(std::string const & transitionSystemFile, std::string const & labelingFile) { |
||||
|
mrmc::parser::DeterministicSparseTransitionParser tp(transitionSystemFile); |
||||
|
uint_fast64_t nodeCount = tp.getMatrix()->getRowCount(); |
||||
|
|
||||
|
mrmc::parser::AtomicPropositionLabelingParser lp(nodeCount, labelingFile); |
||||
|
|
||||
|
dtmc = std::shared_ptr<mrmc::models::Dtmc<double> >(new mrmc::models::Dtmc<double>(tp.getMatrix(), lp.getLabeling())); |
||||
|
} |
||||
|
|
||||
|
} /* namespace parser */ |
||||
|
} /* namespace mrmc */ |
@ -0,0 +1,39 @@ |
|||||
|
/* |
||||
|
* DtmcParser.h |
||||
|
* |
||||
|
* Created on: 19.12.2012 |
||||
|
* Author: thomas |
||||
|
*/ |
||||
|
|
||||
|
#ifndef DTMCPARSER_H_ |
||||
|
#define DTMCPARSER_H_ |
||||
|
|
||||
|
#include "Parser.h" |
||||
|
#include "models/Dtmc.h" |
||||
|
|
||||
|
namespace mrmc { |
||||
|
namespace parser { |
||||
|
|
||||
|
/*! |
||||
|
* @brief Load label and transition file and return initialized dtmc object |
||||
|
* |
||||
|
* @Note This class creates a new Dtmc object that can |
||||
|
* be accessed via getDtmc(). However, it will not delete this object! |
||||
|
* |
||||
|
* @Note The labeling representation in the file may use at most as much nodes as are specified in the dtmc. |
||||
|
*/ |
||||
|
class DtmcParser: public mrmc::parser::Parser { |
||||
|
public: |
||||
|
DtmcParser(std::string const & transitionSystemFile, std::string const & labelingFile); |
||||
|
|
||||
|
std::shared_ptr<mrmc::models::Dtmc<double>> getDtmc() { |
||||
|
return this->dtmc; |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
std::shared_ptr<mrmc::models::Dtmc<double>> dtmc; |
||||
|
}; |
||||
|
|
||||
|
} /* namespace parser */ |
||||
|
} /* namespace mrmc */ |
||||
|
#endif /* DTMCPARSER_H_ */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue