|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 2857 (0xb29) Types: TextFile Names: »mod.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦041b9c0f8⟧ »EurOpenD22/isode/pepsy.system-6.0.Z« └─⟦d49939f05⟧ └─⟦6a28ec38e⟧ »pepsy.tar« └─⟦this⟧ »pepy/mod.c«
/* Copyright 1989 CSIRO Division of Information Technology * May be given away but not sold for profit - See Copyright file for details */ #include <stdio.h> #include <ctype.h> #include "pepy.h" #include "pass2.h" extern char *sysin; extern char *proc_name(); extern char *my_strcat(); char *calc_arg(); #define MAXLENGTH 30 /* output each of the actions associated with yp */ do_sw_type(name, yp, fp, fpa) char *name; YP yp; FILE *fp; FILE *fpa; { static int curr = 0; char *s, *t; char *arg; s = proc_name(name, 0); if (yp->yp_action1) { fprintf(fp, "\t\tcase %s%s:\n", s, ACT1); arg = calc_arg(yp, 1); my_do_action(fp, yp->yp_action1, 0, arg, yp->yp_act1_lineno, yp->yp_param_type); /* fprintf(fpa, "#define %s%s\t%d\n", s, ACT1, curr++); */ fprintf(fp, "\t\t\tbreak;\n"); } if (yp->yp_action2) { fprintf(fp, "\t\tcase %s%s:\n", s, ACT2); arg = calc_arg(yp, 2); my_do_action(fp, yp->yp_action2, 0, arg, yp->yp_act2_lineno, yp->yp_param_type); /* fprintf(fpa, "#define %s%s\t%d\n", s, ACT2, curr++); */ fprintf(fp, "\t\t\tbreak;\n"); } if (yp->yp_action05) { fprintf(fp, "\t\tcase %s%s:\n", s, ACT05); arg = calc_arg(yp, 5); my_do_action(fp, yp->yp_action05, 0, arg, yp->yp_act05_lineno, yp->yp_param_type); /* fprintf(fpa, "#define %s%s\t%d\n", s, ACT05, curr++); */ fprintf(fp, "\t\t\tbreak;\n"); } } my_do_action (fp, action, level, arg, lineno, new) FILE *fp; char *action; int level; char *arg; int lineno; char *new; { int i; char t[MAXLENGTH]; char c, d; fprintf (fp, "%*s{\n", level * 4, ""); Printf(4, ("\n")); if (*sysin) fprintf (fp, "# line %d \"%s\"\n", lineno, sysin); for (d = NULL; c = *action; d = c, action++) { Printf(4, ("open char is %c\n",*action)); for (i = 0; i < MAXLENGTH - 1 && (isalpha(*action) || *action == '_'); action++, i++) t[i] = *action; t[i] = '\0'; Printf(4, ("WORD IS %s, %c, %d\n", t, *action, i)); if (strcmp(t, "")) { if (!strcmp(t, "parm")) fprintf(fp, "(%s)%s", new, "parm"); else fprintf(fp, "%s", t); c = *(action - 1); action--; continue; /* OR d = *(action - 1); c = *action; */ } switch (d) { case '$': if (c == '$') { fprintf (fp, "%s", arg); c = NULL; break; } fputc ('$', fp); /* fall */ default: if (c != '$') fputc (c, fp); break; } } switch (d) { case '\n': break; case '$': fputc ('$', fp); /* fall */ default: fputc ('\n', fp); break; } fprintf (fp, "%*s}\n", level * 4, ""); } char *calc_arg(yp, actno) YP yp; int actno; { switch (actno) { case 1: return ""; break; case 2: if (yp->yp_direction & YP_ENCODER) return "(pe)"; else return "(pe)"; break; case 5: if (yp->yp_direction & YP_ENCODER) return ""; else return "(pe)"; break; default: return ""; } }