|
|
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: A T
Length: 3629 (0xe2d)
Types: TextFile
Names: »A.py«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape
└─⟦eba4602b1⟧ »./isode-5.0.tar.Z«
└─⟦d3ac74d73⟧
└─⟦this⟧ »isode-5.0/pepy/test/A/A.py«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/pepy/test/A/A.py«
A DEFINITIONS ::=
%{
#define DEBUG
#include <stdio.h>
/* \f
DATA */
#define ps_advise(ps, f) \
advise (NULLCP, "%s: %s", (f), ps_error ((ps) -> ps_errno))
static char *myname = "integertest";
static enum { ps2test, pl2test } mode = ps2test;
void adios ();
/* \f
MAIN */
/* ARGSUSED */
main (argc, argv, envp)
int argc;
char **argv,
**envp;
{
register int status = 0;
register char *cp;
register FILE * fp;
myname = *argv;
for (argc--, argv++; cp = *argv; argc--, argv++)
if (*cp == '-') {
if (strcmp (cp + 1, "ps") == 0) {
mode = ps2test;
continue;
}
if (strcmp (cp + 1, "pl") == 0) {
mode = pl2test;
continue;
}
adios (NULLCP, "usage: %s [ -ps | -pl ] [ files... ]",
myname);
}
else
break;
if (argc == 0)
status = process ("(stdin)", stdin);
else
while (cp = *argv++) {
if ((fp = fopen (cp, "r")) == NULL) {
advise (cp, "unable to read");
status++;
continue;
}
status += process (cp, fp);
(void) fclose (fp);
}
exit (status);
}
/* \f
*/
static int process (file, fp)
register char *file;
register FILE *fp;
{
register PE pe;
register PS ps;
if ((ps = ps_alloc (std_open)) == NULLPS) {
ps_advise (ps, "ps_alloc");
return 1;
}
if (std_setup (ps, fp) == NOTOK) {
advise (NULLCP, "%s: std_setup loses", file);
return 1;
}
for (;;) {
switch (mode) {
case ps2test:
if ((pe = ps2pe (ps)) == NULLPE)
if (ps -> ps_errno) {
ps_advise (ps, "ps2pe");
you_lose: ;
ps_free (ps);
return 1;
}
else {
done: ;
ps_free (ps);
return 0;
}
break;
case pl2test:
if ((pe = pl2pe (ps)) == NULLPE)
if (ps -> ps_errno) {
ps_advise (ps, "pl2pe");
goto you_lose;
}
else
goto done;
break;
}
(void) do_A_A (pe, 1);
pe_free (pe);
}
}
/* \f
*/
%}
BEGIN
A ::= CHOICE { B, C }
B ::= INTEGER
%{ fprintf(stderr, "INTEGER = %d (0x%x)\n", $$, $$); %}
C ::= NumericString
%{
int len;
char *s = prim2str ($$, &len);
fprintf (stderr, "NumericString = %s (len %d)\n", s, len);
free (s);
%}
END
%{
/* \f
DEBUG */
#ifdef DEBUG
char *getenv ();
testdebug (pe, s)
register PE pe;
register char *s;
{
static int debug = OK;
char *cp;
register PS ps;
switch (debug) {
case NOTOK:
break;
case OK:
if ((debug = (cp = getenv ("PEPYDEBUG")) && *cp ? atoi (cp)
: NOTOK) == NOTOK)
break;
fprintf (stderr, "%s made with %s\n", myname, pepyid);
default:
fprintf (stderr, "%s\n", s);
if ((ps = ps_alloc (std_open)) == NULLPS)
return;
if (std_setup (ps, stderr) != NOTOK)
(void) pe2pl (ps, pe);
fprintf (stderr, "--------\n");
ps_free (ps);
break;
}
}
#endif
/* \f
ERRORS */
/* VARARGS2 */
void adios (what, fmt, a, b, c, d, e, f, g, h, i, j)
char *what,
*fmt,
*a,
*b,
*c,
*d,
*e,
*f,
*g,
*h,
*i,
*j;
{
advise (what, fmt, a, b, c, d, e, f, g, h, i, j);
_exit (1);
}
/* \f
*/
/* VARARGS2 */
void advise (what, fmt, a, b, c, d, e, f, g, h, i, j)
char *what,
*fmt,
*a,
*b,
*c,
*d,
*e,
*f,
*g,
*h,
*i,
*j;
{
(void) fflush (stdout);
fprintf (stderr, "%s: ", myname);
fprintf (stderr, fmt, a, b, c, d, e, f, g, h, i, j);
if (what)
(void) fputc (' ', stderr), perror (what);
else
(void) fputc ('\n', stderr);
(void) fflush (stderr);
}
%}