10 static struct treenode *_new_plain(int op)
12 struct treenode *new = (TREECAST) malloc(TREESIZE);
14 new->kids[0] = new->kids[1] = TREENULL;
15 new->parent = TREENULL;
17 new->name = new->reg = (char *)NULL;
18 new->val = new->skip = new->exprcount = 0;
19 new->param_index = -1;
23 struct treenode *new_node(int op, struct treenode *l, struct treenode *r, int exprcount)
25 struct treenode *new = _new_plain(op);
28 fprintf(stderr, "new_node: %i (%s)\n", op, o_names[op]);
33 new->name = (char *)NULL;
34 new->exprcount = exprcount;
38 struct treenode *new_param(int op, char *name, struct treenode *l, struct treenode *r, int param_index, int exprcount)
40 struct treenode *new = new_node(op, l, r, exprcount);
43 fprintf(stderr, "new_param: %i (index)\n", param_index);
45 new->param_index = param_index;
50 struct treenode *new_number(long val, int exprcount)
52 struct treenode *new = _new_plain(O_NUM);
53 /* TODO: maximal groesse? */
55 char *t = (char*) malloc(BUFMAX);
58 fprintf(stderr, "new_number: %i\n", val);
61 new->exprcount = exprcount;
63 sprintf(t, "%li", val);
69 static void write_indent(int i)
72 for(a = 0; a < i; a++) {
73 fprintf(stderr, "| ");
77 void write_tree(struct treenode *node, int indent)
80 fprintf(stderr, "%s @ %%%s (%i). \"%s\"\n", o_names[node->op], node->reg, node->exprcount, node->name == (char*) NULL ? "" : node->name);
81 if(node->kids[0] != TREENULL) {
82 write_tree(node->kids[0], indent+1);
84 if(node->kids[1] != TREENULL) {
85 write_tree(node->kids[1], indent+1);