Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ImcaMarkovAutomatonParserGrammar.h
Go to the documentation of this file.
1#pragma once
2
3#include <fstream>
4#include <memory>
5
9
11
12namespace storm {
13namespace parser {
14
15template<typename ValueType, typename StateType = uint32_t>
16class ImcaParserGrammar : public qi::grammar<Iterator, storm::storage::sparse::ModelComponents<ValueType>(), Skipper> {
17 public:
19
20 private:
21 void initialize();
22
23 std::pair<StateType, ValueType> createStateValuePair(StateType const& state, ValueType const& value);
24 StateType getStateIndex(std::string const& stateString);
25 void addInitialState(StateType const& state);
26 void addGoalState(StateType const& state);
27 void addChoiceToStateBehavior(StateType const& state, std::string const& label, std::vector<std::pair<StateType, ValueType>> const& transitions,
28 boost::optional<ValueType> const& reward);
30
31 qi::rule<Iterator, storm::storage::sparse::ModelComponents<ValueType>(), Skipper> start;
32
33 qi::rule<Iterator, qi::unused_type(), Skipper> initials;
34 qi::rule<Iterator, qi::unused_type(), Skipper> goals;
35 qi::rule<Iterator, qi::unused_type(), Skipper> transitions;
36
37 qi::rule<Iterator, qi::unused_type(), Skipper> choice;
38 qi::rule<Iterator, std::pair<StateType, ValueType>(), Skipper> transition;
39 qi::rule<Iterator, std::string(), Skipper> choicelabel;
40 qi::rule<Iterator, ValueType(), Skipper> reward;
41 qi::rule<Iterator, StateType(), Skipper> state;
42 qi::rule<Iterator, ValueType(), Skipper> value;
43
44 bool buildChoiceLabels;
45
46 StateType numStates;
47 StateType numChoices;
48 StateType numTransitions;
49 bool hasStateReward;
50 bool hasActionReward;
51
52 std::vector<storm::generator::StateBehavior<ValueType, StateType>> stateBehaviors;
53 storm::storage::BitVector initialStates, goalStates, markovianStates;
54 std::map<std::string, StateType> stateIndices;
55};
56
57} // namespace parser
58} // namespace storm
PositionIteratorType Iterator
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
LabParser.cpp.
Definition cli.cpp:18