Annotation of 42BSD/ucb/pascal/pxp/yyerror.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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