3#pragma clang diagnostic push
4#pragma clang diagnostic ignored "-Wunused-exception-parameter"
5#include "cpphoafparser/consumer/hoa_intermediate_check_validity.hh"
6#include "cpphoafparser/parser/hoa_parser.hh"
7#include "cpphoafparser/parser/hoa_parser_helper.hh"
8#pragma clang diagnostic pop
19 : apSet(apSet), numberOfStates(numberOfStates), initialState(initialState), acceptance(acceptance) {
21 edgesPerState = apSet.alphabetSize();
22 numberOfEdges = numberOfStates * edgesPerState;
23 successors.resize(numberOfEdges);
35 std::size_t index = from * edgesPerState + label;
36 return successors.at(index);
40 std::size_t index = from * edgesPerState + label;
41 successors.at(index) = successor;
45 return numberOfStates;
59 out <<
"States: " << numberOfStates <<
"\n";
61 out <<
"Start: " << initialState <<
"\n";
63 out <<
"AP: " << apSet.size();
64 for (
unsigned int i = 0; i < apSet.size(); i++) {
65 out <<
" " << cpphoafparser::HOAParserHelper::quote(apSet.getAP(i));
69 out <<
"Acceptance: " << acceptance->getNumberOfAcceptanceSets() <<
" " << *acceptance->getAcceptanceExpression() <<
"\n";
71 out <<
"--BODY--" <<
"\n";
74 out <<
"State: " << s;
77 for (
unsigned int i = 0; i < acceptance->getNumberOfAcceptanceSets(); i++) {
78 if (acceptance->getAcceptanceSet(i).get(s)) {
95 cpphoafparser::HOAIntermediateCheckValidity::ptr validator(
new cpphoafparser::HOAIntermediateCheckValidity(consumer));
96 cpphoafparser::HOAParser::parse(in, validator);
98 return consumer->getDA();
107 STORM_LOG_INFO(
"Deterministic automaton from HOA file '" << filename <<
"' has " << da->getNumberOfStates() <<
" states, " << da->getAPSet().size()
108 <<
" atomic propositions and " << *da->getAcceptance()->getAcceptanceExpression()
109 <<
" as acceptance condition.");
std::size_t alphabet_element
std::shared_ptr< AcceptanceCondition > ptr
static DeterministicAutomaton::ptr parseFromFile(const std::string &filename)
void setSuccessor(std::size_t from, APSet::alphabet_element label, std::size_t successor)
DeterministicAutomaton(APSet apSet, std::size_t numberOfStates, std::size_t initialState, std::shared_ptr< AcceptanceCondition > acceptance)
void printHOA(std::ostream &out) const
std::size_t getSuccessor(std::size_t from, APSet::alphabet_element label) const
std::size_t getInitialState() const
std::size_t getNumberOfEdgesPerState() const
const APSet & getAPSet() const
std::shared_ptr< DeterministicAutomaton > ptr
std::shared_ptr< AcceptanceCondition > getAcceptance() const
std::size_t getNumberOfStates() const
static DeterministicAutomaton::ptr parse(std::istream &in)
std::shared_ptr< HOAConsumerDA > ptr
#define STORM_LOG_INFO(message)
void closeFile(std::ofstream &stream)
Close the given file after writing.
void openFile(std::string const &filepath, std::ofstream &filestream, bool append=false, bool silent=false)
Open the given file for writing.