Fix brainf*ck interpreter memory issue
[bob_language.git] / core.h
blobe12505236ea27acf10874dee47fe4df33234b9ba
1 #ifndef CORE_H
2 #define CORE_H
4 #define NODE_EMPTY 0
5 #define NODE_ROOT 1
6 #define NODE_FUNCTION 2
7 #define NODE_FUNC_ARGS 3
8 #define NODE_RETURN 4
9 #define NODE_IF 5
10 #define NODE_WHILE 6
11 #define NODE_PUSH_VAR 7
12 #define NODE_PUSH_BOOL 8
13 #define NODE_PUSH_DEC 9
14 #define NODE_PUSH_HEX 10
15 #define NODE_PUSH_STR 11
16 #define NODE_CALLFN 12
17 #define NODE_CALL_ARGS 13
18 #define NODE_VOID_RETURN 14
19 #define NODE_ARIT_BINARY 15
20 #define NODE_ARIT_UNARY 16
21 #define NODE_SET_VARIABLE 17
22 #define NODE_GET_LENGTH 18
23 #define NODE_SET_LENGTH 19
24 #define NODE_GET_ELEMENT 20
25 #define NODE_SET_ELEMENT 21
26 #define NODE_LINE 22
27 #define NODE_CODEBLOCK 23
29 #define NODE_MAXFUNC 24
31 struct _TreeNode {
32 int id;
33 char *code;
34 struct _TreeNode *next;
35 struct _TreeNode *previous;
36 struct _TreeNode *bottom;
38 typedef struct _TreeNode TreeNode;
40 void core_initialize();
41 void core_finalize();
42 void core_error(char *msg);
44 TreeNode *node_new();
45 void node_set(TreeNode *node, char *code);
46 void node_next(TreeNode *parent, TreeNode *child);
47 void node_bottom(TreeNode *parent, TreeNode *child);
48 void root_output();
50 #endif