diff --git a/Include/parsetok.h b/Include/parsetok.h
index 66359d42..bfe9f8f 100644
--- a/Include/parsetok.h
+++ b/Include/parsetok.h
@@ -17,7 +17,9 @@
     int expected;
 } perrdetail;
 
+#if 0
 #define PyPARSE_YIELD_IS_KEYWORD	0x0001
+#endif
 
 extern DL_IMPORT(node *) PyParser_ParseString(char *, grammar *, int,
                                               perrdetail *);
diff --git a/Parser/parser.h b/Parser/parser.h
index b0c9a1e..95ec247 100644
--- a/Parser/parser.h
+++ b/Parser/parser.h
@@ -25,7 +25,9 @@
 	stack	 	p_stack;	/* Stack of parser states */
 	grammar		*p_grammar;	/* Grammar to use */
 	node		*p_tree;	/* Top of parse tree */
+#if 0 /* future keyword */
 	int		p_generators;	/* 1 if yield is a keyword */
+#endif
 } parser_state;
 
 parser_state *PyParser_New(grammar *g, int start);
diff --git a/Parser/parsetok.c b/Parser/parsetok.c
index ed4fe7b..472b0f5 100644
--- a/Parser/parsetok.c
+++ b/Parser/parsetok.c
@@ -83,8 +83,10 @@
 /* Parse input coming from the given tokenizer structure.
    Return error code. */
 
+#if 0 /* future keyword */
 static char yield_msg[] =
 "%s:%d: Warning: 'yield' will become a reserved keyword in the future\n";
+#endif
 
 static node *
 parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
@@ -99,8 +101,10 @@
 		err_ret->error = E_NOMEM;
 		return NULL;
 	}
+#if 0 /* future keyword */
 	if (flags & PyPARSE_YIELD_IS_KEYWORD)
 		ps->p_generators = 1;
+#endif
 
 	for (;;) {
 		char *a, *b;
@@ -130,6 +134,7 @@
 			strncpy(str, a, len);
 		str[len] = '\0';
 
+#if 0 /* future keyword */
 		/* Warn about yield as NAME */
 		if (type == NAME && !ps->p_generators &&
 		    len == 5 && str[0] == 'y' && strcmp(str, "yield") == 0)
@@ -137,6 +142,7 @@
 					  err_ret->filename==NULL ?
 					  "<string>" : err_ret->filename,
 					  tok->lineno);
+#endif
 
 		if ((err_ret->error =
 		     PyParser_AddToken(ps, (int)type, str, tok->lineno,
diff --git a/Python/ceval.c b/Python/ceval.c
index ec62350..5e67b29 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2984,10 +2984,12 @@
 			result = 1;
 			cf->cf_flags |= compilerflags;
 		}
+#if 0 /* future keyword */
 		if (codeflags & CO_GENERATOR_ALLOWED) {
 			result = 1;
 			cf->cf_flags |= CO_GENERATOR_ALLOWED;
 		}
+#endif
 	}
 	return result;
 }
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index ad92004..64418e4 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -542,6 +542,15 @@
 	return PyRun_InteractiveOneFlags(fp, filename, NULL);
 }
 
+/* compute parser flags based on compiler flags */
+#if 0 /* future keyword */
+#define PARSER_FLAGS(flags) \
+	(((flags) && (flags)->cf_flags & CO_GENERATOR_ALLOWED) ? \
+		PyPARSE_YIELD_IS_KEYWORD : 0)
+#else
+#define PARSER_FLAGS(flags) 0
+#endif
+
 int
 PyRun_InteractiveOneFlags(FILE *fp, char *filename, PyCompilerFlags *flags)
 {
@@ -568,9 +577,7 @@
 	}
 	n = PyParser_ParseFileFlags(fp, filename, &_PyParser_Grammar,
 			    	    Py_single_input, ps1, ps2, &err,
-			    	    (flags &&
-			    	     flags->cf_flags & CO_GENERATOR_ALLOWED) ?
-			    	    	PyPARSE_YIELD_IS_KEYWORD : 0);
+			    	    PARSER_FLAGS(flags));
 	Py_XDECREF(v);
 	Py_XDECREF(w);
 	if (n == NULL) {
@@ -1031,9 +1038,7 @@
 		  PyCompilerFlags *flags)
 {
 	return run_err_node(PyParser_SimpleParseStringFlags(
-			str, start,
-			(flags && flags->cf_flags & CO_GENERATOR_ALLOWED) ?
-				PyPARSE_YIELD_IS_KEYWORD : 0),
+				    str, start, PARSER_FLAGS(flags)),
 			    "<string>", globals, locals, flags);
 }
 
@@ -1050,8 +1055,7 @@
 		  PyObject *locals, int closeit, PyCompilerFlags *flags)
 {
 	node *n = PyParser_SimpleParseFileFlags(fp, filename, start,
-			(flags && flags->cf_flags & CO_GENERATOR_ALLOWED) ?
-				PyPARSE_YIELD_IS_KEYWORD : 0);
+						PARSER_FLAGS(flags));
 	if (closeit)
 		fclose(fp);
 	return run_err_node(n, filename, globals, locals, flags);
@@ -1125,9 +1129,7 @@
 {
 	node *n;
 	PyCodeObject *co;
-	n = PyParser_SimpleParseStringFlags(str, start,
-		(flags && flags->cf_flags & CO_GENERATOR_ALLOWED) ?
-			PyPARSE_YIELD_IS_KEYWORD : 0);
+	n = PyParser_SimpleParseStringFlags(str, start, PARSER_FLAGS(flags));
 	if (n == NULL)
 		return NULL;
 	co = PyNode_CompileFlags(n, filename, flags);
