]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.10] gh-125529: Avoid f-strings in the metagrammar (#125582)
authorPetr Viktorin <encukou@gmail.com>
Tue, 22 Oct 2024 11:41:51 +0000 (13:41 +0200)
committerGitHub <noreply@github.com>
Tue, 22 Oct 2024 11:41:51 +0000 (12:41 +0100)
Grammar actions need to be valid Python tokens and the accepted tokens need to be
listed in the actions mini-grammar).

In Python 3.12+ (PEP 701), f-strings are no longer STRING tokens, so pegen fails
to regenerate the metaparser on this Python version, as in:

   PYTHON_FOR_REGEN=python3.12 make regen-pegen-metaparser

Use `+` and plain strings rather than f-strings.

Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
Tools/peg_generator/pegen/grammar_parser.py
Tools/peg_generator/pegen/metagrammar.gram

index 892df5cf8ccca153871c694819f21890b01f76d4..de735649d461595c28206e6c8bbe919c89498d47 100644 (file)
@@ -420,7 +420,7 @@ class GeneratedParser(Parser):
             and
             (item := self.item())
         ):
-            return NamedItem ( name . string , item , f"{type.string}*" )
+            return NamedItem ( name . string , item , type . string + "*" )
         self.reset(mark)
         if cut: return None
         cut = False
index bb4355fd189e05daeef82a44c1acfe913b2ee68b..77695d5e0a91a08dfc4b76d6615cf4bc6a3df035 100644 (file)
@@ -84,7 +84,7 @@ items[NamedItemList]:
     | named_item { [named_item] }
 
 named_item[NamedItem]:
-    | NAME '[' type=NAME '*' ']' '=' ~ item {NamedItem(name.string, item, f"{type.string}*")}
+    | NAME '[' type=NAME '*' ']' '=' ~ item {NamedItem(name.string, item, type.string+"*")}
     | NAME '[' type=NAME ']' '=' ~ item {NamedItem(name.string, item, type.string)}
     | NAME '=' ~ item {NamedItem(name.string, item)}
     | item {NamedItem(None, item)}