1: #
   2: /*
   3:  * pi - Pascal interpreter code translator
   4:  *
   5:  * Charles Haley, Bill Joy UCB
   6:  * Version 1.2 January 1979
   7:  *
   8:  *
   9:  * pxp - Pascal execution profiler
  10:  *
  11:  * Bill Joy UCB
  12:  * Version 1.2 January 1979
  13:  */
  14: 
  15: #include "0.h"
  16: #include "yy.h"
  17: 
  18: #ifdef PXP
  19: extern  int yyline;
  20: extern  char errout;
  21: #endif
  22: 
  23: char    errpfx  = 'E';
  24: extern  int yyline;
  25: /*
  26:  * Panic is called when impossible
  27:  * (supposedly, anyways) situations
  28:  * are encountered.
  29: #ifdef PI
  30:  * Panic messages should be short
  31:  * as they do not go to the message
  32:  * file.
  33: #endif
  34:  */
  35: panic(s)
  36:     char *s;
  37: {
  38: 
  39: #ifdef DEBUG
  40:     printf("Snark (%s) line=%d yyline=%d\n", s, line, yyline);
  41: #endif
  42: #ifdef PXP
  43:     Perror( "Snark in pxp", s);
  44: #endif
  45: #ifdef PI
  46:     Perror( "Snark in pi", s);
  47: #endif
  48:     pexit(DIED);
  49: }
  50: 
  51: extern  char *errfile;
  52: /*
  53:  * Error is called for
  54:  * semantic errors and
  55:  * prints the error and
  56:  * a line number.
  57:  */
  58: error(a1, a2, a3, a4)
  59: {
  60: #ifdef PI
  61:     char buf[256];
  62:     register int i;
  63: #endif
  64: #ifdef PXP
  65:     int ofout;
  66: #endif
  67: 
  68:     if (errpfx == 'w' && opt('w') != 0)
  69:         return;
  70: #ifdef PXP
  71:     flush();
  72:     ofout = fout[0];
  73:     fout[0] = errout;
  74: #endif
  75: #ifdef PI
  76:     Enocascade = 0;
  77:     geterr(a1, buf);
  78:     a1 = buf;
  79: #endif
  80:     if (line < 0)
  81:         line = -line;
  82:     yySsync();
  83:     yysetfile(filename);
  84: #ifdef PI
  85:     if (errpfx == ' ') {
  86:         printf("  ");
  87:         for (i = line; i >= 10; i /= 10)
  88:             putchar(' ');
  89:         printf("... ");
  90:     } else if (Enoline)
  91:         printf("  %c - ", errpfx);
  92:     else
  93: #endif
  94:         printf("%c %d - ", errpfx, line);
  95:     printf(a1, a2, a3, a4);
  96:     if (errpfx == 'E')
  97: #ifdef PI
  98:         eflg++, cgenflg++;
  99: #endif
 100: #ifdef PXP
 101:         eflg++;
 102: #endif
 103:     errpfx = 'E';
 104: #ifdef PI
 105:     if (Eholdnl)
 106:         Eholdnl = 0;
 107:     else
 108: #endif
 109:         putchar('\n');
 110: #ifdef PXP
 111:     flush();
 112:     fout[0] = ofout;
 113: #endif
 114: }
 115: 
 116: #ifdef PI
 117: cerror(a1, a2, a3, a4)
 118: {
 119: 
 120:     if (Enocascade)
 121:         return;
 122:     setpfx(' ');
 123:     error(a1, a2, a3, a4);
 124: }
 125: #endif
Last modified: 1986-06-01
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2068
Valid CSS Valid XHTML 1.0 Strict