]> granicus.if.org Git - python/commitdiff
Disable the parser hacks that enabled the "yield" keyword using a future
authorNeil Schemenauer <nascheme@enme.ucalgary.ca>
Fri, 22 Mar 2002 23:53:36 +0000 (23:53 +0000)
committerNeil Schemenauer <nascheme@enme.ucalgary.ca>
Fri, 22 Mar 2002 23:53:36 +0000 (23:53 +0000)
statement.

Include/parsetok.h
Parser/parser.h
Parser/parsetok.c
Python/ceval.c
Python/pythonrun.c

index 66359d42521673ae118551eb0ab6662d6a8d3867..bfe9f8f494bd3a911d7e154acfcccf17bb329948 100644 (file)
@@ -17,7 +17,9 @@ typedef struct {
     int expected;
 } perrdetail;
 
+#if 0
 #define PyPARSE_YIELD_IS_KEYWORD       0x0001
+#endif
 
 extern DL_IMPORT(node *) PyParser_ParseString(char *, grammar *, int,
                                               perrdetail *);
index b0c9a1eeb3477e3b1678ff28a1c7b1e095cf578a..95ec2477d89aa0276fdb567aa1329d1439a1af61 100644 (file)
@@ -25,7 +25,9 @@ typedef struct {
        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);
index ed4fe7b760f0b915d8ab8050f67459f1f0abd072..472b0f5d53080576dee7266ac27dd8f5e6e6fae7 100644 (file)
@@ -83,8 +83,10 @@ PyParser_ParseFileFlags(FILE *fp, char *filename, grammar *g, int start,
 /* 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 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
                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 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
                        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 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
                                          err_ret->filename==NULL ?
                                          "<string>" : err_ret->filename,
                                          tok->lineno);
+#endif
 
                if ((err_ret->error =
                     PyParser_AddToken(ps, (int)type, str, tok->lineno,
index ec62350bdabc910d237842bdc5b1ac35bd4edc97..5e67b297f8d2162ca50e25aa85dfcd3f2a04e0db 100644 (file)
@@ -2984,10 +2984,12 @@ PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
                        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;
 }
index ad92004f9a5f694623ed46e246c66da7fa0d5136..64418e417d447d8ee09397cb3809d7ef4df8df50 100644 (file)
@@ -542,6 +542,15 @@ PyRun_InteractiveOne(FILE *fp, char *filename)
        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 @@ PyRun_InteractiveOneFlags(FILE *fp, char *filename, PyCompilerFlags *flags)
        }
        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 @@ PyRun_StringFlags(char *str, int start, PyObject *globals, PyObject *locals,
                  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 @@ PyRun_FileExFlags(FILE *fp, char *filename, int start, PyObject *globals,
                  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 @@ Py_CompileStringFlags(char *str, char *filename, int start,
 {
        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);