36class ExpressionParser :
public qi::grammar<Iterator, storm::expressions::Expression(), Skipper> {
53 qi::symbols<char, uint_fast64_t>
const& invalidIdentifiers_ = qi::symbols<char, uint_fast64_t>(),
bool enableErrorHandling =
true,
54 bool allowBacktracking =
false);
67 void setIdentifierMapping(qi::symbols<char, storm::expressions::Expression>
const* identifiers_);
76 void setIdentifierMapping(std::unordered_map<std::string, storm::expressions::Expression>
const& identifierMapping);
98 struct orOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
105 orOperatorStruct orOperator_;
107 struct andOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
108 andOperatorStruct() {
114 andOperatorStruct andOperator_;
116 struct equalityOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
117 equalityOperatorStruct() {
123 equalityOperatorStruct equalityOperator_;
125 struct relationalOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
126 relationalOperatorStruct() {
133 relationalOperatorStruct relationalOperator_;
135 struct plusOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
136 plusOperatorStruct() {
142 plusOperatorStruct plusOperator_;
144 struct multiplicationOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
145 multiplicationOperatorStruct() {
151 multiplicationOperatorStruct multiplicationOperator_;
153 struct infixPowerModuloOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
154 infixPowerModuloOperatorStruct() {
160 infixPowerModuloOperatorStruct infixPowerModuloOperator_;
162 struct unaryOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
163 unaryOperatorStruct() {
169 unaryOperatorStruct unaryOperator_;
171 struct floorCeilOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
172 floorCeilOperatorStruct() {
178 floorCeilOperatorStruct floorCeilOperator_;
180 struct minMaxOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
181 minMaxOperatorStruct() {
187 minMaxOperatorStruct minMaxOperator_;
189 struct prefixPowerModuloLogarithmOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
190 prefixPowerModuloLogarithmOperatorStruct() {
197 prefixPowerModuloLogarithmOperatorStruct prefixPowerModuloLogarithmOperator_;
199 struct predicateOperatorStruct : qi::symbols<char, storm::expressions::OperatorType> {
200 predicateOperatorStruct() {
207 predicateOperatorStruct predicateOperator_;
209 std::unique_ptr<ExpressionCreator> expressionCreator;
212 qi::symbols<char, uint_fast64_t> invalidIdentifiers_;
234 qi::rule<
Iterator, std::string(), Skipper> identifier;
237 boost::spirit::qi::real_parser<storm::RationalNumber, RationalPolicies<storm::RationalNumber>> rationalLiteral_;
239 bool isValidIdentifier(std::string
const& identifier);
242 phoenix::function<SpiritErrorHandler> handler;