#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() {} Result compile(Value& expr); Result compile_expr(Context& context, Value& expr); Result compile_list(Context& context, Pair& expr); Result compile_primop(Context& context, Symbol& op, Pair& expr); };