summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA/code/execution/builtin.c
diff options
context:
space:
mode:
authorthing1 <thing1@seacrossedlovers.xyz>2024-07-02 11:51:10 +0100
committerthing1 <thing1@seacrossedlovers.xyz>2024-07-02 11:51:10 +0100
commit478eed4ef9ece1b86b2fed7bfe57d62180b12c92 (patch)
treeb541dda71f7f3deb5d94ece604b86fa18a1527e9 /comp/lucas-standen-NEA/code/execution/builtin.c
parentd933ce70bd2c497e4af26483abafebfce436986e (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.c20
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;