1*4e1142d6SAlexander Hansen // SPDX-License-Identifier: Apache-2.0 2*4e1142d6SAlexander Hansen // SPDX-FileCopyrightText: Copyright 2017 Intel Corporation, 2022 IBM Corp. 359ef1e72SChristopher Meis 459ef1e72SChristopher Meis #pragma once 559ef1e72SChristopher Meis 659ef1e72SChristopher Meis #include <optional> 759ef1e72SChristopher Meis #include <string> 859ef1e72SChristopher Meis #include <vector> 959ef1e72SChristopher Meis 1059ef1e72SChristopher Meis namespace expression 1159ef1e72SChristopher Meis { 1259ef1e72SChristopher Meis enum class Operation 1359ef1e72SChristopher Meis { 1459ef1e72SChristopher Meis addition, 1559ef1e72SChristopher Meis division, 1659ef1e72SChristopher Meis multiplication, 1759ef1e72SChristopher Meis subtraction, 1859ef1e72SChristopher Meis modulo, 1959ef1e72SChristopher Meis }; 2059ef1e72SChristopher Meis 2159ef1e72SChristopher Meis std::optional<Operation> parseOperation(const std::string& op); 2259ef1e72SChristopher Meis int evaluate(int a, Operation op, int b); 2359ef1e72SChristopher Meis int evaluate(int substitute, std::vector<std::string>::iterator curr, 2459ef1e72SChristopher Meis std::vector<std::string>::iterator& end); 2559ef1e72SChristopher Meis } // namespace expression 26