summaryrefslogtreecommitdiff
path: root/ast.c
blob: 2287b5c7bcecdf2ee1d5ae803f4a16dd35648903 (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
36
37
38
39
40
41
42
43
44
45
#include "ast.h"


ast_node* create_node() {
  ast_node* node = malloc(sizeof(ast_node));

  return node;
}

ast_node* create_program_node(ast_node* previous_node, ast_node* current_node) {
  ast_node* node = malloc(sizeof(ast_node));

  node->type = PROGRAM_NODE;
  node->left = previous_node;
  node->right = current_node;

  return node;
}

ast_node* create_type_node(char* type) {
  ast_node* node = malloc(sizeof(ast_node));
  node->type = TYPE_NODE;

  ast_node_data* data = malloc(sizeof(ast_node_data));
  data->value = type;
  node->data = data;

  printf("type:: %s\n", type);

  return node;
}

ast_node* create_argument_node(char* identifier, ast_node* type) {
  ast_node* node = malloc(sizeof(ast_node));
  node->type = ARGUMENT_NODE;

  ast_node_data* data = malloc(sizeof(ast_node_data));
  data->value = identifier;
  data->type = type;
  node->data = data;

  printf("argument:: %s -- %s\n", identifier, type->data->value);

  return node;
}