mewmewmewmeoow

This commit is contained in:
Luna 2025-03-13 17:57:28 +01:00
parent ea19c28156
commit e90fe8cadf

View file

@ -39,8 +39,51 @@ enum PawVal *op_unequals(struct PawAST *ast, enum PawVal *lhs,
}
enum PawVal *op_add(struct PawAST *ast, enum PawVal *lhs, enum PawVal *rhs) {
return make_pawval_int(ast->mem,
*(int *)val_get_data(lhs) + *(int *)val_get_data(rhs));
float l;
float r;
if (*lhs == PAW_VAL_FLOAT) {
l = *(float *)val_get_data(lhs);
} else if (*lhs == PAW_VAL_INT) {
l = *(int *)val_get_data(lhs);
}
if (*rhs == PAW_VAL_FLOAT) {
r = *(float *)val_get_data(rhs);
} else if (*rhs == PAW_VAL_INT) {
r = *(int *)val_get_data(rhs);
}
return make_pawval_float(ast->mem, l + r);
}
enum PawVal *op_mul(struct PawAST *ast, enum PawVal *lhs, enum PawVal *rhs) {
float l;
float r;
if (*lhs == PAW_VAL_FLOAT) {
l = *(float *)val_get_data(lhs);
} else if (*lhs == PAW_VAL_INT) {
l = *(int *)val_get_data(lhs);
}
if (*rhs == PAW_VAL_FLOAT) {
r = *(float *)val_get_data(rhs);
} else if (*rhs == PAW_VAL_INT) {
r = *(int *)val_get_data(rhs);
}
return make_pawval_float(ast->mem, l * r);
}
enum PawVal *op_sub(struct PawAST *ast, enum PawVal *lhs, enum PawVal *rhs) {
float l;
float r;
if (*lhs == PAW_VAL_FLOAT) {
l = *(float *)val_get_data(lhs);
} else if (*lhs == PAW_VAL_INT) {
l = *(int *)val_get_data(lhs);
}
if (*rhs == PAW_VAL_FLOAT) {
r = *(float *)val_get_data(rhs);
} else if (*rhs == PAW_VAL_INT) {
r = *(int *)val_get_data(rhs);
}
return make_pawval_float(ast->mem, l - r);
}
enum PawVal *make_pawval_float(struct Mem *mem, float n) {