diff --git a/Modules/config.c.in b/Modules/config.c.in
index c9f56ac..b8fc15f 100644
--- a/Modules/config.c.in
+++ b/Modules/config.c.in
@@ -296,6 +296,9 @@
 #ifdef USE_XLIB
 extern void initXlib();
 #endif
+#ifdef USE_PARSER
+extern void initparser();
+#endif
 /* -- ADDMODULE MARKER 1 -- */
 
 struct {
@@ -475,6 +478,10 @@
        {"Xlib", initXlib},
 #endif
 
+#ifdef USE_PARSER
+       {"parser", initparser},
+#endif
+
 /* -- ADDMODULE MARKER 2 -- */
 
 	{0,		0}		/* Sentinel */
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
new file mode 100644
index 0000000..3274c1a
--- /dev/null
+++ b/Modules/parsermodule.c
@@ -0,0 +1,108 @@
+/***********************************************************
+Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
+Amsterdam, The Netherlands.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the names of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+#include "allobjects.h"
+#include "node.h"
+#include "token.h"
+#include "pythonrun.h"
+#include "graminit.h"
+#include "errcode.h"
+
+object *
+node2tuple(n)
+	node *n;
+{
+	if (n == NULL) {
+		INCREF(None);
+		return None;
+	}
+	if (ISNONTERMINAL(TYPE(n))) {
+		int i;
+		object *v, *w;
+		v = newtupleobject(1 + NCH(n));
+		if (v == NULL)
+			return v;
+		w = newintobject(TYPE(n));
+		if (w == NULL) {
+			DECREF(v);
+			return NULL;
+		}
+		settupleitem(v, 0, w);
+		for (i = 0; i < NCH(n); i++) {
+			w = node2tuple(CHILD(n, i));
+			if (w == NULL) {
+				DECREF(v);
+				return NULL;
+			}
+			settupleitem(v, i+1, w);
+		}
+		return v;
+	}
+	else if (ISTERMINAL(TYPE(n))) {
+		return mkvalue("(is)", TYPE(n), STR(n));
+	}
+	else {
+		err_setstr(SystemError, "unrecognized parse tree node type");
+		return NULL;
+	}
+}
+
+static object *
+parser_parsefile(self, args)
+	object *self;
+	object *args;
+{
+	char *filename;
+	FILE *fp;
+	node *n = NULL;
+	int err;
+	object *res;
+	if (!getargs(args, "s", &filename))
+		return NULL;
+	fp = fopen(filename, "r");
+	if (fp == NULL) {
+		err_errno(IOError);
+		return NULL;
+	}
+	err = parse_file(fp, filename, file_input, &n);
+	fclose(fp);
+	if (err != E_DONE) {
+		err_input(err);
+		return NULL;
+	}
+	res = node2tuple(n);
+	freetree(n);
+	return res;
+}
+
+static struct methodlist parser_methods[] = {
+	{"parsefile", parser_parsefile},
+	{0, 0} /* Sentinel */
+};
+
+void
+initparser()
+{
+	initmodule("parser", parser_methods);
+}
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index c1c1c19..65512be 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -147,7 +147,7 @@
 				return ep;
 		}
 		if (ep->me_key == dummy) {
-			if (freeslot != NULL)
+			if (freeslot == NULL)
 				freeslot = ep;
 		}
 		else if (ep->me_hash == hash &&
diff --git a/Objects/mappingobject.c b/Objects/mappingobject.c
index c1c1c19..65512be 100644
--- a/Objects/mappingobject.c
+++ b/Objects/mappingobject.c
@@ -147,7 +147,7 @@
 				return ep;
 		}
 		if (ep->me_key == dummy) {
-			if (freeslot != NULL)
+			if (freeslot == NULL)
 				freeslot = ep;
 		}
 		else if (ep->me_hash == hash &&
