|
|
@ -62,7 +62,7 @@ namespace storm { |
|
|
|
eventuallyFormula = (qi::lit("F") >> (-timeBounds) >> pathFormulaWithoutUntil(qi::_r1))[qi::_val = phoenix::bind(&FormulaParserGrammar::createEventuallyFormula, phoenix::ref(*this), qi::_1, qi::_r1, qi::_2)]; |
|
|
|
eventuallyFormula.name("eventually formula"); |
|
|
|
|
|
|
|
globallyFormula = (qi::lit("G") >> pathFormulaWithoutUntil(qi::_r1))[qi::_val = phoenix::bind(&FormulaParserGrammar::createGloballyFormula, phoenix::ref(*this), qi::_1)]; |
|
|
|
globallyFormula = (qi::lit("G") >> (-timeBounds) >> pathFormulaWithoutUntil(qi::_r1))[qi::_val = phoenix::bind(&FormulaParserGrammar::createGloballyFormula, phoenix::ref(*this), qi::_1, qi::_2)]; |
|
|
|
globallyFormula.name("globally formula"); |
|
|
|
|
|
|
|
nextFormula = (qi::lit("X") >> pathFormulaWithoutUntil(qi::_r1))[qi::_val = phoenix::bind(&FormulaParserGrammar::createNextFormula, phoenix::ref(*this), qi::_1)]; |
|
|
@ -324,9 +324,20 @@ namespace storm { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
std::shared_ptr<storm::logic::Formula const> FormulaParserGrammar::createGloballyFormula(std::shared_ptr<storm::logic::Formula const> const& subformula) const { |
|
|
|
std::shared_ptr<storm::logic::Formula const> FormulaParserGrammar::createGloballyFormula(boost::optional<std::vector<std::tuple<boost::optional<storm::logic::TimeBound>, boost::optional<storm::logic::TimeBound>, std::shared_ptr<storm::logic::TimeBoundReference>>>> const& timeBounds, std::shared_ptr<storm::logic::Formula const> const& subformula) const { |
|
|
|
if (timeBounds && !timeBounds.get().empty()) { |
|
|
|
std::vector<boost::optional<storm::logic::TimeBound>> lowerBounds, upperBounds; |
|
|
|
std::vector<storm::logic::TimeBoundReference> timeBoundReferences; |
|
|
|
for (auto const& timeBound : timeBounds.get()) { |
|
|
|
lowerBounds.push_back(std::get<0>(timeBound)); |
|
|
|
upperBounds.push_back(std::get<1>(timeBound)); |
|
|
|
timeBoundReferences.emplace_back(*std::get<2>(timeBound)); |
|
|
|
} |
|
|
|
return std::shared_ptr<storm::logic::Formula const>(new storm::logic::BoundedGloballyFormula(subformula, lowerBounds, upperBounds, timeBoundReferences)); |
|
|
|
} else { |
|
|
|
return std::shared_ptr<storm::logic::Formula const>(new storm::logic::GloballyFormula(subformula)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
std::shared_ptr<storm::logic::Formula const> FormulaParserGrammar::createNextFormula(std::shared_ptr<storm::logic::Formula const> const& subformula) const { |
|
|
|
return std::shared_ptr<storm::logic::Formula const>(new storm::logic::NextFormula(subformula)); |