[Python-checkins] gh-93103: Parser uses PyConfig.parser_debug instead of Py_DebugFlag (#93106)

vstinner webhook-mailer at python.org
Tue May 24 16:35:14 EDT 2022


https://github.com/python/cpython/commit/5115a1683154a1f2093aa7f2c6834e47d326cb7d
commit: 5115a1683154a1f2093aa7f2c6834e47d326cb7d
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-05-24T22:35:08+02:00
summary:

gh-93103: Parser uses PyConfig.parser_debug instead of Py_DebugFlag (#93106)

* Replace deprecated Py_DebugFlag with PyConfig.parser_debug in the
  parser.
* Add Parser.debug member.
* Add tok_state.debug member.
* Py_FrozenMain(): Replace Py_VerboseFlag with PyConfig.verbose.

files:
M Parser/parser.c
M Parser/pegen.c
M Parser/pegen.h
M Parser/tokenizer.c
M Parser/tokenizer.h
M Python/frozenmain.c
M Tools/peg_generator/pegen/c_generator.py

diff --git a/Parser/parser.c b/Parser/parser.c
index 08bf6d2945600..31ad9a0ce7a72 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -2,7 +2,7 @@
 #include "pegen.h"
 
 #if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
-#  define D(x) if (Py_DebugFlag) x;
+#  define D(x) if (p->debug) { x; }
 #else
 #  define D(x)
 #endif
diff --git a/Parser/pegen.c b/Parser/pegen.c
index 143461d44a1a4..ec4fee3fc4b71 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -774,6 +774,9 @@ _PyPegen_Parser_New(struct tok_state *tok, int start_rule, int flags,
     p->known_err_token = NULL;
     p->level = 0;
     p->call_invalid_rules = 0;
+#ifdef Py_DEBUG
+    p->debug = _Py_GetConfig()->parser_debug;
+#endif
     return p;
 }
 
diff --git a/Parser/pegen.h b/Parser/pegen.h
index d6a6e4e1eeb2f..d8ac7e8cb918f 100644
--- a/Parser/pegen.h
+++ b/Parser/pegen.h
@@ -78,6 +78,7 @@ typedef struct {
     Token *known_err_token;
     int level;
     int call_invalid_rules;
+    int debug;
 } Parser;
 
 typedef struct {
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 7c797180956d5..b34dade8f6d9b 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -88,6 +88,9 @@ tok_new(void)
     tok->async_def_nl = 0;
     tok->interactive_underflow = IUNDERFLOW_NORMAL;
     tok->str = NULL;
+#ifdef Py_DEBUG
+    tok->debug = _Py_GetConfig()->parser_debug;
+#endif
     return tok;
 }
 
@@ -1021,7 +1024,7 @@ tok_nextc(struct tok_state *tok)
             rc = tok_underflow_file(tok);
         }
 #if defined(Py_DEBUG)
-        if (Py_DebugFlag) {
+        if (tok->debug) {
             fprintf(stderr, "line[%d] = ", tok->lineno);
             print_escape(stderr, tok->cur, tok->inp - tok->cur);
             fprintf(stderr, "  tok->done = %d\n", tok->done);
diff --git a/Parser/tokenizer.h b/Parser/tokenizer.h
index dba71bd60fefe..5ac64a99b7d66 100644
--- a/Parser/tokenizer.h
+++ b/Parser/tokenizer.h
@@ -84,6 +84,9 @@ struct tok_state {
                              NEWLINE token after it. */
     /* How to proceed when asked for a new token in interactive mode */
     enum interactive_underflow_t interactive_underflow;
+#ifdef Py_DEBUG
+    int debug;
+#endif
 };
 
 extern struct tok_state *_PyTokenizer_FromString(const char *, int);
diff --git a/Python/frozenmain.c b/Python/frozenmain.c
index 8743e082b4ff8..f8be165f7671d 100644
--- a/Python/frozenmain.c
+++ b/Python/frozenmain.c
@@ -53,7 +53,7 @@ Py_FrozenMain(int argc, char **argv)
     PyWinFreeze_ExeInit();
 #endif
 
-    if (Py_VerboseFlag) {
+    if (_Py_GetConfig()->verbose) {
         fprintf(stderr, "Python %s\n%s\n",
                 Py_GetVersion(), Py_GetCopyright());
     }
diff --git a/Tools/peg_generator/pegen/c_generator.py b/Tools/peg_generator/pegen/c_generator.py
index 65bfd5900a696..31bb505983329 100644
--- a/Tools/peg_generator/pegen/c_generator.py
+++ b/Tools/peg_generator/pegen/c_generator.py
@@ -32,7 +32,7 @@
 #include "pegen.h"
 
 #if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
-#  define D(x) if (Py_DebugFlag) x;
+#  define D(x) if (p->debug) { x; }
 #else
 #  define D(x)
 #endif



More information about the Python-checkins mailing list