diff options
author | thing1 <thing1@seacrossedlovers.xyz> | 2024-07-01 11:36:45 +0100 |
---|---|---|
committer | thing1 <thing1@seacrossedlovers.xyz> | 2024-07-01 11:36:45 +0100 |
commit | d933ce70bd2c497e4af26483abafebfce436986e (patch) | |
tree | b15f4f2c297734108ff0717334b912b87a0f995b /comp/lucas-standen-NEA/code/proto/ast/astg.c | |
parent | 42047fea26b14edc67b394db18ce7edb0c6399f8 (diff) |
updated work
Diffstat (limited to 'comp/lucas-standen-NEA/code/proto/ast/astg.c')
-rw-r--r-- | comp/lucas-standen-NEA/code/proto/ast/astg.c | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/comp/lucas-standen-NEA/code/proto/ast/astg.c b/comp/lucas-standen-NEA/code/proto/ast/astg.c deleted file mode 100644 index e96b771..0000000 --- a/comp/lucas-standen-NEA/code/proto/ast/astg.c +++ /dev/null @@ -1,52 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -typedef struct ast_node ast_node; - -typedef enum op { - ADD = 0, - SUB = 1, - MUL = 2, - DIV = 3, -} op; - -typedef struct ast_node { - op operation; - int realLeft; - int realRight; - ast_node *right; - ast_node *left; -} ast_node; - -void freeAst(ast_node *head){ - if (head->left != NULL) - freeAst(head->left); - if (head->right != NULL) - freeAst(head->left); - free(head); -} - -int exec(ast_node *exp){ - if (exp->left != NULL){ - exp->realLeft = exec(exp->left); - freeAst(exp->left); - exp->left = NULL; - } - if (exp->right != NULL){ - exp->realRight = exec(exp->right); - freeAst(exp->right); - exp->right = NULL; - } - - if (exp->operation == ADD) - return exp->realLeft+ exp->realRight; - if (exp->operation == SUB) - return exp->realLeft - exp->realRight; - if (exp->operation == MUL) - return exp->realLeft * exp->realRight; - if (exp->operation == DIV) - return exp->realLeft/ exp->realRight; - return 0; -} - |