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[] = "@(#)error.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: #ifdef PXP
  29: extern  int yyline;
  30: extern  char errout;
  31: #endif
  32: 
  33: char    errpfx  = 'E';
  34: extern  int yyline;
  35: /*
  36:  * Panic is called when impossible
  37:  * (supposedly, anyways) situations
  38:  * are encountered.
  39: #ifdef PI
  40:  * Panic messages should be short
  41:  * as they do not go to the message
  42:  * file.
  43: #endif
  44:  */
  45: panic(s)
  46:     char *s;
  47: {
  48: 
  49: #ifdef DEBUG
  50:     fprintf(stderr, "Snark (%s) line=%d yyline=%d\n", s, line, yyline);
  51: #endif
  52: #ifdef PXP
  53:     Perror( "Snark in pxp", s);
  54: #endif
  55: #ifdef PI
  56:     Perror( "Snark in pi", s);
  57: #endif
  58:     pexit(DIED);
  59: }
  60: 
  61: extern  char *errfile;
  62: /*
  63:  * Error is called for
  64:  * semantic errors and
  65:  * prints the error and
  66:  * a line number.
  67:  */
  68: error(a1, a2, a3, a4)
  69: {
  70: #ifdef PI
  71:     char buf[256];
  72:     register int i;
  73: #endif
  74: #ifdef PXP
  75: /*
  76: 	int ofout;
  77: */
  78: #endif
  79: 
  80:     if (errpfx == 'w' && opt('w') != 0) {
  81:         errpfx == 'E';
  82:         return;
  83:     }
  84: #ifdef PXP
  85: /*
  86: 	flush();
  87: 	ofout = fout[0];
  88: 	fout[0] = errout;
  89: */
  90: #endif
  91: #ifdef PI
  92:     Enocascade = 0;
  93:     geterr(a1, buf);
  94:     a1 = buf;
  95: #endif
  96:     if (line < 0)
  97:         line = -line;
  98:     yySsync();
  99:     yysetfile(filename);
 100: #ifdef PI
 101:     if (errpfx == ' ') {
 102:         printf("  ");
 103:         for (i = line; i >= 10; i =/ 10)
 104:             putchar(' ');
 105:         printf("... ");
 106:     } else if (Enoline)
 107:         printf("  %c - ", errpfx);
 108:     else
 109: #endif
 110:         fprintf(stderr, "%c %d - ", errpfx, line);
 111:     fprintf(stderr, a1, a2, a3, a4);
 112:     if (errpfx == 'E')
 113: #ifdef PI
 114:         eflg++, cgenflg++;
 115: #endif
 116: #ifdef PXP
 117:         eflg++;
 118: #endif
 119:     errpfx = 'E';
 120: #ifdef PI
 121:     if (Eholdnl)
 122:         Eholdnl = 0;
 123:     else
 124: #endif
 125:         putc('\n', stderr);
 126: #ifdef PXP
 127: /*
 128: 	flush();
 129: 	fout[0] = ofout;
 130: */
 131: #endif
 132: }
 133: 
 134: #ifdef PI
 135: cerror(a1, a2, a3, a4)
 136: {
 137: 
 138:     if (Enocascade)
 139:         return;
 140:     setpfx(' ');
 141:     error(a1, a2, a3, a4);
 142: }
 143: #endif

Defined functions

cerror defined in line 135; never used
error defined in line 68; used 3 times

Defined variables

errpfx defined in line 33; used 7 times
sccsid defined in line 8; never used
Last modified: 1985-06-06
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2706
Valid CSS Valid XHTML 1.0 Strict