diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index 5d6c2ea..9e7c3fe 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -30,7 +30,9 @@
  *  All the "fudge" declarations are here:
  *
  *  This isn't part of the Python runtime, but it's in the library somewhere.
- *  Where it is varies a bit, so just declare it.
+ *  Where it is varies a bit, so just declare it.  Don't use any prototype;
+ *  different systems declare it a little differently, and we don't need the
+ *  extra warnings.
  */
 extern char* strdup();
 
@@ -40,10 +42,10 @@
  */
 static char*
 parser_copyright_string
-= "Copyright 1995-1996 by Virginia Polytechnic Institute & State\n"
-  "University, Blacksburg, Virginia, USA, and Fred L. Drake, Jr., Reston,\n"
-  "Virginia, USA.  Portions copyright 1991-1995 by Stichting Mathematisch\n"
-  "Centrum, Amsterdam, The Netherlands.";
+= "Copyright 1995-1996 by Virginia Polytechnic Institute & State\n\
+University, Blacksburg, Virginia, USA, and Fred L. Drake, Jr., Reston,\n\
+Virginia, USA.  Portions copyright 1991-1995 by Stichting Mathematisch\n\
+Centrum, Amsterdam, The Netherlands.";
 
 
 static char*
@@ -54,15 +56,18 @@
 parser_version_string = "0.4";
 
 
-typedef PyObject* (*SeqMaker) (int length);
-typedef void (*SeqInserter) (PyObject* sequence, int index, PyObject* element);
+typedef PyObject* (*SeqMaker) Py_PROTO((int length));
+typedef void (*SeqInserter) Py_PROTO((PyObject* sequence,
+				      int index,
+				      PyObject* element));
 
 /*  The function below is copyrigthed by Stichting Mathematisch Centrum.  The
  *  original copyright statement is included below, and continues to apply
  *  in full to the function immediately following.  All other material is
  *  original, copyrighted by Fred L. Drake, Jr. and Virginia Polytechnic
  *  Institute and State University.  Changes were made to comply with the
- *  new naming conventions.
+ *  new naming conventions.  Added arguments to provide support for creating
+ *  lists as well as tuples, and optionally including the line numbers.
  */
 
 /***********************************************************
@@ -177,8 +182,9 @@
 } PyAST_Object;
 
 
-staticforward void parser_free();
-staticforward int  parser_compare();
+staticforward void parser_free Py_PROTO((PyAST_Object *ast));
+staticforward int  parser_compare Py_PROTO((PyAST_Object *left,
+					    PyAST_Object *right));
 
 
 /* static */
@@ -526,9 +532,9 @@
  */
 
 
-staticforward node* build_node_tree();
-staticforward int   validate_expr_tree();
-staticforward int   validate_file_input();
+staticforward node* build_node_tree Py_PROTO((PyObject *tuple));
+staticforward int   validate_expr_tree Py_PROTO((node *tree));
+staticforward int   validate_file_input Py_PROTO((node *tree));
 
 
 /*  PyObject* parser_tuple2ast(PyObject* self, PyObject* args)
@@ -821,23 +827,17 @@
 
 
 #ifdef HAVE_OLD_CPP
-#define VALIDATER(n)    static int validate_/**/n()
+#define VALIDATER(n)    static int validate_/**/n Py_PROTO((node *tree))
 #else
-#define	VALIDATER(n)	static int validate_##n()
+#define	VALIDATER(n)	static int validate_##n Py_PROTO((node *tree))
 #endif
 
 
 /*
- *  Validation for the code above:
- */
-VALIDATER(expr_tree);
-VALIDATER(suite_tree);
-
-
-/*
  *  Validation routines used within the validation section:
  */
-staticforward int validate_terminal();
+staticforward int validate_terminal Py_PROTO((node *terminal,
+					      int type, char *string));
 
 #define	validate_ampersand(ch)	validate_terminal(ch,	   AMPER, "&")
 #define	validate_circumflex(ch)	validate_terminal(ch, CIRCUMFLEX, "^")
@@ -866,7 +866,7 @@
 VALIDATER(print_stmt);		VALIDATER(del_stmt);
 VALIDATER(return_stmt);
 VALIDATER(raise_stmt);		VALIDATER(import_stmt);
-VALIDATER(global_stmt);		VALIDATER(file_input);
+VALIDATER(global_stmt);
 VALIDATER(exec_stmt);		VALIDATER(compound_stmt);
 VALIDATER(while);		VALIDATER(for);
 VALIDATER(try);			VALIDATER(except_clause);
@@ -2550,7 +2550,7 @@
 
     return (res);
 
-}   /* validate_suite_tree() */
+}   /* validate_file_input() */
 
 
 /*  Functions exported by this module.  Most of this should probably
