c-compiler/src/types.cpp
2026-04-10 16:58:27 +03:00

45 lines
1.0 KiB
C++

#include "types.h"
#include <sstream>
namespace types {
int operator_precedence(BinOp& op) {
switch (op) {
case BinOp::Assignment:
return 1000;
case BinOp::Add:
return 10;
default:
return 1000;
}
}
std::string format_operator(BinOp& op) {
switch (op) {
case BinOp::Assignment:
return "=";
case BinOp::Add:
return "+";
default:
return "??";
}
}
std::string FundamentalType::formatted() {
switch (this->m_ty) {
case FundamentalTypeKind::Int:
return "Int";
default:
return "Unknown";
}
}
llvm::Value* FundamentalType::add(codegen::Builder& builder, llvm::Value* lhs, llvm::Value* rhs) {
switch (this->m_ty) {
case FundamentalTypeKind::Int:
return builder.builder->CreateAdd(lhs, rhs);
default:
throw std::runtime_error("Invalid type for add");
}
}
}