/* * File: ConstBooleanExpressionGrammar.h * Author: nafur * * Created on April 10, 2013, 6:34 PM */ #ifndef CONSTBOOLEANEXPRESSIONGRAMMAR_H #define CONSTBOOLEANEXPRESSIONGRAMMAR_H #include "Includes.h" #include "VariableState.h" #include "IdentifierGrammars.h" #include "Tokens.h" namespace storm { namespace parser { namespace prism { class ConstBooleanExpressionGrammar : public qi::grammar(), Skipper, Unused>, public BaseGrammar { public: ConstBooleanExpressionGrammar(std::shared_ptr& state); private: qi::rule(), Skipper, Unused> constantBooleanExpression; qi::rule(), Skipper> constantOrExpression; qi::rule(), Skipper> constantAndExpression; qi::rule(), Skipper> constantNotExpression; qi::rule(), Skipper> constantAtomicBooleanExpression; qi::rule(), Skipper> constantRelativeExpression; qi::rule(), Skipper> booleanConstantExpression; qi::rule(), Skipper> booleanLiteralExpression; storm::parser::prism::relationalOperatorStruct relations_; std::shared_ptr createRelation(std::shared_ptr left, BinaryRelationExpression::RelationType relationType, std::shared_ptr right); std::shared_ptr createNot(std::shared_ptr child); std::shared_ptr createAnd(std::shared_ptr left, std::shared_ptr right); std::shared_ptr createOr(std::shared_ptr left, std::shared_ptr right); std::shared_ptr createLiteral(const bool value); }; } } } #endif /* CONSTBOOLEANEXPRESSIONGRAMMAR_H */