Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExpressionCreator.h
Go to the documentation of this file.
1#pragma once
2#include <memory>
3// Very ugly, but currently we would like to have the symbol table here.
5
6#include <boost/optional.hpp>
8
9namespace storm {
10
11namespace expressions {
12class Expression;
13class ExpressionManager;
14enum struct OperatorType;
15} // namespace expressions
16
17namespace parser {
19 public:
21
23
31 void setIdentifierMapping(qi::symbols<char, storm::expressions::Expression> const* identifiers_);
32
40 void setIdentifierMapping(std::unordered_map<std::string, storm::expressions::Expression> const& identifierMapping);
41
47
49 return acceptDoubleLiterals;
50 }
51
52 void setAcceptDoubleLiterals(bool set = true) {
53 acceptDoubleLiterals = set;
54 }
55
57 storm::expressions::Expression const& e3, bool& pass) const;
58
60 storm::expressions::Expression const& e2, bool& pass) const;
62 storm::expressions::Expression const& e2, bool& pass) const;
64 storm::expressions::Expression const& e2, bool& pass) const;
66 storm::expressions::Expression const& e2, bool& pass) const;
68 storm::expressions::Expression const& e2, bool& pass) const;
70 storm::expressions::Expression const& e2, bool& pass) const;
72 storm::expressions::OperatorType const& operatorType,
73 storm::expressions::Expression const& e2, bool& pass) const;
74 storm::expressions::Expression createUnaryExpression(std::vector<storm::expressions::OperatorType> const& operatorType,
75 storm::expressions::Expression const& e1, bool& pass) const;
76 storm::expressions::Expression createRationalLiteralExpression(storm::RationalNumber const& value, bool& pass) const;
80 storm::expressions::OperatorType const& operatorType,
81 storm::expressions::Expression const& e2, bool& pass) const;
83 bool& pass) const;
85 storm::expressions::Expression getIdentifierExpression(std::string const& identifier, bool& pass) const;
87 std::vector<storm::expressions::Expression> const& operands, bool& pass) const;
88
89 private:
90 // The manager responsible for the expressions.
92 qi::symbols<char, storm::expressions::Expression> const* identifiers = nullptr;
93
94 bool createExpressions = false;
95
96 bool acceptDoubleLiterals = true;
97
98 bool deleteIdentifierMapping = false;
99};
100} // namespace parser
101} // namespace storm
This class is responsible for managing a set of typed variables and all expressions using these varia...
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 createIntegerLiteralExpression(int64_t value, 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
LabParser.cpp.
Definition cli.cpp:18