diff options
Diffstat (limited to 'types.c')
-rw-r--r-- | types.c | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -0,0 +1,35 @@ +#include <stdbool.h> +#include <stdlib.h> + +#include "types.h" + +ast *newast(char *fname) { + ast *a = malloc(sizeof(ast)); + a->fname = fname; + return a; +} + +values *newastval(ast *a) { + values *v = malloc(sizeof(values)); + v->ts[v->argc] = FUN; + v->as[0] = a; + v->argc = 1; +} + +values *newintval(int i) { + values *v = malloc(sizeof(values)); + v->ts[v->argc] = INT; + v->is[0] = i; + v->argc = 1; +} + +values *addval(values *vs, values *v) { + if (v->ts[0] == INT) + vs->is[vs->argc] = v->is[0]; + else + vs->as[vs->argc] = v->as[0]; + + vs->ts[vs->argc] = v->ts[0]; + vs->argc++; + return vs; +} |