|
|
1.1 ! root 1: /* Copyright (c) 1979 Regents of the University of California */ ! 2: /* ! 3: * pi - Pascal interpreter code translator ! 4: * ! 5: * Charles Haley, Bill Joy UCB ! 6: * Version 1.2 January 1979 ! 7: * ! 8: * ! 9: * pxp - Pascal execution profiler ! 10: * ! 11: * Bill Joy UCB ! 12: * Version 1.2 January 1979 ! 13: */ ! 14: ! 15: #include "0.h" ! 16: #include "yy.h" ! 17: ! 18: #ifdef PXP ! 19: extern int yyline; ! 20: extern char errout; ! 21: #endif ! 22: ! 23: char errpfx 'E'; ! 24: extern int yyline; ! 25: /* ! 26: * Panic is called when impossible ! 27: * (supposedly, anyways) situations ! 28: * are encountered. ! 29: #ifdef PI ! 30: * Panic messages should be short ! 31: * as they do not go to the message ! 32: * file. ! 33: #endif ! 34: */ ! 35: panic(s) ! 36: char *s; ! 37: { ! 38: ! 39: #ifdef DEBUG ! 40: fprintf(stderr, "Snark (%s) line=%d yyline=%d\n", s, line, yyline); ! 41: #endif ! 42: #ifdef PXP ! 43: Perror( "Snark in pxp", s); ! 44: #endif ! 45: #ifdef PI ! 46: Perror( "Snark in pi", s); ! 47: #endif ! 48: pexit(DIED); ! 49: } ! 50: ! 51: extern char *errfile; ! 52: /* ! 53: * Error is called for ! 54: * semantic errors and ! 55: * prints the error and ! 56: * a line number. ! 57: */ ! 58: error(a1, a2, a3, a4) ! 59: { ! 60: #ifdef PI ! 61: char buf[256]; ! 62: register int i; ! 63: #endif ! 64: #ifdef PXP ! 65: /* ! 66: int ofout; ! 67: */ ! 68: #endif ! 69: ! 70: if (errpfx == 'w' && opt('w') != 0) ! 71: return; ! 72: #ifdef PXP ! 73: /* ! 74: flush(); ! 75: ofout = fout[0]; ! 76: fout[0] = errout; ! 77: */ ! 78: #endif ! 79: #ifdef PI ! 80: Enocascade = 0; ! 81: geterr(a1, buf); ! 82: a1 = buf; ! 83: #endif ! 84: if (line < 0) ! 85: line = -line; ! 86: yySsync(); ! 87: yysetfile(filename); ! 88: #ifdef PI ! 89: if (errpfx == ' ') { ! 90: printf(" "); ! 91: for (i = line; i >= 10; i =/ 10) ! 92: putchar(' '); ! 93: printf("... "); ! 94: } else if (Enoline) ! 95: printf(" %c - ", errpfx); ! 96: else ! 97: #endif ! 98: fprintf(stderr, "%c %d - ", errpfx, line); ! 99: fprintf(stderr, a1, a2, a3, a4); ! 100: if (errpfx == 'E') ! 101: #ifdef PI ! 102: eflg++, cgenflg++; ! 103: #endif ! 104: #ifdef PXP ! 105: eflg++; ! 106: #endif ! 107: errpfx = 'E'; ! 108: #ifdef PI ! 109: if (Eholdnl) ! 110: Eholdnl = 0; ! 111: else ! 112: #endif ! 113: putc('\n', stderr); ! 114: #ifdef PXP ! 115: /* ! 116: flush(); ! 117: fout[0] = ofout; ! 118: */ ! 119: #endif ! 120: } ! 121: ! 122: #ifdef PI ! 123: cerror(a1, a2, a3, a4) ! 124: { ! 125: ! 126: if (Enocascade) ! 127: return; ! 128: setpfx(' '); ! 129: error(a1, a2, a3, a4); ! 130: } ! 131: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.