+ struct treenode *new = new_node(O_FIELD, l, r, exprcount);
+
+#ifdef DDTREE
+ fprintf(stderr, "new_field: %i (soffset)\n", soffset);
+#endif
+ new->soffset = soffset;
+ new->name = name;
+ return new;
+}
+
+struct treenode *new_number(long val, int exprcount)
+{
+ struct treenode *new;
+ /* TODO: maximal groesse? */
+#define BUFMAX 40
+ char *t = (char*) malloc(BUFMAX);
+
+ if (val == 0) {
+ new = _new_plain(O_NULL);
+ } else if(val == -1) {
+ new = _new_plain(O_MONE);
+ } else if(val == -2) {
+ new = _new_plain(O_MTWO);
+ } else if(val == -4) {
+ new = _new_plain(O_MFOUR);
+ } else if(val == -8) {
+ new = _new_plain(O_MEIGHT);
+ } else {
+ new = _new_plain(O_NUM);
+ }
+