9 static struct treenode *_new_plain(int op)
11 struct treenode *new = (TREECAST) malloc(TREESIZE);
13 new->kids[0] = new->kids[1] = TREENULL;
14 new->parent = TREENULL;
16 new->name = new->reg = (char *)NULL;
17 new->val = new->skip = 0;
18 new->param_index = -1;
22 struct treenode *new_node(int op, struct treenode *l, struct treenode *r)
24 struct treenode *new = _new_plain(op);
27 fprintf(stderr, "new_node: %i (%s)\n", op, o_names[op]);
32 new->name = (char *)NULL;
36 struct treenode *new_param(int op, struct treenode *l, struct treenode *r, int param_index)
38 struct treenode *new = new_node(op, l, r);
41 fprintf(stderr, "new_param: %i (index)\n", param_index);
43 new->param_index = param_index;
47 struct treenode *new_number(long val)
49 struct treenode *new = _new_plain(O_NUM);
51 fprintf(stderr, "new_number: %i\n", val);
57 static void write_indent(int i)
60 for(a = 0; a < i; a++) {
61 fprintf(stderr, "| ");
65 void write_tree(struct treenode *node, int indent)
68 fprintf(stderr, "%s @ %%%s\n", o_names[node->op], node->reg);
69 if(node->kids[0] != TREENULL) {
70 write_tree(node->kids[0], indent+1);
72 if(node->kids[1] != TREENULL) {
73 write_tree(node->kids[1], indent+1);