|
|
1.1 ! root 1: static char *sccsid = "@(#)yyerror.c 1.2 (Berkeley) 5/11/83"; ! 2: /* Copyright (c) 1979 Regents of the University of California */ ! 3: /* ! 4: * pi - Pascal interpreter code translator ! 5: * ! 6: * Charles Haley, Bill Joy UCB ! 7: * Version 1.2 January 1979 ! 8: * ! 9: * ! 10: * pxp - Pascal execution profiler ! 11: * ! 12: * Bill Joy UCB ! 13: * Version 1.2 January 1979 ! 14: */ ! 15: ! 16: #include "whoami.h" ! 17: #include "0.h" ! 18: #include "yy.h" ! 19: ! 20: /* ! 21: * Yerror prints an error ! 22: * message and then returns ! 23: * NIL for the tree if needed. ! 24: * The error is flagged on the ! 25: * current line which is printed ! 26: * if the listing is turned off. ! 27: #ifdef PXP ! 28: * ! 29: * As is obvious from the fooling around ! 30: * with fout below, the Pascal system should ! 31: * be changed to use the new library "lS". ! 32: #endif ! 33: */ ! 34: yerror(s, a1, a2, a3, a4, a5) ! 35: char *s; ! 36: { ! 37: #ifdef PI ! 38: char buf[256]; ! 39: #endif ! 40: register int i, j; ! 41: static yySerrs; ! 42: #ifdef PXP ! 43: /* ! 44: int ofout; ! 45: */ ! 46: #endif ! 47: ! 48: if (errpfx == 'w' && opt('w') != 0) ! 49: return; ! 50: #ifdef PXP ! 51: /* ! 52: flush(); ! 53: ofout = fout[0]; ! 54: fout[0] = errout; ! 55: */ ! 56: #endif ! 57: yyResume = 0; ! 58: #ifdef PI ! 59: geterr(s, buf); ! 60: s = buf; ! 61: #endif ! 62: yysync(); ! 63: putc(errpfx, stderr); ! 64: putc(' ', stderr); ! 65: for (i = 3; i < yyecol; i++) ! 66: putc('-', stderr); ! 67: fprintf(stderr, "^--- "); ! 68: /* ! 69: if (yyecol > 60) ! 70: printf("\n\t"); ! 71: */ ! 72: fprintf(stderr, s, a1, a2, a3, a4, a5); ! 73: putc('\n', stderr); ! 74: if (errpfx == 'E') ! 75: #ifdef PI ! 76: eflg++, cgenflg++; ! 77: #endif ! 78: #ifdef PXP ! 79: eflg++; ! 80: #endif ! 81: errpfx = 'E'; ! 82: yySerrs++; ! 83: if (yySerrs >= MAXSYNERR) { ! 84: yySerrs = 0; ! 85: yerror("Too many syntax errors - QUIT"); ! 86: pexit(ERRS); ! 87: } ! 88: #ifdef PXP ! 89: /* ! 90: flush(); ! 91: fout[0] = ofout; ! 92: */ ! 93: return (0); ! 94: #endif ! 95: } ! 96: ! 97: /* ! 98: * A bracketing error message ! 99: */ ! 100: brerror(where, what) ! 101: int where; ! 102: char *what; ! 103: { ! 104: ! 105: if (where == 0) { ! 106: line = yyeline; ! 107: setpfx(' '); ! 108: error("End matched %s on line %d", what, where); ! 109: return; ! 110: } ! 111: if (where < 0) ! 112: where = -where; ! 113: yerror("Inserted keyword end matching %s on line %d", what, where); ! 114: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.