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