@@ -533,6 +533,7 @@ PyRun_InteractiveOneFlags(FILE *fp, char *filename, PyCompilerFlags *flags)
533533 node * n ;
534534 perrdetail err ;
535535 char * ps1 = "" , * ps2 = "" ;
536+
536537 v = PySys_GetObject ("ps1" );
537538 if (v != NULL ) {
538539 v = PyObject_Str (v );
@@ -549,8 +550,11 @@ PyRun_InteractiveOneFlags(FILE *fp, char *filename, PyCompilerFlags *flags)
549550 else if (PyString_Check (w ))
550551 ps2 = PyString_AsString (w );
551552 }
552- n = PyParser_ParseFile (fp , filename , & _PyParser_Grammar ,
553- Py_single_input , ps1 , ps2 , & err );
553+ n = PyParser_ParseFileFlags (fp , filename , & _PyParser_Grammar ,
554+ Py_single_input , ps1 , ps2 , & err ,
555+ (flags &&
556+ flags -> cf_flags & PyCF_GENERATORS ) ?
557+ PyPARSE_YIELD_IS_KEYWORD : 0 );
554558 Py_XDECREF (v );
555559 Py_XDECREF (w );
556560 if (n == NULL ) {
@@ -1017,7 +1021,9 @@ PyObject *
10171021PyRun_FileExFlags (FILE * fp , char * filename , int start , PyObject * globals ,
10181022 PyObject * locals , int closeit , PyCompilerFlags * flags )
10191023{
1020- node * n = PyParser_SimpleParseFile (fp , filename , start );
1024+ node * n = PyParser_SimpleParseFileFlags (fp , filename , start ,
1025+ (flags && flags -> cf_flags & PyCF_GENERATORS ) ?
1026+ PyPARSE_YIELD_IS_KEYWORD : 0 );
10211027 if (closeit )
10221028 fclose (fp );
10231029 return run_err_node (n , filename , globals , locals , flags );
@@ -1101,7 +1107,9 @@ Py_CompileStringFlags(char *str, char *filename, int start,
11011107{
11021108 node * n ;
11031109 PyCodeObject * co ;
1104- n = PyParser_SimpleParseString (str , start );
1110+ n = PyParser_SimpleParseStringFlags (str , start ,
1111+ (flags && flags -> cf_flags & PyCF_GENERATORS ) ?
1112+ PyPARSE_YIELD_IS_KEYWORD : 0 );
11051113 if (n == NULL )
11061114 return NULL ;
11071115 co = PyNode_CompileFlags (n , filename , flags );
@@ -1125,30 +1133,43 @@ Py_SymtableString(char *str, char *filename, int start)
11251133/* Simplified interface to parsefile -- return node or set exception */
11261134
11271135node *
1128- PyParser_SimpleParseFile (FILE * fp , char * filename , int start )
1136+ PyParser_SimpleParseFileFlags (FILE * fp , char * filename , int start , int flags )
11291137{
11301138 node * n ;
11311139 perrdetail err ;
1132- n = PyParser_ParseFile (fp , filename , & _PyParser_Grammar , start ,
1133- (char * )0 , (char * )0 , & err );
1140+ n = PyParser_ParseFileFlags (fp , filename , & _PyParser_Grammar , start ,
1141+ (char * )0 , (char * )0 , & err , flags );
11341142 if (n == NULL )
11351143 err_input (& err );
11361144 return n ;
11371145}
11381146
1147+ node *
1148+ PyParser_SimpleParseFile (FILE * fp , char * filename , int start )
1149+ {
1150+ return PyParser_SimpleParseFileFlags (fp , filename , start , 0 );
1151+ }
1152+
11391153/* Simplified interface to parsestring -- return node or set exception */
11401154
11411155node *
1142- PyParser_SimpleParseString (char * str , int start )
1156+ PyParser_SimpleParseStringFlags (char * str , int start , int flags )
11431157{
11441158 node * n ;
11451159 perrdetail err ;
1146- n = PyParser_ParseString (str , & _PyParser_Grammar , start , & err );
1160+ n = PyParser_ParseStringFlags (str , & _PyParser_Grammar , start , & err ,
1161+ flags );
11471162 if (n == NULL )
11481163 err_input (& err );
11491164 return n ;
11501165}
11511166
1167+ node *
1168+ PyParser_SimpleParseString (char * str , int start )
1169+ {
1170+ return PyParser_SimpleParseStringFlags (str , start , 0 );
1171+ }
1172+
11521173/* Set the error appropriate to the given input error code (see errcode.h) */
11531174
11541175static void
0 commit comments