diff options
author | thing1 <thing1@seacrossedlovers.xyz> | 2024-07-02 11:51:10 +0100 |
---|---|---|
committer | thing1 <thing1@seacrossedlovers.xyz> | 2024-07-02 11:51:10 +0100 |
commit | 478eed4ef9ece1b86b2fed7bfe57d62180b12c92 (patch) | |
tree | b541dda71f7f3deb5d94ece604b86fa18a1527e9 /comp/lucas-standen-NEA/code/execution/builtin.c | |
parent | d933ce70bd2c497e4af26483abafebfce436986e (diff) |
started type system
Diffstat (limited to 'comp/lucas-standen-NEA/code/execution/builtin.c')
-rw-r--r-- | comp/lucas-standen-NEA/code/execution/builtin.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/comp/lucas-standen-NEA/code/execution/builtin.c b/comp/lucas-standen-NEA/code/execution/builtin.c index df3ca03..99aca8c 100644 --- a/comp/lucas-standen-NEA/code/execution/builtin.c +++ b/comp/lucas-standen-NEA/code/execution/builtin.c @@ -13,23 +13,23 @@ void *doCall(ast_node *node){ } } - char *str = CheckedMalloc(20); + I64 *outi64 = CheckedMalloc(sizeof(I64)); switch (id){ case ADD: - snprintf(str, 20, "%d", atoi(node->literalArgs[0]) + atoi(node->literalArgs[1])); - return str; + outi64->data = node->literalArgs[0]->i64->data + node->literalArgs[1]->i64->data; + return outi64; break; case SUB: - snprintf(str, 20, "%d", atoi(node->literalArgs[0]) - atoi(node->literalArgs[1])); - return str; + outi64->data = node->literalArgs[0]->i64->data - node->literalArgs[1]->i64->data; + return outi64; break; case DIV: - snprintf(str, 20, "%d", atoi(node->literalArgs[0]) / atoi(node->literalArgs[1])); - return str; + outi64->data = node->literalArgs[0]->i64->data / node->literalArgs[1]->i64->data; + return outi64; break; case MUL: - snprintf(str, 20, "%d", atoi(node->literalArgs[0]) * atoi(node->literalArgs[1])); - return str; + outi64->data = node->literalArgs[0]->i64->data * node->literalArgs[1]->i64->data; + return outi64; break; case WRITE: @@ -37,7 +37,7 @@ void *doCall(ast_node *node){ break; case EXIT: - int returnValue = atoi(node->literalArgs[0]); + int returnValue = node->literalArgs[0]->i64->data; CheckedFreeALL(); exit(returnValue); break; |