#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_EXPRESSION_EXPRESSION_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_EXPRESSION_EXPRESSION_H_

#include <memory>
#include <string>

#include "absl/container/flat_hash_map.h"
#include "absl/container/flat_hash_set.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"

namespace milotic_tlbmc {

class Expression {
 public:
  virtual ~Expression() = default;
  virtual absl::StatusOr<double> Evaluate(
    const absl::flat_hash_map<std::string, double>& variable_maps
  ) const = 0;
  virtual void GetRequiredVariables(
      absl::flat_hash_set<std::string>& variable_names) const = 0;
};

// Parses an expression string into an Expression object.
absl::StatusOr<std::unique_ptr<Expression>> Parse(
  absl::string_view expression);

// Exposed for testing only. Do not use these functions directly.
namespace expression::internal {

absl::string_view ConsumeWhitespace(absl::string_view s);
char Peek(absl::string_view s);
bool Consume(absl::string_view& s, char c);
absl::StatusOr<std::unique_ptr<Expression>> ParsePrimary(absl::string_view& s);
absl::StatusOr<std::unique_ptr<Expression>> ParseFactor(absl::string_view& s);
absl::StatusOr<std::unique_ptr<Expression>> ParseTerm(absl::string_view& s);
absl::StatusOr<std::unique_ptr<Expression>> ParseExpression(
    absl::string_view& s);
}  // namespace expression::internal
}  // namespace milotic_tlbmc

#endif  // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_EXPRESSION_EXPRESSION_H_
