summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA/code/execution/builtin.c
diff options
context:
space:
mode:
authorthing1 <thing1@seacrossedlovers.xyz>2024-07-09 15:40:55 +0100
committerthing1 <thing1@seacrossedlovers.xyz>2024-07-09 15:40:55 +0100
commitb6cf209e65721c9b749124e6c5866b9359fc6583 (patch)
tree6426e7481f864b3a1d72c0bc21e4c89df6e9463e /comp/lucas-standen-NEA/code/execution/builtin.c
parent3f23b452f8ab504a3337f88ddc714c3a660d2648 (diff)
made alot work with vars
Diffstat (limited to 'comp/lucas-standen-NEA/code/execution/builtin.c')
-rw-r--r--comp/lucas-standen-NEA/code/execution/builtin.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/comp/lucas-standen-NEA/code/execution/builtin.c b/comp/lucas-standen-NEA/code/execution/builtin.c
index 12441cd..a2b67fb 100644
--- a/comp/lucas-standen-NEA/code/execution/builtin.c
+++ b/comp/lucas-standen-NEA/code/execution/builtin.c
@@ -1,6 +1,8 @@
#include <stdlib.h>
#include <stdio.h>
-#include "../global/types.h"
+
+#include "vars.h"
+
#include "../global/util.h"
#define MAXARGS 8
@@ -41,10 +43,18 @@ void *doCall(ast_node *node){
for (int i = 0; i < node->literalArgs[0]->arr->len; i++)
fputc(node->literalArgs[0]->arr->arr[i].ch->data, stdout);
break;
+
+ case LET:
+ newVar(node->literalArgs[0]->vdef, node->literalArgs[1]);
+ break;
case EXIT:
- int returnValue = (int)node->literalArgs[0]->i64->data;
- exit(returnValue);
+ exit((int)node->literalArgs[0]->i64->data);
+ break;
+
+ default:
+ fprintf(stderr, "command not implemented");
+ exit(1);
break;
}
}