Merge alpha100 branch back to main trunk

This commit is contained in:
Guido van Rossum 1994-08-01 11:34:53 +00:00
parent 2979b01ff8
commit b6775db241
176 changed files with 5302 additions and 3668 deletions

View file

@ -9,17 +9,17 @@ VPATH= @srcdir@
CC= @CC@
RANLIB= @RANLIB@
AR= @AR@
DEFS= @DEFS@
# === Other things that are customizable but not by configure ===
TOP= ..
INCLDIR= $(TOP)/Py
OPT= -g
CFLAGS= $(OPT) -I$(INCLDIR) $(DEFS)
INCLDIR= $(srcdir)/../Include
OPT= -O
CFLAGS= $(OPT) -I$(INCLDIR) -I.. $(DEFS)
AR= ar
MKDEP= mkdep
SHELL= /bin/sh
@ -34,13 +34,7 @@ PARSEROBJS= acceler.o grammar1.o \
PGENOBJS= pgenmain.o
PARSERSRCS= acceler.c fgetsintr.c grammar1.c \
intrcheck.c listnode.c myreadline.c node.c parser.c \
parsetok.c tokenizer.c bitset.c \
firstsets.c grammar.c metagrammar.c pgen.c \
printgrammar.c
PGENSRCS= pgenmain.c
OBJS= $(PGENOBJS) $(PARSEROBJS)
PGEN= pgen
@ -64,11 +58,32 @@ clean:
clobber: clean
-rm -f $(PGEN) *.a tags TAGS
Makefile: Makefile.in $(TOP)/config.status
CONFIG_FILES=Makefile $(SHELL) $(TOP)/config.status
Makefile: $(srcdir)/Makefile.in ../config.status
(cd ..; CONFIG_FILES=Parser/Makefile CONFIG_HEADERS= \
$(SHELL) config.status)
depend: $(PARSERSRCS) $(PGENSRCS)
$(MKDEP) $(CFLAGS) $(PARSERSRCS) $(PGENSRCS)
depend:
$(MKDEP) $(CFLAGS) `echo $(OBJS) | tr ' ' '\012' | \
sed 's|\(.*\)\.o|$(srcdir)/\1.c|'`
.PRECIOUS: Makefile
acceler.o: acceler.c
grammar1.o: grammar1.c
intrcheck.o: intrcheck.c
listnode.o: listnode.c
myreadline.o: myreadline.c
node.o: node.c
parser.o: parser.c
parsetok.o: parsetok.c
tokenizer.o: tokenizer.c
bitset.o: bitset.c
firstsets.o: firstsets.c
grammar.o: grammar.c
metagrammar.o: metagrammar.c
pgen.o: pgen.c
printgrammar.o: printgrammar.c
pgenmain.o: pgenmain.c
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.

View file

@ -5,7 +5,7 @@ extern "C" {
#endif
/***********************************************************
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
Amsterdam, The Netherlands.
All Rights Reserved
@ -28,7 +28,13 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
#ifdef MPW /* This is for MPW's File command */
#define assert(e) { if (!(e)) { printf("### Python: Assertion failed:\n\
File %s; Line %d\n", __FILE__, __LINE__); abort(); } }
#else
#define assert(e) { if (!(e)) { printf("Assertion failed\n"); abort(); } }
#endif
#ifdef __cplusplus
}

View file

@ -1,5 +1,5 @@
/***********************************************************
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
Amsterdam, The Netherlands.
All Rights Reserved
@ -32,12 +32,19 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- a malloc'ed string ending in \n normally
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "myproto.h"
#include "mymalloc.h"
#include "intrcheck.h"
#ifdef HAVE_READLINE
#ifdef WITH_READLINE
extern char *readline();
@ -54,7 +61,44 @@ onintr(sig)
longjmp(jbuf, 1);
}
#endif /* HAVE_READLINE */
#else /* !WITH_READLINE */
/* This function restarts a fgets() after an EINTR error occurred
except if intrcheck() returns true. */
static int
my_fgets(buf, len, fp)
char *buf;
int len;
FILE *fp;
{
char *p;
for (;;) {
errno = 0;
p = fgets(buf, len, fp);
if (p != NULL)
return 0; /* No error */
if (feof(fp)) {
return -1; /* EOF */
}
#ifdef EINTR
if (errno == EINTR) {
if (intrcheck()) {
return 1; /* Interrupt */
}
continue;
}
#endif
if (intrcheck()) {
return 1; /* Interrupt */
}
return -2; /* Error */
}
/* NOTREACHED */
}
#endif /* WITH_READLINE */
char *
my_readline(prompt)
@ -62,7 +106,7 @@ my_readline(prompt)
{
int n;
char *p;
#ifdef HAVE_READLINE
#ifdef WITH_READLINE
RETSIGTYPE (*old_inthandler)();
static int been_here;
if (!been_here) {
@ -92,28 +136,41 @@ my_readline(prompt)
p[n+1] = '\0';
}
return p;
#else /* !HAVE_READLINE */
#else /* !WITH_READLINE */
n = 100;
if ((p = malloc(n)) == NULL)
return NULL;
if (prompt)
fprintf(stderr, "%s", prompt);
if (fgets(p, n, stdin) == NULL)
*p = '\0';
if (intrcheck()) {
switch (my_fgets(p, n, stdin)) {
case 0: /* Normal case */
break;
case 1: /* Interrupt */
free(p);
return NULL;
case -1: /* EOF */
case -2: /* Error */
default: /* Shouldn't happen */
*p = '\0';
break;
}
#ifdef MPW
/* Hack for MPW C where the prompt comes right back in the input */
/* XXX (Actually this would be rather nice on most systems...) */
n = strlen(prompt);
if (strncmp(p, prompt, n) == 0)
memmove(p, p + n, strlen(p) - n + 1);
#endif
n = strlen(p);
while (n > 0 && p[n-1] != '\n') {
int incr = n+2;
p = realloc(p, n + incr);
if (p == NULL)
return NULL;
if (fgets(p+n, incr, stdin) == NULL)
if (my_fgets(p+n, incr, stdin) != 0)
break;
n += strlen(p+n);
}
return realloc(p, n+1);
#endif /* !HAVE_READLINE */
#endif /* !WITH_READLINE */
}