blob: 71c8182361d424ee81fefc2183adc033dec82197 (
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
|
#ifndef NODE_H
#define NODE_H
#include <stddef.h>
enum node_type{PROG, FUNC, STMT, EXPR, CONST};
enum node_op{COMP_SYM, NEG_SYM, PLUS_SYM, MINUS_SYM, MULT_SYM, DIV_SYM, MOD_SYM};
extern const char* node_types[];
extern const char* node_ops[];
typedef union {
char *name;
int val;
enum node_op op;
} node_field;
typedef struct Node {
enum node_type type;
node_field field;
struct Node **children;
size_t num_children;
} Node;
Node *create_node(enum node_type type);
Node *create_function(char *name);
Node *create_expr(enum node_op op);
Node *create_const(int val);
void add_child(Node *parent, Node *child);
void free_node(Node *node);
void *print_node(Node *node, int indent);
#endif
|