|
|
1.1 ! root 1: static char ID[] = "@(#) expr0.c: 1.3 3/13/83"; ! 2: #include "system.h" ! 3: ! 4: #include <stdio.h> ! 5: #include "structs.h" ! 6: #include "extrns.h" ! 7: #include "sgsmacros.h" ! 8: #include "y.tab.h" ! 9: #include "ldmacros.h" ! 10: /*eject*/ ! 11: ENODE * ! 12: buildtree(op,l,r) ! 13: int op; ! 14: ENODE *l,*r; ! 15: { ! 16: ! 17: /* ! 18: * Build a node in the expression tree and ! 19: * return a pointer to it ! 20: */ ! 21: ! 22: register ENODE *p; ! 23: ! 24: p = (ENODE *) myalloc(sizeof(ENODE)); ! 25: ! 26: p->gnode.exop = op; ! 27: p->gnode.exleft = l; ! 28: p->gnode.exright = r; ! 29: return(p); ! 30: } ! 31: /*eject*/ ! 32: ENODE * ! 33: symnode(symp) ! 34: char *symp; ! 35: { ! 36: ! 37: /* ! 38: * Build an expression node for NAME or DOT ! 39: */ ! 40: ! 41: register ENODE *p; ! 42: ! 43: #if ONEPROC ! 44: SYMENT sym; ! 45: #endif ! 46: ! 47: p = (ENODE *) myalloc(sizeof(ENODE)); ! 48: ! 49: if( symp == NULL ) { /* special DOT symbol */ ! 50: p->pnnode.exop = DOT; ! 51: } ! 52: else { ! 53: #if ONEPROC ! 54: p->nnode.exop = NAME; ! 55: zero( (char *) &sym, SYMESZ ); ! 56: #if FLEXNAMES ! 57: if (strlen(symp) > 8) { ! 58: sym.n_zeroes = 0L; ! 59: sym.n_nptr = symp; ! 60: } ! 61: else ! 62: #endif ! 63: copy(sym.n_name,symp,8); ! 64: sym.n_type = T_INT; ! 65: sym.n_sclass = C_EXT; ! 66: p->nnode.exsymptr = putsym(makesym(&sym, NULL),1); ! 67: #else ! 68: p->pnnode.exop = NAME; ! 69: copy(p->pnnode.symbol,symp,8); ! 70: #endif ! 71: } ! 72: ! 73: return(p); ! 74: } ! 75: /*eject*/ ! 76: ENODE * ! 77: cnstnode(val) ! 78: long val; ! 79: { ! 80: ! 81: /* ! 82: * Build an expression node for a constant ! 83: */ ! 84: ! 85: register ENODE *p; ! 86: ! 87: p = (ENODE *) myalloc(sizeof(ENODE)); ! 88: ! 89: p->vnode.exop = INT; ! 90: p->vnode.exvalue = val; ! 91: ! 92: return(p); ! 93: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.