From 35baa5ff02a4e87315c2778963cf048d7ce613d2 Mon Sep 17 00:00:00 2001 From: Lanchid Date: Wed, 10 Apr 2013 14:08:48 +0200 Subject: [PATCH] Added parsing of time bounded operators --- src/parser/CslParser.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/parser/CslParser.cpp b/src/parser/CslParser.cpp index 1f451e433..810788056 100644 --- a/src/parser/CslParser.cpp +++ b/src/parser/CslParser.cpp @@ -98,20 +98,20 @@ struct CslParser::CslGrammar : qi::grammar> qi::lit("<=") > qi::int_ > stateFormula)[qi::_val = - phoenix::new_>(qi::_2, qi::_1)]; - boundedEventually.name("path formula (for probabilistic operator)"); + timeBoundedEventually = (qi::lit("F") >> qi::lit("[") > qi::double_ > qi::lit(",") > qi::double_ > qi::lit("]") > stateFormula)[qi::_val = + phoenix::new_>(qi::_1, qi::_2, qi::_3)]; + timeBoundedEventually.name("path formula (for probabilistic operator)"); eventually = (qi::lit("F") > stateFormula)[qi::_val = phoenix::new_ >(qi::_1)]; eventually.name("path formula (for probabilistic operator)"); globally = (qi::lit("G") > stateFormula)[qi::_val = phoenix::new_ >(qi::_1)]; globally.name("path formula (for probabilistic operator)"); - boundedUntil = (stateFormula[qi::_a = phoenix::construct>>(qi::_1)] >> qi::lit("U") >> qi::lit("<=") > qi::int_ > stateFormula) - [qi::_val = phoenix::new_>(phoenix::bind(&storm::formula::AbstractStateFormula::clone, phoenix::bind(&std::shared_ptr>::get, qi::_a)), qi::_3, qi::_2)]; - boundedUntil.name("path formula (for probabilistic operator)"); + timeBoundedUntil = (stateFormula[qi::_a = phoenix::construct>>(qi::_1)] >> qi::lit("U") >> qi::lit("[") > qi::double_ > qi::lit(",") > qi::double_ > qi::lit("]") > stateFormula) + [qi::_val = phoenix::new_>(qi::_2, qi::_3, phoenix::bind(&storm::formula::AbstractStateFormula::clone, phoenix::bind(&std::shared_ptr>::get, qi::_a)), qi::_4)]; + timeBoundedUntil.name("path formula (for probabilistic operator)"); until = (stateFormula[qi::_a = phoenix::construct>>(qi::_1)] >> qi::lit("U") > stateFormula)[qi::_val = phoenix::new_>(phoenix::bind(&storm::formula::AbstractStateFormula::clone, phoenix::bind(&std::shared_ptr>::get, qi::_a)), qi::_2)]; until.name("path formula (for probabilistic operator)"); @@ -138,10 +138,10 @@ struct CslParser::CslGrammar : qi::grammar*(), Skipper> steadyStateNoBoundOperator; qi::rule*(), Skipper> pathFormula; - qi::rule*(), Skipper> boundedEventually; + qi::rule*(), Skipper> timeBoundedEventually; qi::rule*(), Skipper> eventually; qi::rule*(), Skipper> globally; - qi::rule*(), qi::locals< std::shared_ptr>>, Skipper> boundedUntil; + qi::rule*(), qi::locals< std::shared_ptr>>, Skipper> timeBoundedUntil; qi::rule*(), qi::locals< std::shared_ptr>>, Skipper> until; qi::rule*(), Skipper> rewardPathFormula;