#ifndef INTERPRETER_OBJECT_EXPRESSION_NODE_HPP #define INTERPRETER_OBJECT_EXPRESSION_NODE_HPP #include "ExpressionNode.hpp" #include "Symbols/Value.hpp" #include #include #include namespace Interpreter { class ObjectExpressionNode : public ExpressionNode { public: using ObjectMap = Symbols::Value::ObjectMap; explicit ObjectExpressionNode(std::vector>> members) : members_(std::move(members)) {} Symbols::Value evaluate(Interpreter & interpreter) const override { ObjectMap obj; for (const auto &kv : members_) { obj[kv.first] = kv.second->evaluate(interpreter); } return Symbols::Value(obj); } std::string toString() const override { return "[object]"; } private: std::vector>> members_; }; } // namespace Interpreter #endif // INTERPRETER_OBJECT_EXPRESSION_NODE_HPP