#pragma once #include "common.hpp" struct Context; struct Expression { Expression() {} Expression(uint64_t reg, Array&& code) : reg(reg), code(std::move(code)) {} uint64_t reg; Array code; }; class Compiler { public: Compiler(Arena& arena) : _arena(arena) {} Result compile(Value& expr); Result compile_expr(Context& context, Value& expr); Result compile_list(Context& context, Pair& expr); private: Arena& _arena; };