Annotation of 43BSDReno/contrib/isode-beta/pepsy/mod.c, revision 1.1.1.1

1.1       root        1: /* mod.c */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/pepsy/RCS/mod.c,v 7.0 90/07/01 19:54:23 mrose Exp $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/pepsy/RCS/mod.c,v 7.0 90/07/01 19:54:23 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       mod.c,v $
                     12:  * Revision 7.0  90/07/01  19:54:23  mrose
                     13:  * *** empty log message ***
                     14:  * 
                     15:  */
                     16: 
                     17: /*
                     18:  *                               NOTICE
                     19:  *
                     20:  *    Acquisition, use, and distribution of this module and related
                     21:  *    materials are subject to the restrictions of a license agreement.
                     22:  *    Consult the Preface in the User's Manual for the full terms of
                     23:  *    this agreement.
                     24:  *
                     25:  */
                     26: 
                     27: 
                     28: #include <stdio.h>
                     29: #include <ctype.h>
                     30: #include "pepsydefs.h"
                     31: #include "pass2.h"
                     32: 
                     33: extern char *sysin;
                     34: extern char *proc_name();
                     35: extern char *my_strcat();
                     36: 
                     37: char   *calc_arg();
                     38: 
                     39: #define MAXLENGTH 30
                     40: 
                     41: /*
                     42:  * output each of the actions associated with yp
                     43:  */
                     44: do_sw_type(name, yp, fp, fpa)
                     45: char   *name;
                     46: YP      yp;
                     47: FILE   *fp;
                     48: FILE   *fpa;
                     49: {
                     50:     static int curr = 0;
                     51:     char   *s, *t;
                     52:     char   *arg;
                     53: 
                     54:     s = proc_name(name, 0);
                     55:     if (yp->yp_action1) {
                     56:        (void) fprintf(fp, "\t\tcase %s%s:\n", s, ACT1);
                     57:        arg = calc_arg(yp, 1);
                     58:        my_do_action(fp, yp->yp_action1, 0, arg, yp->yp_act1_lineno, yp->yp_param_type);
                     59:        /*
                     60:         * fprintf(fpa, "#define %s%s\t%d\n", s, ACT1, curr++);
                     61:         */
                     62:        (void) fprintf(fp, "\t\t\tbreak;\n");
                     63:     }
                     64:     if (yp->yp_action2) {
                     65:        (void) fprintf(fp, "\t\tcase %s%s:\n", s, ACT2);
                     66:        arg = calc_arg(yp, 2);
                     67:        my_do_action(fp, yp->yp_action2, 0, arg, yp->yp_act2_lineno, yp->yp_param_type);
                     68:        /*
                     69:         * fprintf(fpa, "#define %s%s\t%d\n", s, ACT2, curr++);
                     70:         */
                     71:        (void) fprintf(fp, "\t\t\tbreak;\n");
                     72:     }
                     73:     if (yp->yp_action05) {
                     74:        (void) fprintf(fp, "\t\tcase %s%s:\n", s, ACT05);
                     75:        arg = calc_arg(yp, 5);
                     76:        my_do_action(fp, yp->yp_action05, 0, arg, yp->yp_act05_lineno, yp->yp_param_type);
                     77:        /*
                     78:         * fprintf(fpa, "#define %s%s\t%d\n", s, ACT05, curr++);
                     79:         */
                     80:        (void) fprintf(fp, "\t\t\tbreak;\n");
                     81:     }
                     82: }
                     83: 
                     84: my_do_action(fp, action, level, arg, lineno, new)
                     85: FILE   *fp;
                     86: char   *action;
                     87: int     level;
                     88: char   *arg;
                     89: int     lineno;
                     90: char   *new;
                     91: {
                     92:     int     i;
                     93:     char    t[MAXLENGTH];
                     94:     char    c, d;
                     95: 
                     96:     (void) fprintf(fp, "%*s{\n", level * 4, "");
                     97:     Printf(4, ("\n"));
                     98: 
                     99:     if (*sysin)
                    100:        (void) fprintf(fp, "# line %d \"%s\"\n", lineno, sysin);
                    101: 
                    102:     for (d = NULL; c = *action; d = c, action++) {
                    103:        Printf(4, ("open char is %c\n", *action));
                    104:        for (i = 0; i < MAXLENGTH - 1 && (isalpha(*action) || *action == '_'); action++, i++)
                    105:            t[i] = *action;
                    106:        t[i] = '\0';
                    107:        Printf(4, ("WORD IS %s, %c, %d\n", t, *action, i));
                    108:        if (strcmp(t, "")) {
                    109:            if (!strcmp(t, "parm"))
                    110:                (void) fprintf(fp, "(%s)%s", new, "parm");
                    111:            else
                    112:                (void) fprintf(fp, "%s", t);
                    113:            c = *(action - 1);
                    114:            action--;
                    115:            continue;
                    116:            /*
                    117:             * OR d = *(action - 1); c = *action;
                    118:             */
                    119:        }
                    120:        switch (d) {
                    121:        case '$':
                    122:            if (c == '$') {
                    123:                (void) fprintf(fp, "%s", arg);
                    124:                c = NULL;
                    125:                break;
                    126:            }
                    127:            (void) fputc('$', fp);      /* fall */
                    128: 
                    129:        default:
                    130:            if (c != '$')
                    131:                (void) fputc(c, fp);
                    132:            break;
                    133:        }
                    134:     }
                    135: 
                    136:     switch (d) {
                    137:     case '\n':
                    138:        break;
                    139: 
                    140:     case '$':
                    141:        (void) fputc('$', fp);          /* fall */
                    142:     default:
                    143:        (void) fputc('\n', fp);
                    144:        break;
                    145:     }
                    146: 
                    147:     (void) fprintf(fp, "%*s}\n", level * 4, "");
                    148: }
                    149: 
                    150: char   *
                    151: calc_arg(yp, actno)
                    152: YP      yp;
                    153: int     actno;
                    154: {
                    155: 
                    156:     switch (actno) {
                    157:     case 1:
                    158:        return "";
                    159:        break;
                    160:     case 2:
                    161:        if (yp->yp_direction & YP_ENCODER)
                    162:            return "(pe)";
                    163:        else
                    164:            return "(pe)";
                    165:        break;
                    166:     case 5:
                    167:        if (yp->yp_direction & YP_ENCODER)
                    168:            return "";
                    169:        else
                    170:            return "(pe)";
                    171:        break;
                    172:     default:
                    173:        return "";
                    174:     }
                    175: }

unix.superglobalmegacorp.com

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