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