valeri/src/compiler.hpp

24 lines
566 B
C++
Raw Normal View History

#pragma once
#include "common.hpp"
2024-08-04 19:38:56 +00:00
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:
2024-08-09 22:45:06 +00:00
Compiler() {}
Result<Value> compile(Value& expr);
2024-08-04 19:38:56 +00:00
Result<Expression> compile_expr(Context& context, Value& expr);
Result<Expression> compile_list(Context& context, Pair& expr);
2024-08-10 10:17:20 +00:00
Result<Expression> compile_primop(Context& context, Symbol& op, Pair& expr);
2024-08-10 17:24:16 +00:00
Result<Expression> compile_int64(Context& context, Int64& value);
};