From 478eed4ef9ece1b86b2fed7bfe57d62180b12c92 Mon Sep 17 00:00:00 2001 From: thing1 Date: Tue, 2 Jul 2024 11:51:10 +0100 Subject: started type system --- comp/lucas-standen-NEA/code/execution/Makefile | 2 ++ comp/lucas-standen-NEA/code/execution/builtin.c | 20 ++++++++++---------- comp/lucas-standen-NEA/code/execution/exec | Bin 30040 -> 33904 bytes comp/lucas-standen-NEA/code/execution/exec.c | 8 +------- 4 files changed, 13 insertions(+), 17 deletions(-) (limited to 'comp/lucas-standen-NEA/code/execution') diff --git a/comp/lucas-standen-NEA/code/execution/Makefile b/comp/lucas-standen-NEA/code/execution/Makefile index 405f9de..00c18b6 100644 --- a/comp/lucas-standen-NEA/code/execution/Makefile +++ b/comp/lucas-standen-NEA/code/execution/Makefile @@ -4,3 +4,5 @@ exec: exec.c builtin cc exec.c builtin.o ../tokenizer/tokenizer.o ../global/util.o -o exec -ggdb builtin: builtin.c cc builtin.c -c -o builtin.o -ggdb +clean: + rm -rf *.o exec 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; diff --git a/comp/lucas-standen-NEA/code/execution/exec b/comp/lucas-standen-NEA/code/execution/exec index ca6eb33..e1cfbf1 100755 Binary files a/comp/lucas-standen-NEA/code/execution/exec and b/comp/lucas-standen-NEA/code/execution/exec differ diff --git a/comp/lucas-standen-NEA/code/execution/exec.c b/comp/lucas-standen-NEA/code/execution/exec.c index fb85d3f..adb6f25 100644 --- a/comp/lucas-standen-NEA/code/execution/exec.c +++ b/comp/lucas-standen-NEA/code/execution/exec.c @@ -8,15 +8,9 @@ #include "../tokenizer/tokenizer.h" int main(){ - char *sample = "(write (* 2 5))"; + char *sample = "(exit (+ 1 1))"; ast_node *root = tokenize(sample); doCall(root); - sample = "(write \n)"; - root = tokenize(sample); - doCall(root); - sample = "(exit 0)"; - root = tokenize(sample); - doCall(root); CheckedFreeALL(); -- cgit v1.2.3