|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: */ ! 6: ! 7: #ifndef lint ! 8: static char sccsid[] = "@(#)tfree.c 5.1 (Berkeley) 6/6/85"; ! 9: #endif not lint ! 10: ! 11: /* ! 12: * Free a tree; this is expensive but useful. ! 13: */ ! 14: ! 15: #include "defs.h" ! 16: #include "tree.h" ! 17: #include "sym.h" ! 18: #include "tree.rep" ! 19: ! 20: tfree(p) ! 21: register NODE *p; ! 22: { ! 23: if (p == NIL) { ! 24: return; ! 25: } ! 26: switch(degree(p->op)) { ! 27: case LEAF: ! 28: switch(p->op) { ! 29: case O_CALL: ! 30: tfree(p->left); ! 31: tfree(p->right); ! 32: break; ! 33: ! 34: case O_QLINE: ! 35: dispose(p->left->sconval); ! 36: dispose(p->left); ! 37: tfree(p->right); ! 38: break; ! 39: ! 40: case O_ALIAS: ! 41: dispose(p->left->sconval); ! 42: dispose(p->left); ! 43: dispose(p->right->sconval); ! 44: dispose(p->right); ! 45: break; ! 46: ! 47: case O_SCON: ! 48: unmkstring(p->nodetype); ! 49: free(p->nodetype); ! 50: free(p->sconval); ! 51: p->sconval = NIL; ! 52: break; ! 53: } ! 54: break; ! 55: ! 56: case BINARY: ! 57: tfree(p->right); ! 58: /* fall through */ ! 59: case UNARY: ! 60: tfree(p->left); ! 61: break; ! 62: ! 63: default: ! 64: panic("bad op %d in tfree", p->op); ! 65: } ! 66: dispose(p); ! 67: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.