mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Merge alpha100 branch back to main trunk
This commit is contained in:
parent
2979b01ff8
commit
b6775db241
176 changed files with 5302 additions and 3668 deletions
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue