7#include "formula_binary_operator_node.hpp"
9namespace hi::inline
v1 {
19 auto lhs_ = lhs->evaluate(context);
20 auto rhs_ = rhs->evaluate(context);
22 if (holds_alternative<datum::map_type>(lhs_) and not lhs_.contains(rhs_)) {
23 throw operation_error(std::format(
"{}: Unknown key '{}'.", location, rhs_));
29 throw operation_error(std::format(
"{}: Can not evaluate indexing operation.\n{}", location, e.
what()));
35 auto &lhs_ = lhs->evaluate_lvalue(context);
36 auto rhs_ = rhs->evaluate(context);
40 throw operation_error(std::format(
"{}: Can not evaluate indexing operation.\n{}", location, e.
what()));
46 return std::format(
"({}[{}])", *lhs, *rhs);
DOXYGEN BUG.
Definition algorithm.hpp:13
A dynamic data type.
Definition datum.hpp:223
Definition formula_binary_operator_node.hpp:11
Definition formula_evaluation_context.hpp:15
Definition formula_index_node.hpp:11
datum evaluate(formula_evaluation_context &context) const override
Evaluate an rvalue.
Definition formula_index_node.hpp:17
datum & evaluate_lvalue(formula_evaluation_context &context) const override
Evaluate an existing lvalue.
Definition formula_index_node.hpp:33
Definition parse_location.hpp:18