Annotation of 3BSD/cmd/pi/yyerror.c, revision 1.1.1.1

1.1       root        1: /* Copyright (c) 1979 Regents of the University of California */
                      2: #
                      3: /*
                      4:  * pi - Pascal interpreter code translator
                      5:  *
                      6:  * Charles Haley, Bill Joy UCB
                      7:  * Version 1.1 February 1978
                      8:  *
                      9:  *
                     10:  * pxp - Pascal execution profiler
                     11:  *
                     12:  * Bill Joy UCB
                     13:  * Version 1.1 February 1978
                     14:  */
                     15: 
                     16: #include "whoami"
                     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:        int ofout;
                     44: #endif
                     45: 
                     46:        if (errpfx == 'w' && opt('w') != 0)
                     47:                return;
                     48: #ifdef PXP
                     49:        flush();
                     50:        ofout = fout[0];
                     51:        fout[0] = errout;
                     52: #endif
                     53:        yyResume = 0;
                     54: #ifdef PI
                     55:        geterr(s, buf);
                     56:        s = buf;
                     57: #endif
                     58:        yysync();
                     59:        pchr(errpfx);
                     60:        pchr(' ');
                     61:        for (i = 3; i < yyecol; i++)
                     62:                pchr('-');
                     63:        printf("^--- ");
                     64: /*
                     65:        if (yyecol > 60)
                     66:                printf("\n\t");
                     67: */
                     68:        printf(s, a1, a2, a3, a4, a5);
                     69:        pchr('\n');
                     70:        if (errpfx == 'E')
                     71: #ifdef PI
                     72:                eflg++, cgenflg++;
                     73: #endif
                     74: #ifdef PXP
                     75:                eflg++;
                     76: #endif
                     77:        errpfx = 'E';
                     78:        yySerrs++;
                     79:        if (yySerrs >= MAXSYNERR) {
                     80:                yySerrs = 0;
                     81:                yerror("Too many syntax errors - QUIT");
                     82:                pexit(ERRS);
                     83:        }
                     84: #ifdef PXP
                     85:        flush();
                     86:        fout[0] = ofout;
                     87:        return (0);
                     88: #endif
                     89: }
                     90: 
                     91: /*
                     92:  * A bracketing error message
                     93:  */
                     94: brerror(where, what)
                     95:        int where;
                     96:        char *what;
                     97: {
                     98: 
                     99:        if (where == 0) {
                    100:                line = yyeline;
                    101:                setpfx(' ');
                    102:                error("End matched %s on line %d", what, where);
                    103:                return;
                    104:        }
                    105:        if (where < 0)
                    106:                where = -where;
                    107:        yerror("Inserted keyword end matching %s on line %d", what, where);
                    108: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.