|
|
1.1 ! root 1: /* ! 2: * C compiler. ! 3: * Small things that don't seem ! 4: * to go anywhere else. ! 5: */ ! 6: #ifdef vax ! 7: #include "INC$LIB:cc0.h" ! 8: #else ! 9: #include "cc0.h" ! 10: #endif ! 11: ! 12: /* ! 13: * Allocate some space. ! 14: * If no space, abort with a message. ! 15: */ ! 16: char * ! 17: new(n) ! 18: { ! 19: register char *p; ! 20: ! 21: if ((p=malloc(n)) == NULL) ! 22: cnomem("new"); ! 23: return (p); ! 24: } ! 25: ! 26: /* ! 27: * Check if the symbol in the window 's' is token 't'. ! 28: * If it is, skip over it; if it is not, print an error. ! 29: */ ! 30: mustbe(t) ! 31: { ! 32: register char *p; ! 33: ! 34: if (s == t) { ! 35: lex(); ! 36: return; ! 37: } ! 38: if (s == RPAREN) { ! 39: cerror("missing '('"); ! 40: return; ! 41: } ! 42: switch (t) { ! 43: ! 44: case RBRACK: ! 45: p = "]"; ! 46: break; ! 47: ! 48: case WHILE: ! 49: p = "while"; ! 50: break; ! 51: ! 52: case LPAREN: ! 53: p = "("; ! 54: break; ! 55: ! 56: case RPAREN: ! 57: p = ")"; ! 58: break; ! 59: ! 60: case SEMI: ! 61: p = ";"; ! 62: break; ! 63: ! 64: case RBRACE: ! 65: p = "}"; ! 66: break; ! 67: ! 68: case LBRACE: ! 69: p = "{"; ! 70: break; ! 71: ! 72: case COLON: ! 73: p = ":"; ! 74: break; ! 75: ! 76: case COMMA: ! 77: p = ","; ! 78: break; ! 79: ! 80: default: ! 81: p = "{Something}"; ! 82: break; ! 83: } ! 84: cerror((p[1]=='\0') ? "missing '%s'" : "missing \"%s\"", p); ! 85: } ! 86: ! 87: /* ! 88: * Put out a local label. ! 89: */ ! 90: label(n) ! 91: { ! 92: bput(LLABEL); ! 93: iput((ival_t) n); ! 94: } ! 95: ! 96: /* ! 97: * Put out a local jump. ! 98: */ ! 99: jump(n) ! 100: { ! 101: bput(JUMP); ! 102: iput((ival_t) n); ! 103: } ! 104: ! 105: /* ! 106: * Put a label at the current ! 107: * location. ! 108: * Return the label number. ! 109: */ ! 110: here() ! 111: { ! 112: register int n; ! 113: ! 114: n = newlab(); ! 115: label(n); ! 116: return (n); ! 117: } ! 118: ! 119: /* ! 120: * Complain about things not in the ! 121: * bible (K and R). ! 122: */ ! 123: notbook() ! 124: { ! 125: if (isvariant(VSBOOK)) ! 126: cstrict("construction not in Kernighan and Ritchie"); ! 127: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.