#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "tree.h"
#if 0
return new;
}
-struct treenode *new_param(int op, struct treenode *l, struct treenode *r, int param_index, int exprcount)
+struct treenode *new_param(int op, char *name, struct treenode *l, struct treenode *r, int param_index, int exprcount)
{
struct treenode *new = new_node(op, l, r, exprcount);
fprintf(stderr, "new_param: %i (index)\n", param_index);
#endif
new->param_index = param_index;
+ new->name = name;
return new;
}
struct treenode *new_number(long val, int exprcount)
{
struct treenode *new = _new_plain(O_NUM);
+ /* TODO: maximal groesse? */
+#define BUFMAX 40
+ char *t = (char*) malloc(BUFMAX);
+
#ifdef DDTREE
fprintf(stderr, "new_number: %i\n", val);
#endif
new->val = val;
new->exprcount = exprcount;
+ memset(t, 0, BUFMAX);
+ sprintf(t, "%li", val);
+ new->name = t;
+
return new;
}
void write_tree(struct treenode *node, int indent)
{
write_indent(indent);
- fprintf(stderr, "%s @ %%%s (%i)\n", o_names[node->op], node->reg, node->exprcount);
+ fprintf(stderr, "%s @ %%%s (%i). \"%s\"\n", o_names[node->op], node->reg, node->exprcount, node->name == (char*) NULL ? "" : node->name);
if(node->kids[0] != TREENULL) {
write_tree(node->kids[0], indent+1);
}