Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExprtkExpressionEvaluator.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <unordered_map>
5#include <vector>
6
8
10
12
13namespace storm {
14namespace expressions {
15
16template<typename RationalType>
18 public:
20
21 bool asBool(Expression const& expression) const override;
22 int_fast64_t asInt(Expression const& expression) const override;
23
24 void setBooleanValue(storm::expressions::Variable const& variable, bool value) override;
25 void setIntegerValue(storm::expressions::Variable const& variable, int_fast64_t value) override;
26 void setRationalValue(storm::expressions::Variable const& variable, double value) override;
27
28 protected:
29 typedef double ValueType;
31
38
39 // The parser used.
40 mutable std::unique_ptr<exprtk::parser<ValueType>> parser;
41
42 // The symbol table used.
43 mutable std::unique_ptr<exprtk::symbol_table<ValueType>> symbolTable;
44
45 // The actual data that is fed into the expression.
46 std::vector<ValueType> booleanValues;
47 std::vector<ValueType> integerValues;
48 std::vector<ValueType> rationalValues;
49};
50
52 public:
59
60 double asRational(Expression const& expression) const override;
61};
62} // namespace expressions
63} // namespace storm
This class is responsible for managing a set of typed variables and all expressions using these varia...
void setIntegerValue(storm::expressions::Variable const &variable, int_fast64_t value) override
std::unique_ptr< exprtk::symbol_table< ValueType > > symbolTable
std::unique_ptr< exprtk::parser< ValueType > > parser
bool asBool(Expression const &expression) const override
void setBooleanValue(storm::expressions::Variable const &variable, bool value) override
int_fast64_t asInt(Expression const &expression) const override
CompiledExpressionType const & getCompiledExpression(storm::expressions::Expression const &expression) const
Retrieves a compiled version of the given expression.
ExprtkCompiledExpression::CompiledExpressionType CompiledExpressionType
void setRationalValue(storm::expressions::Variable const &variable, double value) override
double asRational(Expression const &expression) const override
LabParser.cpp.
Definition cli.cpp:18