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