Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExpressionCreator.h
Go to the documentation of this file.
1#pragma once
2
3// Very ugly, but currently we would like to have the symbol table here.
5
6#include "storm/adapters/RationalNumberAdapter.h" // TODO: use forward header
7
8namespace storm {
9
10namespace expressions {
11class Expression;
12class ExpressionManager;
13enum struct OperatorType;
14} // namespace expressions
15
16namespace parser {
18 public:
20
22
30 void setIdentifierMapping(qi::symbols<char, storm::expressions::Expression> const* identifiers_);
31
39 void setIdentifierMapping(std::unordered_map<std::string, storm::expressions::Expression> const& identifierMapping);
40
46
48 return acceptDoubleLiterals;
49 }
50
51 void setAcceptDoubleLiterals(bool set = true) {
52 acceptDoubleLiterals = set;
53 }
54
56 storm::expressions::Expression const& e3, bool& pass) const;
57
59 storm::expressions::Expression const& e2, bool& pass) const;
61 storm::expressions::Expression const& e2, bool& pass) const;
63 storm::expressions::Expression const& e2, bool& pass) const;
65 storm::expressions::Expression const& e2, bool& pass) const;
67 storm::expressions::Expression const& e2, bool& pass) const;
69 storm::expressions::Expression const& e2, bool& pass) const;
71 storm::expressions::OperatorType const& operatorType,
72 storm::expressions::Expression const& e2, bool& pass) const;
73 storm::expressions::Expression createUnaryExpression(std::vector<storm::expressions::OperatorType> const& operatorType,
74 storm::expressions::Expression const& e1, bool& pass) const;
75 storm::expressions::Expression createRationalLiteralExpression(storm::RationalNumber const& value, bool& pass) const;
76 storm::expressions::Expression createIntegerLiteralExpression(storm::RationalNumber const& value, bool& pass, bool& overflow) const;
79 storm::expressions::OperatorType const& operatorType,
80 storm::expressions::Expression const& e2, bool& pass) const;
82 bool& pass) const;
84 storm::expressions::Expression getIdentifierExpression(std::string const& identifier, bool& pass) const;
86 std::vector<storm::expressions::Expression> const& operands, bool& pass) const;
87
88 private:
89 // The manager responsible for the expressions.
91 qi::symbols<char, storm::expressions::Expression> const* identifiers = nullptr;
92
93 bool createExpressions = false;
94
95 bool acceptDoubleLiterals = true;
96
97 bool deleteIdentifierMapping = false;
98};
99} // namespace parser
100} // namespace storm
This class is responsible for managing a set of typed variables and all expressions using these varia...
storm::expressions::Expression createIntegerLiteralExpression(storm::RationalNumber const &value, bool &pass, bool &overflow) const
storm::expressions::Expression getIdentifierExpression(std::string const &identifier, bool &pass) const
storm::expressions::Expression createRationalLiteralExpression(storm::RationalNumber const &value, bool &pass) const
storm::expressions::Expression createPredicateExpression(storm::expressions::OperatorType const &opTyp, std::vector< storm::expressions::Expression > const &operands, bool &pass) const
storm::expressions::Expression createIteExpression(storm::expressions::Expression const &e1, storm::expressions::Expression const &e2, storm::expressions::Expression const &e3, bool &pass) const
void setIdentifierMapping(qi::symbols< char, storm::expressions::Expression > const *identifiers_)
Sets an identifier mapping that is used to determine valid variables in the expression.
storm::expressions::Expression createMultExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const
storm::expressions::Expression createPlusExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const
storm::expressions::Expression createEqualsExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const
storm::expressions::Expression createFloorCeilExpression(storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e1, bool &pass) const
void unsetIdentifierMapping()
Unsets a previously set identifier mapping.
storm::expressions::Expression createOrExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const
storm::expressions::Expression createRelationalExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const
storm::expressions::Expression createRoundExpression(storm::expressions::Expression const &e1, bool &pass) const
storm::expressions::Expression createBooleanLiteralExpression(bool value, bool &pass) const
storm::expressions::Expression createUnaryExpression(std::vector< storm::expressions::OperatorType > const &operatorType, storm::expressions::Expression const &e1, bool &pass) const
storm::expressions::Expression createPowerModuloLogarithmExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const
storm::expressions::Expression createAndExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const
void setAcceptDoubleLiterals(bool set=true)
storm::expressions::Expression createMinimumMaximumExpression(storm::expressions::Expression const &e1, storm::expressions::OperatorType const &operatorType, storm::expressions::Expression const &e2, bool &pass) const