Slightly more concise generated code for ints

This commit is contained in:
Bruce Hill 2024-02-13 23:12:20 -05:00
parent b3f61e16ce
commit 1f2b288b32
2 changed files with 5 additions and 1 deletions

View File

@ -34,7 +34,7 @@ CORD compile(env_t *env, ast_t *ast)
case Nil: return CORD_asprintf("(%r)NULL", compile_type(env, Match(ast, Nil)->type));
case Bool: return Match(ast, Bool)->b ? "yes" : "no";
case Var: return Match(ast, Var)->name;
case Int: return CORD_asprintf("((Int%ld_t)%ld)", Match(ast, Int)->precision, Match(ast, Int)->i);
case Int: return CORD_asprintf("I%ld(%ld)", Match(ast, Int)->precision, Match(ast, Int)->i);
case Num: return CORD_asprintf(Match(ast, Num)->precision == 64 ? "%g" : "%gf", Match(ast, Num)->n);
case UnaryOp: {
auto unop = Match(ast, UnaryOp);

View File

@ -18,6 +18,10 @@
#define Int16_t int16_t
#define Int8_t int8_t
#define Int_t int64_t
#define I64(x) ((int64_t)x)
#define I32(x) ((int32_t)x)
#define I16(x) ((int16_t)x)
#define I8(x) ((int8_t)x)
#define Num64_t double
#define Num32_t float