summaryrefslogtreecommitdiff
path: root/types.c
blob: 4ef1935933bf359ae7dfe3f6b223f38fd76a5274 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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;
}