From 5d9762e7cf90444b03b43262be8001ff83401aac Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Mon, 17 Apr 2023 23:14:18 +0900 Subject: [PATCH 01/24] gh-101525: Fix make test if the --enable-bolt enabled (gh-103574) --- Makefile.pre.in | 20 +++++---- configure | 108 ++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 7 ++++ 3 files changed, 128 insertions(+), 7 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index a58397f21f9bb2..582310807d05ba 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -38,6 +38,7 @@ CC= @CC@ CXX= @CXX@ LINKCC= @LINKCC@ AR= @AR@ +READELF= @READELF@ SOABI= @SOABI@ LDVERSION= @LDVERSION@ LIBPYTHON= @LIBPYTHON@ @@ -670,13 +671,18 @@ profile-opt: profile-run-stamp bolt-opt: @PREBOLT_RULE@ rm -f *.fdata - @LLVM_BOLT@ ./$(BUILDPYTHON) -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $(BUILDPYTHON).bolt) -o $(BUILDPYTHON).bolt_inst - ./$(BUILDPYTHON).bolt_inst $(PROFILE_TASK) || true - @MERGE_FDATA@ $(BUILDPYTHON).*.fdata > $(BUILDPYTHON).fdata - @LLVM_BOLT@ ./$(BUILDPYTHON) -o $(BUILDPYTHON).bolt -data=$(BUILDPYTHON).fdata -update-debug-sections -reorder-blocks=ext-tsp -reorder-functions=hfsort+ -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot - rm -f *.fdata - rm -f $(BUILDPYTHON).bolt_inst - mv $(BUILDPYTHON).bolt $(BUILDPYTHON) + @if $(READELF) -p .note.bolt_info $(BUILDPYTHON) | grep BOLT > /dev/null; then\ + echo "skip: $(BUILDPYTHON) is already BOLTed."; \ + else \ + @LLVM_BOLT@ ./$(BUILDPYTHON) -instrument -instrumentation-file-append-pid -instrumentation-file=$(abspath $(BUILDPYTHON).bolt) -o $(BUILDPYTHON).bolt_inst; \ + ./$(BUILDPYTHON).bolt_inst $(PROFILE_TASK) || true; \ + @MERGE_FDATA@ $(BUILDPYTHON).*.fdata > $(BUILDPYTHON).fdata; \ + @LLVM_BOLT@ ./$(BUILDPYTHON) -o $(BUILDPYTHON).bolt -data=$(BUILDPYTHON).fdata -update-debug-sections -reorder-blocks=ext-tsp -reorder-functions=hfsort+ -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot; \ + rm -f *.fdata; \ + rm -f $(BUILDPYTHON).bolt_inst; \ + mv $(BUILDPYTHON).bolt $(BUILDPYTHON); \ + fi + # Compile and run with gcov .PHONY=coverage coverage-lcov coverage-report diff --git a/configure b/configure index 4ae8258438e620..8133d47f61355b 100755 --- a/configure +++ b/configure @@ -892,6 +892,8 @@ PGO_PROF_USE_FLAG PGO_PROF_GEN_FLAG MERGE_FDATA LLVM_BOLT +ac_ct_READELF +READELF PREBOLT_RULE LLVM_AR_FOUND LLVM_AR @@ -7916,6 +7918,112 @@ if test "$Py_BOLT" = 'true' ; then DEF_MAKE_ALL_RULE="bolt-opt" DEF_MAKE_RULE="build_all" + + if test -n "$ac_tool_prefix"; then + for ac_prog in readelf + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_READELF+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$READELF"; then + ac_cv_prog_READELF="$READELF" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_READELF="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +READELF=$ac_cv_prog_READELF +if test -n "$READELF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5 +$as_echo "$READELF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$READELF" && break + done +fi +if test -z "$READELF"; then + ac_ct_READELF=$READELF + for ac_prog in readelf +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_READELF+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_READELF"; then + ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_READELF="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_READELF=$ac_cv_prog_ac_ct_READELF +if test -n "$ac_ct_READELF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5 +$as_echo "$ac_ct_READELF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_READELF" && break +done + + if test "x$ac_ct_READELF" = x; then + READELF=""notfound"" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + READELF=$ac_ct_READELF + fi +fi + + if test "$READELF" == "notfound" + then + as_fn_error $? "readelf is required for a --enable-bolt build but could not be found." "$LINENO" 5 + fi + # -fno-reorder-blocks-and-partition is required for bolt to work. # Possibly GCC only. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-reorder-blocks-and-partition" >&5 diff --git a/configure.ac b/configure.ac index 4d9eb46f5ce7d8..3f20d8980d8abc 100644 --- a/configure.ac +++ b/configure.ac @@ -1938,6 +1938,13 @@ if test "$Py_BOLT" = 'true' ; then DEF_MAKE_ALL_RULE="bolt-opt" DEF_MAKE_RULE="build_all" + AC_SUBST(READELF) + AC_CHECK_TOOLS(READELF, [readelf], "notfound") + if test "$READELF" == "notfound" + then + AC_MSG_ERROR([readelf is required for a --enable-bolt build but could not be found.]) + fi + # -fno-reorder-blocks-and-partition is required for bolt to work. # Possibly GCC only. AX_CHECK_COMPILE_FLAG([-fno-reorder-blocks-and-partition],[ From eb5fd31948e2e379635e17545c18c9ef5d06d3e7 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Mon, 17 Apr 2023 17:33:54 +0100 Subject: [PATCH 02/24] gh-103088: Ensure POSIX venv scripts always use LF line endings (GH-103591) Also touches the affected files in meaningless ways to ensure they get updated when pulling --- .gitattributes | 1 + Lib/venv/scripts/common/activate | 2 +- Lib/venv/scripts/posix/activate.csh | 1 + Lib/venv/scripts/posix/activate.fish | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitattributes b/.gitattributes index cb1cf8bcc7c877..4ed95069442f3d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -34,6 +34,7 @@ Lib/test/xmltestdata/* noeol # Shell scripts should have LF even on Windows because of Cygwin Lib/venv/scripts/common/activate text eol=lf +Lib/venv/scripts/posix/* text eol=lf # CRLF files [attr]dos text eol=crlf diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate index cb898b39670c47..408df5cb93b9e9 100644 --- a/Lib/venv/scripts/common/activate +++ b/Lib/venv/scripts/common/activate @@ -1,5 +1,5 @@ # This file must be used with "source bin/activate" *from bash* -# you cannot run it directly +# You cannot run it directly deactivate () { # reset old environment variables diff --git a/Lib/venv/scripts/posix/activate.csh b/Lib/venv/scripts/posix/activate.csh index d6f697c55ed81c..5e8d66fa9e5061 100644 --- a/Lib/venv/scripts/posix/activate.csh +++ b/Lib/venv/scripts/posix/activate.csh @@ -1,5 +1,6 @@ # This file must be used with "source bin/activate.csh" *from csh*. # You cannot run it directly. + # Created by Davide Di Blasi . # Ported to Python 3.3 venv by Andrew Svetlov diff --git a/Lib/venv/scripts/posix/activate.fish b/Lib/venv/scripts/posix/activate.fish index 9aa4446005f4d8..91ad6442e05692 100644 --- a/Lib/venv/scripts/posix/activate.fish +++ b/Lib/venv/scripts/posix/activate.fish @@ -1,5 +1,5 @@ # This file must be used with "source /bin/activate.fish" *from fish* -# (https://fishshell.com/); you cannot run it directly. +# (https://fishshell.com/). You cannot run it directly. function deactivate -d "Exit virtual environment and return to normal shell environment" # reset old environment variables From d83faf7f1ba2de95e98e3eeb5ce9009d9cd62192 Mon Sep 17 00:00:00 2001 From: AN Long Date: Tue, 18 Apr 2023 02:30:48 +0800 Subject: [PATCH 03/24] gh-103092: Isolate winreg (#103250) --- Lib/test/test_winreg.py | 16 +- ...-04-08-00-48-40.gh-issue-103092.5EFts0.rst | 1 + Objects/object.c | 6 - PC/clinic/winreg.c.h | 54 ++-- PC/winreg.c | 271 ++++++++++-------- 5 files changed, 196 insertions(+), 152 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2023-04-08-00-48-40.gh-issue-103092.5EFts0.rst diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py index 769ab67b0f5611..924a962781a75b 100644 --- a/Lib/test/test_winreg.py +++ b/Lib/test/test_winreg.py @@ -1,11 +1,12 @@ # Test the windows specific win32reg module. # Only win32reg functions not hit here: FlushKey, LoadKey and SaveKey +import gc import os, sys, errno -import unittest -from test.support import import_helper import threading +import unittest from platform import machine, win32_edition +from test.support import cpython_only, import_helper # Do this first so test will be skipped if module doesn't exist import_helper.import_module('winreg', required_on=['win']) @@ -49,6 +50,17 @@ ("Japanese 日本", "日本語", REG_SZ), ] + +@cpython_only +class HeapTypeTests(unittest.TestCase): + def test_have_gc(self): + self.assertTrue(gc.is_tracked(HKEYType)) + + def test_immutable(self): + with self.assertRaisesRegex(TypeError, "immutable"): + HKEYType.foo = "bar" + + class BaseWinregTests(unittest.TestCase): def setUp(self): diff --git a/Misc/NEWS.d/next/Library/2023-04-08-00-48-40.gh-issue-103092.5EFts0.rst b/Misc/NEWS.d/next/Library/2023-04-08-00-48-40.gh-issue-103092.5EFts0.rst new file mode 100644 index 00000000000000..0f2108fee763d0 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-04-08-00-48-40.gh-issue-103092.5EFts0.rst @@ -0,0 +1 @@ +Adapt the :mod:`winreg` extension module to :pep:`687`. diff --git a/Objects/object.c b/Objects/object.c index 56747fa193e178..e26f737fccd60f 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1965,9 +1965,6 @@ PyObject _Py_NotImplementedStruct = { 1, &_PyNotImplemented_Type }; -#ifdef MS_WINDOWS -extern PyTypeObject PyHKEY_Type; -#endif extern PyTypeObject _Py_GenericAliasIterType; extern PyTypeObject _PyMemoryIter_Type; extern PyTypeObject _PyLineIterator; @@ -2018,9 +2015,6 @@ static PyTypeObject* static_types[] = { &PyFunction_Type, &PyGen_Type, &PyGetSetDescr_Type, -#ifdef MS_WINDOWS - &PyHKEY_Type, -#endif &PyInstanceMethod_Type, &PyListIter_Type, &PyListRevIter_Type, diff --git a/PC/clinic/winreg.c.h b/PC/clinic/winreg.c.h index 7a9474301da8a1..4109c85276f0a4 100644 --- a/PC/clinic/winreg.c.h +++ b/PC/clinic/winreg.c.h @@ -219,14 +219,14 @@ winreg_ConnectRegistry(PyObject *module, PyObject *const *args, Py_ssize_t nargs _PyArg_BadArgument("ConnectRegistry", "argument 1", "str or None", args[0]); goto exit; } - if (!clinic_HKEY_converter(args[1], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[1], &key)) { goto exit; } _return_value = winreg_ConnectRegistry_impl(module, computer_name, key); if (_return_value == NULL) { goto exit; } - return_value = PyHKEY_FromHKEY(_return_value); + return_value = PyHKEY_FromHKEY(_PyModule_GetState(module), _return_value); exit: /* Cleanup for computer_name */ @@ -275,7 +275,7 @@ winreg_CreateKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("CreateKey", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -295,7 +295,7 @@ winreg_CreateKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (_return_value == NULL) { goto exit; } - return_value = PyHKEY_FromHKEY(_return_value); + return_value = PyHKEY_FromHKEY(_PyModule_GetState(module), _return_value); exit: /* Cleanup for sub_key */ @@ -382,7 +382,7 @@ winreg_CreateKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py if (!args) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -419,7 +419,7 @@ winreg_CreateKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py if (_return_value == NULL) { goto exit; } - return_value = PyHKEY_FromHKEY(_return_value); + return_value = PyHKEY_FromHKEY(_PyModule_GetState(module), _return_value); exit: /* Cleanup for sub_key */ @@ -466,7 +466,7 @@ winreg_DeleteKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("DeleteKey", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (!PyUnicode_Check(args[1])) { @@ -566,7 +566,7 @@ winreg_DeleteKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py if (!args) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (!PyUnicode_Check(args[1])) { @@ -634,7 +634,7 @@ winreg_DeleteValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("DeleteValue", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -694,7 +694,7 @@ winreg_EnumKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("EnumKey", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } index = _PyLong_AsInt(args[1]); @@ -751,7 +751,7 @@ winreg_EnumValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("EnumValue", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } index = _PyLong_AsInt(args[1]); @@ -839,7 +839,7 @@ winreg_FlushKey(PyObject *module, PyObject *arg) PyObject *return_value = NULL; HKEY key; - if (!clinic_HKEY_converter(arg, &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), arg, &key)) { goto exit; } return_value = winreg_FlushKey_impl(module, key); @@ -898,7 +898,7 @@ winreg_LoadKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("LoadKey", nargs, 3, 3)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (!PyUnicode_Check(args[1])) { @@ -999,7 +999,7 @@ winreg_OpenKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObje if (!args) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -1036,7 +1036,7 @@ winreg_OpenKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObje if (_return_value == NULL) { goto exit; } - return_value = PyHKEY_FromHKEY(_return_value); + return_value = PyHKEY_FromHKEY(_PyModule_GetState(module), _return_value); exit: /* Cleanup for sub_key */ @@ -1116,7 +1116,7 @@ winreg_OpenKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyOb if (!args) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -1153,7 +1153,7 @@ winreg_OpenKeyEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyOb if (_return_value == NULL) { goto exit; } - return_value = PyHKEY_FromHKEY(_return_value); + return_value = PyHKEY_FromHKEY(_PyModule_GetState(module), _return_value); exit: /* Cleanup for sub_key */ @@ -1193,7 +1193,7 @@ winreg_QueryInfoKey(PyObject *module, PyObject *arg) PyObject *return_value = NULL; HKEY key; - if (!clinic_HKEY_converter(arg, &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), arg, &key)) { goto exit; } return_value = winreg_QueryInfoKey_impl(module, key); @@ -1242,7 +1242,7 @@ winreg_QueryValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("QueryValue", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -1303,7 +1303,7 @@ winreg_QueryValueEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("QueryValueEx", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -1369,7 +1369,7 @@ winreg_SaveKey(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("SaveKey", nargs, 2, 2)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (!PyUnicode_Check(args[1])) { @@ -1438,7 +1438,7 @@ winreg_SetValue(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("SetValue", nargs, 4, 4)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -1542,7 +1542,7 @@ winreg_SetValueEx(PyObject *module, PyObject *const *args, Py_ssize_t nargs) if (!_PyArg_CheckPositional("SetValueEx", nargs, 5, 5)) { goto exit; } - if (!clinic_HKEY_converter(args[0], &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), args[0], &key)) { goto exit; } if (args[1] == Py_None) { @@ -1603,7 +1603,7 @@ winreg_DisableReflectionKey(PyObject *module, PyObject *arg) PyObject *return_value = NULL; HKEY key; - if (!clinic_HKEY_converter(arg, &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), arg, &key)) { goto exit; } return_value = winreg_DisableReflectionKey_impl(module, key); @@ -1641,7 +1641,7 @@ winreg_EnableReflectionKey(PyObject *module, PyObject *arg) PyObject *return_value = NULL; HKEY key; - if (!clinic_HKEY_converter(arg, &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), arg, &key)) { goto exit; } return_value = winreg_EnableReflectionKey_impl(module, key); @@ -1677,7 +1677,7 @@ winreg_QueryReflectionKey(PyObject *module, PyObject *arg) PyObject *return_value = NULL; HKEY key; - if (!clinic_HKEY_converter(arg, &key)) { + if (!clinic_HKEY_converter(_PyModule_GetState(module), arg, &key)) { goto exit; } return_value = winreg_QueryReflectionKey_impl(module, key); @@ -1795,4 +1795,4 @@ winreg_QueryReflectionKey(PyObject *module, PyObject *arg) #ifndef WINREG_QUERYREFLECTIONKEY_METHODDEF #define WINREG_QUERYREFLECTIONKEY_METHODDEF #endif /* !defined(WINREG_QUERYREFLECTIONKEY_METHODDEF) */ -/*[clinic end generated code: output=715db416dc1321ee input=a9049054013a1b77]*/ +/*[clinic end generated code: output=15dc2e6c4d4e2ad5 input=a9049054013a1b77]*/ diff --git a/PC/winreg.c b/PC/winreg.c index 15d32e7fcb99c9..4884125c3609ad 100644 --- a/PC/winreg.c +++ b/PC/winreg.c @@ -15,15 +15,22 @@ #define PY_SSIZE_T_CLEAN #include "Python.h" #include "pycore_object.h" // _PyObject_Init() +#include "pycore_moduleobject.h" #include "structmember.h" // PyMemberDef #include #if defined(MS_WINDOWS_DESKTOP) || defined(MS_WINDOWS_SYSTEM) || defined(MS_WINDOWS_GAMES) -static BOOL PyHKEY_AsHKEY(PyObject *ob, HKEY *pRes, BOOL bNoneOK); -static BOOL clinic_HKEY_converter(PyObject *ob, void *p); -static PyObject *PyHKEY_FromHKEY(HKEY h); -static BOOL PyHKEY_Close(PyObject *obHandle); +typedef struct { + PyTypeObject *PyHKEY_Type; +} winreg_state; + +/* Forward declares */ + +static BOOL PyHKEY_AsHKEY(winreg_state *st, PyObject *ob, HKEY *pRes, BOOL bNoneOK); +static BOOL clinic_HKEY_converter(winreg_state *st, PyObject *ob, void *p); +static PyObject *PyHKEY_FromHKEY(winreg_state *st, HKEY h); +static BOOL PyHKEY_Close(winreg_state *st, PyObject *obHandle); static char errNotAHandle[] = "Object is not a handle"; @@ -35,8 +42,6 @@ static char errNotAHandle[] = "Object is not a handle"; #define PyErr_SetFromWindowsErrWithFunction(rc, fnname) \ PyErr_SetFromWindowsErr(rc) -/* Forward declares */ - /* Doc strings */ PyDoc_STRVAR(module_doc, "This module provides access to the Windows registry API.\n" @@ -114,7 +119,7 @@ typedef struct { HKEY hkey; } PyHKEYObject; -#define PyHKEY_Check(op) Py_IS_TYPE(op, &PyHKEY_Type) +#define PyHKEY_Check(st, op) Py_IS_TYPE(op, st->PyHKEY_Type) static char *failMsg = "bad operand type"; @@ -147,7 +152,18 @@ PyHKEY_deallocFunc(PyObject *ob) PyHKEYObject *obkey = (PyHKEYObject *)ob; if (obkey->hkey) RegCloseKey((HKEY)obkey->hkey); - PyObject_Free(ob); + + PyTypeObject *tp = Py_TYPE(ob); + PyObject_GC_UnTrack(ob); + PyObject_GC_Del(ob); + Py_DECREF(tp); +} + +static int +PyHKEY_traverseFunc(PyHKEYObject *self, visitproc visit, void *arg) +{ + Py_VISIT(Py_TYPE(self)); + return 0; } static int @@ -189,29 +205,6 @@ PyHKEY_hashFunc(PyObject *ob) } -static PyNumberMethods PyHKEY_NumberMethods = -{ - PyHKEY_binaryFailureFunc, /* nb_add */ - PyHKEY_binaryFailureFunc, /* nb_subtract */ - PyHKEY_binaryFailureFunc, /* nb_multiply */ - PyHKEY_binaryFailureFunc, /* nb_remainder */ - PyHKEY_binaryFailureFunc, /* nb_divmod */ - PyHKEY_ternaryFailureFunc, /* nb_power */ - PyHKEY_unaryFailureFunc, /* nb_negative */ - PyHKEY_unaryFailureFunc, /* nb_positive */ - PyHKEY_unaryFailureFunc, /* nb_absolute */ - PyHKEY_boolFunc, /* nb_bool */ - PyHKEY_unaryFailureFunc, /* nb_invert */ - PyHKEY_binaryFailureFunc, /* nb_lshift */ - PyHKEY_binaryFailureFunc, /* nb_rshift */ - PyHKEY_binaryFailureFunc, /* nb_and */ - PyHKEY_binaryFailureFunc, /* nb_xor */ - PyHKEY_binaryFailureFunc, /* nb_or */ - PyHKEY_intFunc, /* nb_int */ - 0, /* nb_reserved */ - PyHKEY_unaryFailureFunc, /* nb_float */ -}; - /*[clinic input] module winreg class winreg.HKEYType "PyHKEYObject *" "&PyHKEY_Type" @@ -229,6 +222,14 @@ class HKEY_converter(CConverter): type = 'HKEY' converter = 'clinic_HKEY_converter' + def parse_arg(self, argname, displayname): + return """ + if (!{converter}(_PyModule_GetState(module), {argname}, &{paramname})) {{{{ + goto exit; + }}}} + """.format(argname=argname, paramname=self.parser_name, + converter=self.converter) + class HKEY_return_converter(CReturnConverter): type = 'HKEY' @@ -236,7 +237,7 @@ class HKEY_return_converter(CReturnConverter): self.declare(data) self.err_occurred_if_null_pointer("_return_value", data) data.return_conversion.append( - 'return_value = PyHKEY_FromHKEY(_return_value);\n') + 'return_value = PyHKEY_FromHKEY(_PyModule_GetState(module), _return_value);\n') # HACK: this only works for PyHKEYObjects, nothing else. # Should this be generalized and enshrined in clinic.py, @@ -249,7 +250,7 @@ class self_return_converter(CReturnConverter): data.return_conversion.append( 'return_value = (PyObject *)_return_value;\n') [python start generated code]*/ -/*[python end generated code: output=da39a3ee5e6b4b0d input=2ebb7a4922d408d6]*/ +/*[python end generated code: output=da39a3ee5e6b4b0d input=17e645060c7b8ae1]*/ #include "clinic/winreg.c.h" @@ -270,8 +271,11 @@ static PyObject * winreg_HKEYType_Close_impl(PyHKEYObject *self) /*[clinic end generated code: output=fced3a624fb0c344 input=6786ac75f6b89de6]*/ { - if (!PyHKEY_Close((PyObject *)self)) + winreg_state *st = _PyType_GetModuleState(Py_TYPE(self)); + assert(st != NULL); + if (!PyHKEY_Close(st, (PyObject *)self)) { return NULL; + } Py_RETURN_NONE; } @@ -327,8 +331,11 @@ winreg_HKEYType___exit___impl(PyHKEYObject *self, PyObject *exc_type, PyObject *exc_value, PyObject *traceback) /*[clinic end generated code: output=923ebe7389e6a263 input=fb32489ee92403c7]*/ { - if (!PyHKEY_Close((PyObject *)self)) + winreg_state *st = _PyType_GetModuleState(Py_TYPE(self)); + assert(st != NULL); + if (!PyHKEY_Close(st, (PyObject *)self)) { return NULL; + } Py_RETURN_NONE; } @@ -350,62 +357,71 @@ static PyMemberDef PyHKEY_memberlist[] = { {NULL} /* Sentinel */ }; -/* The type itself */ -PyTypeObject PyHKEY_Type = -{ - PyVarObject_HEAD_INIT(0, 0) /* fill in type at module init */ - "PyHKEY", - sizeof(PyHKEYObject), - 0, - PyHKEY_deallocFunc, /* tp_dealloc */ - 0, /* tp_vectorcall_offset */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_as_async */ - 0, /* tp_repr */ - &PyHKEY_NumberMethods, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - PyHKEY_hashFunc, /* tp_hash */ - 0, /* tp_call */ - PyHKEY_strFunc, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - 0, /* tp_flags */ - PyHKEY_doc, /* tp_doc */ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - PyHKEY_methods, /*tp_methods*/ - PyHKEY_memberlist, /*tp_members*/ +static PyType_Slot pyhkey_type_slots[] = { + {Py_tp_dealloc, PyHKEY_deallocFunc}, + {Py_tp_members, PyHKEY_memberlist}, + {Py_tp_methods, PyHKEY_methods}, + {Py_tp_doc, (char *)PyHKEY_doc}, + {Py_tp_traverse, PyHKEY_traverseFunc}, + {Py_tp_hash, PyHKEY_hashFunc}, + {Py_tp_str, PyHKEY_strFunc}, + + // Number protocol + {Py_nb_add, PyHKEY_binaryFailureFunc}, + {Py_nb_subtract, PyHKEY_binaryFailureFunc}, + {Py_nb_multiply, PyHKEY_binaryFailureFunc}, + {Py_nb_remainder, PyHKEY_binaryFailureFunc}, + {Py_nb_divmod, PyHKEY_binaryFailureFunc}, + {Py_nb_power, PyHKEY_ternaryFailureFunc}, + {Py_nb_negative, PyHKEY_unaryFailureFunc}, + {Py_nb_positive, PyHKEY_unaryFailureFunc}, + {Py_nb_absolute, PyHKEY_unaryFailureFunc}, + {Py_nb_bool, PyHKEY_boolFunc}, + {Py_nb_invert, PyHKEY_unaryFailureFunc}, + {Py_nb_lshift, PyHKEY_binaryFailureFunc}, + {Py_nb_rshift, PyHKEY_binaryFailureFunc}, + {Py_nb_and, PyHKEY_binaryFailureFunc}, + {Py_nb_xor, PyHKEY_binaryFailureFunc}, + {Py_nb_or, PyHKEY_binaryFailureFunc}, + {Py_nb_int, PyHKEY_intFunc}, + {Py_nb_float, PyHKEY_unaryFailureFunc}, + {0, NULL}, +}; + +static PyType_Spec pyhkey_type_spec = { + .name = "winreg.PyHKEY", + .basicsize = sizeof(PyHKEYObject), + .flags = (Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_IMMUTABLETYPE | + Py_TPFLAGS_DISALLOW_INSTANTIATION), + .slots = pyhkey_type_slots, }; /************************************************************************ The public PyHKEY API (well, not public yet :-) ************************************************************************/ PyObject * -PyHKEY_New(HKEY hInit) +PyHKEY_New(PyObject *m, HKEY hInit) { - PyHKEYObject *key = PyObject_New(PyHKEYObject, &PyHKEY_Type); - if (key) - key->hkey = hInit; + winreg_state *st = _PyModule_GetState(m); + PyHKEYObject *key = PyObject_GC_New(PyHKEYObject, st->PyHKEY_Type); + if (key == NULL) { + return NULL; + } + key->hkey = hInit; + PyObject_GC_Track(key); return (PyObject *)key; } BOOL -PyHKEY_Close(PyObject *ob_handle) +PyHKEY_Close(winreg_state *st, PyObject *ob_handle) { LONG rc; HKEY key; - if (!PyHKEY_AsHKEY(ob_handle, &key, TRUE)) { + if (!PyHKEY_AsHKEY(st, ob_handle, &key, TRUE)) { return FALSE; } - if (PyHKEY_Check(ob_handle)) { + if (PyHKEY_Check(st, ob_handle)) { ((PyHKEYObject*)ob_handle)->hkey = 0; } rc = key ? RegCloseKey(key) : ERROR_SUCCESS; @@ -415,7 +431,7 @@ PyHKEY_Close(PyObject *ob_handle) } BOOL -PyHKEY_AsHKEY(PyObject *ob, HKEY *pHANDLE, BOOL bNoneOK) +PyHKEY_AsHKEY(winreg_state *st, PyObject *ob, HKEY *pHANDLE, BOOL bNoneOK) { if (ob == Py_None) { if (!bNoneOK) { @@ -426,7 +442,7 @@ PyHKEY_AsHKEY(PyObject *ob, HKEY *pHANDLE, BOOL bNoneOK) } *pHANDLE = (HKEY)0; } - else if (PyHKEY_Check(ob)) { + else if (PyHKEY_Check(st ,ob)) { PyHKEYObject *pH = (PyHKEYObject *)ob; *pHANDLE = pH->hkey; } @@ -447,23 +463,24 @@ PyHKEY_AsHKEY(PyObject *ob, HKEY *pHANDLE, BOOL bNoneOK) } BOOL -clinic_HKEY_converter(PyObject *ob, void *p) +clinic_HKEY_converter(winreg_state *st, PyObject *ob, void *p) { - if (!PyHKEY_AsHKEY(ob, (HKEY *)p, FALSE)) + if (!PyHKEY_AsHKEY(st, ob, (HKEY *)p, FALSE)) { return FALSE; + } return TRUE; } PyObject * -PyHKEY_FromHKEY(HKEY h) +PyHKEY_FromHKEY(winreg_state *st, HKEY h) { - /* Inline PyObject_New */ - PyHKEYObject *op = (PyHKEYObject *) PyObject_Malloc(sizeof(PyHKEYObject)); + PyHKEYObject *op = (PyHKEYObject *)PyObject_GC_New(PyHKEYObject, + st->PyHKEY_Type); if (op == NULL) { - return PyErr_NoMemory(); + return NULL; } - _PyObject_Init((PyObject*)op, &PyHKEY_Type); op->hkey = h; + PyObject_GC_Track(op); return (PyObject *)op; } @@ -472,11 +489,11 @@ PyHKEY_FromHKEY(HKEY h) The module methods ************************************************************************/ BOOL -PyWinObject_CloseHKEY(PyObject *obHandle) +PyWinObject_CloseHKEY(winreg_state *st, PyObject *obHandle) { BOOL ok; - if (PyHKEY_Check(obHandle)) { - ok = PyHKEY_Close(obHandle); + if (PyHKEY_Check(st, obHandle)) { + ok = PyHKEY_Close(st, obHandle); } #if SIZEOF_LONG >= SIZEOF_HKEY else if (PyLong_Check(obHandle)) { @@ -826,8 +843,9 @@ static PyObject * winreg_CloseKey(PyObject *module, PyObject *hkey) /*[clinic end generated code: output=a4fa537019a80d15 input=5b1aac65ba5127ad]*/ { - if (!PyHKEY_Close(hkey)) + if (!PyHKEY_Close(_PyModule_GetState(module), hkey)) { return NULL; + } Py_RETURN_NONE; } @@ -2061,7 +2079,7 @@ static struct PyMethodDef winreg_methods[] = { #define ADD_INT(VAL) do { \ if (PyModule_AddIntConstant(m, #VAL, VAL) < 0) { \ - goto error; \ + return -1; \ } \ } while (0) @@ -2079,38 +2097,25 @@ inskey(PyObject *mod, char *name, HKEY key) #define ADD_KEY(VAL) do { \ if (inskey(m, #VAL, VAL) < 0) { \ - goto error; \ + return -1; \ } \ } while (0) - -static struct PyModuleDef winregmodule = { - PyModuleDef_HEAD_INIT, - "winreg", - module_doc, - -1, - winreg_methods, - NULL, - NULL, - NULL, - NULL -}; - -PyMODINIT_FUNC PyInit_winreg(void) +static int +exec_module(PyObject *m) { - PyObject *m = PyModule_Create(&winregmodule); - if (m == NULL) { - return NULL; - } - PyHKEY_Type.tp_doc = PyHKEY_doc; - if (PyType_Ready(&PyHKEY_Type) < 0) { - goto error; + winreg_state *st = (winreg_state *)_PyModule_GetState(m); + + st->PyHKEY_Type = (PyTypeObject *) + PyType_FromModuleAndSpec(m, &pyhkey_type_spec, NULL); + if (st->PyHKEY_Type == NULL) { + return -1; } - if (PyModule_AddObjectRef(m, "HKEYType", (PyObject *)&PyHKEY_Type) < 0) { - goto error; + if (PyModule_AddObjectRef(m, "HKEYType", (PyObject *)st->PyHKEY_Type) < 0) { + return -1; } if (PyModule_AddObjectRef(m, "error", PyExc_OSError) < 0) { - goto error; + return -1; } /* Add the relevant constants */ @@ -2174,12 +2179,44 @@ PyMODINIT_FUNC PyInit_winreg(void) ADD_INT(REG_RESOURCE_REQUIREMENTS_LIST); #undef ADD_INT + return 0; +} - return m; +static PyModuleDef_Slot winreg_slots[] = { + {Py_mod_exec, exec_module}, + {0, NULL} +}; -error: - Py_DECREF(m); - return NULL; +static int +winreg_traverse(PyObject *module, visitproc visit, void *arg) +{ + winreg_state *state = _PyModule_GetState(module); + Py_VISIT(state->PyHKEY_Type); + return 0; +} + +static int +winreg_clear(PyObject *module) +{ + winreg_state *state = _PyModule_GetState(module); + Py_CLEAR(state->PyHKEY_Type); + return 0; +} + +static struct PyModuleDef winregmodule = { + .m_base = PyModuleDef_HEAD_INIT, + .m_name = "winreg", + .m_doc = module_doc, + .m_size = sizeof(winreg_state), + .m_methods = winreg_methods, + .m_slots = winreg_slots, + .m_traverse = winreg_traverse, + .m_clear = winreg_clear, +}; + +PyMODINIT_FUNC PyInit_winreg(void) +{ + return PyModuleDef_Init(&winregmodule); } #endif /* MS_WINDOWS_DESKTOP || MS_WINDOWS_SYSTEM || MS_WINDOWS_GAMES */ From b57f55c23e15654e9dd77680ff1462603e360b76 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Tue, 18 Apr 2023 02:33:22 +0300 Subject: [PATCH 04/24] gh-103449: Fix a bug in dataclass docstring generation (#103454) --- Lib/dataclasses.py | 9 +++++++-- Lib/test/test_dataclasses.py | 13 +++++++++++++ .../2023-04-11-21-38-39.gh-issue-103449.-nxmhb.rst | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2023-04-11-21-38-39.gh-issue-103449.-nxmhb.rst diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index 4026c8b77975b7..a73cdc22a5f4b3 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -1128,8 +1128,13 @@ def _process_class(cls, init, repr, eq, order, unsafe_hash, frozen, if not getattr(cls, '__doc__'): # Create a class doc-string. - cls.__doc__ = (cls.__name__ + - str(inspect.signature(cls)).replace(' -> None', '')) + try: + # In some cases fetching a signature is not possible. + # But, we surely should not fail in this case. + text_sig = str(inspect.signature(cls)).replace(' -> None', '') + except (TypeError, ValueError): + text_sig = '' + cls.__doc__ = (cls.__name__ + text_sig) if match_args: # I could probably compute this once diff --git a/Lib/test/test_dataclasses.py b/Lib/test/test_dataclasses.py index 6888680105c4fd..ae8bfcc149e862 100644 --- a/Lib/test/test_dataclasses.py +++ b/Lib/test/test_dataclasses.py @@ -2297,6 +2297,19 @@ class C: self.assertDocStrEqual(C.__doc__, "C(x:collections.deque=)") + def test_docstring_with_no_signature(self): + # See https://github.com/python/cpython/issues/103449 + class Meta(type): + __call__ = dict + class Base(metaclass=Meta): + pass + + @dataclass + class C(Base): + pass + + self.assertDocStrEqual(C.__doc__, "C") + class TestInit(unittest.TestCase): def test_base_has_init(self): diff --git a/Misc/NEWS.d/next/Library/2023-04-11-21-38-39.gh-issue-103449.-nxmhb.rst b/Misc/NEWS.d/next/Library/2023-04-11-21-38-39.gh-issue-103449.-nxmhb.rst new file mode 100644 index 00000000000000..0b2b47af1cbaab --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-04-11-21-38-39.gh-issue-103449.-nxmhb.rst @@ -0,0 +1 @@ +Fix a bug in doc string generation in :func:`dataclasses.dataclass`. From e35e0f15eba64a1dcbab10bbbd2ce276e190dcfa Mon Sep 17 00:00:00 2001 From: Skip Montanaro Date: Mon, 17 Apr 2023 20:21:19 -0500 Subject: [PATCH 05/24] gh-67230: update whatsnew note for csv changes (#103598) --- Doc/whatsnew/3.12.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst index 4165b16ba76441..2a371ebf55a11f 100644 --- a/Doc/whatsnew/3.12.rst +++ b/Doc/whatsnew/3.12.rst @@ -258,7 +258,7 @@ csv * Add :data:`~csv.QUOTE_NOTNULL` and :data:`~csv.QUOTE_STRINGS` flags to provide finer grained control of ``None`` and empty strings by - :class:`~csv.reader` and :class:`~csv.writer` objects. + :class:`~csv.writer` objects. inspect ------- From f39e00f9521a0d412a5fc9a50f2a553ec2bb1a7c Mon Sep 17 00:00:00 2001 From: Rafael Fontenelle Date: Mon, 17 Apr 2023 23:57:53 -0300 Subject: [PATCH 06/24] GH-103484: Docs: add linkcheck allowed redirects entries for most cases (#103569) Co-authored-by: Hugo van Kemenade --- Doc/conf.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Doc/conf.py b/Doc/conf.py index e99b801d0ae87a..60404fd3829e5b 100644 --- a/Doc/conf.py +++ b/Doc/conf.py @@ -254,9 +254,14 @@ # Options for the link checker # ---------------------------- -# Ignore certain URLs. -linkcheck_ignore = [r'https://bugs.python.org/(issue)?\d+'] - +linkcheck_allowed_redirects = { + # bpo-NNNN -> BPO -> GH Issues + r'https://bugs.python.org/issue\?@action=redirect&bpo=\d+': 'https://github.com/python/cpython/issues/\d+', + # GH-NNNN used to refer to pull requests + r'https://github.com/python/cpython/issues/\d+': 'https://github.com/python/cpython/pull/\d+', + # :source:`something` linking files in the repository + r'https://github.com/python/cpython/tree/.*': 'https://github.com/python/cpython/blob/.*' +} # Options for extensions # ---------------------- From ece20dba120a1a4745721c49f8d7389d4b1ee2a7 Mon Sep 17 00:00:00 2001 From: Pradyun Gedam Date: Mon, 17 Apr 2023 23:43:34 -0500 Subject: [PATCH 07/24] gh-95299: Stop installing setuptools as a part of ensurepip and venv (#101039) Remove the bundled setuptools wheel from ensurepip, and stop installing setuptools in environments created by venv. Co-Authored-by: Hugo van Kemenade Co-authored-by: C.A.M. Gerlach Co-authored-by: Oleg Iarygin --- .github/workflows/verify-ensurepip-wheels.yml | 4 +- Doc/library/venv.rst | 7 +++- Doc/using/venv-create.inc | 7 +++- Doc/whatsnew/3.12.rst | 18 +++++++++ Lib/ensurepip/__init__.py | 16 ++++---- .../setuptools-65.5.0-py3-none-any.whl | Bin 1232695 -> 0 bytes Lib/test/test_ensurepip.py | 35 ++++++------------ Lib/test/test_venv.py | 2 - Lib/venv/__init__.py | 4 +- Mac/BuildScript/scripts/postflight.ensurepip | 8 ++-- Mac/Makefile.in | 1 - ...3-01-14-17-54-56.gh-issue-95299.vUhpKz.rst | 1 + Tools/build/verify_ensurepip_wheels.py | 2 +- 13 files changed, 57 insertions(+), 48 deletions(-) delete mode 100644 Lib/ensurepip/_bundled/setuptools-65.5.0-py3-none-any.whl create mode 100644 Misc/NEWS.d/next/Library/2023-01-14-17-54-56.gh-issue-95299.vUhpKz.rst diff --git a/.github/workflows/verify-ensurepip-wheels.yml b/.github/workflows/verify-ensurepip-wheels.yml index d4a2cb6846c1cb..17d841f1f1c54a 100644 --- a/.github/workflows/verify-ensurepip-wheels.yml +++ b/.github/workflows/verify-ensurepip-wheels.yml @@ -1,4 +1,4 @@ -name: Verify bundled pip and setuptools +name: Verify bundled wheels on: workflow_dispatch: @@ -29,5 +29,5 @@ jobs: - uses: actions/setup-python@v4 with: python-version: '3' - - name: Compare checksums of bundled pip and setuptools to ones published on PyPI + - name: Compare checksum of bundled wheels to the ones published on PyPI run: ./Tools/build/verify_ensurepip_wheels.py diff --git a/Doc/library/venv.rst b/Doc/library/venv.rst index 240ab139838db9..52bf99e5bb0f67 100644 --- a/Doc/library/venv.rst +++ b/Doc/library/venv.rst @@ -284,11 +284,14 @@ creation according to their needs, the :class:`EnvBuilder` class. .. method:: upgrade_dependencies(context) - Upgrades the core venv dependency packages (currently ``pip`` and - ``setuptools``) in the environment. This is done by shelling out to the + Upgrades the core venv dependency packages (currently ``pip``) + in the environment. This is done by shelling out to the ``pip`` executable in the environment. .. versionadded:: 3.9 + .. versionchanged:: 3.12 + + ``setuptools`` is no longer a core venv dependency. .. method:: post_setup(context) diff --git a/Doc/using/venv-create.inc b/Doc/using/venv-create.inc index 43ee6b7807d57e..2fc90126482268 100644 --- a/Doc/using/venv-create.inc +++ b/Doc/using/venv-create.inc @@ -61,12 +61,16 @@ The command, if run with ``-h``, will show the available options:: environment (pip is bootstrapped by default) --prompt PROMPT Provides an alternative prompt prefix for this environment. - --upgrade-deps Upgrade core dependencies: pip setuptools to the + --upgrade-deps Upgrade core dependencies (pip) to the latest version in PyPI Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin directory. +.. versionchanged:: 3.12 + + ``setuptools`` is no longer a core venv dependency. + .. versionchanged:: 3.9 Add ``--upgrade-deps`` option to upgrade pip + setuptools to the latest on PyPI @@ -104,4 +108,3 @@ invoked to bootstrap ``pip`` into the virtual environment. Multiple paths can be given to ``venv``, in which case an identical virtual environment will be created, according to the given options, at each provided path. - diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst index 2a371ebf55a11f..bd95bfeea80c71 100644 --- a/Doc/whatsnew/3.12.rst +++ b/Doc/whatsnew/3.12.rst @@ -731,6 +731,24 @@ Removed project can be installed: it still provides ``distutils``. (Contributed by Victor Stinner in :gh:`92584`.) +* Remove the bundled setuptools wheel from :mod:`ensurepip`, + and stop installing setuptools in environments created by :mod:`venv`. + + ``pip (>= 22.1)`` does not require setuptools to be installed in the + environment. ``setuptools``-based (and ``distutils``-based) packages + can still be used with ``pip install``, since pip will provide + ``setuptools`` in the build environment it uses for building a + package. + + ``easy_install``, ``pkg_resources``, ``setuptools`` and ``distutils`` + are no longer provided by default in environments created with + ``venv`` or bootstrapped with ``ensurepip``, since they are part of + the ``setuptools`` package. For projects relying on these at runtime, + the ``setuptools`` project should be declared as a dependency and + installed separately (typically, using pip). + + (Contributed by Pradyun Gedam in :gh:`95299`.) + * Removed many old deprecated :mod:`unittest` features: - A number of :class:`~unittest.TestCase` method aliases: diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py index 00e77749e25e77..69b23de9e05025 100644 --- a/Lib/ensurepip/__init__.py +++ b/Lib/ensurepip/__init__.py @@ -9,11 +9,9 @@ __all__ = ["version", "bootstrap"] -_PACKAGE_NAMES = ('setuptools', 'pip') -_SETUPTOOLS_VERSION = "65.5.0" +_PACKAGE_NAMES = ('pip',) _PIP_VERSION = "23.0.1" _PROJECTS = [ - ("setuptools", _SETUPTOOLS_VERSION, "py3"), ("pip", _PIP_VERSION, "py3"), ] @@ -153,17 +151,17 @@ def _bootstrap(*, root=None, upgrade=False, user=False, _disable_pip_configuration_settings() - # By default, installing pip and setuptools installs all of the + # By default, installing pip installs all of the # following scripts (X.Y == running Python version): # - # pip, pipX, pipX.Y, easy_install, easy_install-X.Y + # pip, pipX, pipX.Y # # pip 1.5+ allows ensurepip to request that some of those be left out if altinstall: - # omit pip, pipX and easy_install + # omit pip, pipX os.environ["ENSUREPIP_OPTIONS"] = "altinstall" elif not default_pip: - # omit pip and easy_install + # omit pip os.environ["ENSUREPIP_OPTIONS"] = "install" with tempfile.TemporaryDirectory() as tmpdir: @@ -271,14 +269,14 @@ def _main(argv=None): action="store_true", default=False, help=("Make an alternate install, installing only the X.Y versioned " - "scripts (Default: pipX, pipX.Y, easy_install-X.Y)."), + "scripts (Default: pipX, pipX.Y)."), ) parser.add_argument( "--default-pip", action="store_true", default=False, help=("Make a default pip install, installing the unqualified pip " - "and easy_install in addition to the versioned scripts."), + "in addition to the versioned scripts."), ) args = parser.parse_args(argv) diff --git a/Lib/ensurepip/_bundled/setuptools-65.5.0-py3-none-any.whl b/Lib/ensurepip/_bundled/setuptools-65.5.0-py3-none-any.whl deleted file mode 100644 index 123a13e2c6b2543f83a7f0040ad153f8de633558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1232695 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νS>c$rrefWjz=!<){VkfOx8%cuIi8jsPR1A|c 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�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
^tH2Ug<1s)N#|+e&BgL(`0p^&_;QH( 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

9~+Lnpy3q;M4UoI3MRmuT{PP(~#T* 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%0A*gYMV|TW)s@^IQ^H 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

ipvPTcR9d$(1o4+b>O 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

BXK^;`2rp%} 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 H&vpL;_cN&o diff --git a/Lib/test/test_ensurepip.py b/Lib/test/test_ensurepip.py index bfca0cd7fbe483..69ab2a4feaa938 100644 --- a/Lib/test/test_ensurepip.py +++ b/Lib/test/test_ensurepip.py @@ -20,7 +20,6 @@ def test_version(self): # Test version() with tempfile.TemporaryDirectory() as tmpdir: self.touch(tmpdir, "pip-1.2.3b1-py2.py3-none-any.whl") - self.touch(tmpdir, "setuptools-49.1.3-py3-none-any.whl") with (unittest.mock.patch.object(ensurepip, '_PACKAGES', None), unittest.mock.patch.object(ensurepip, '_WHEEL_PKG_DIR', tmpdir)): self.assertEqual(ensurepip.version(), '1.2.3b1') @@ -36,15 +35,12 @@ def test_get_packages_no_dir(self): # use bundled wheel packages self.assertIsNotNone(packages['pip'].wheel_name) - self.assertIsNotNone(packages['setuptools'].wheel_name) def test_get_packages_with_dir(self): # Test _get_packages() with a wheel package directory - setuptools_filename = "setuptools-49.1.3-py3-none-any.whl" pip_filename = "pip-20.2.2-py2.py3-none-any.whl" with tempfile.TemporaryDirectory() as tmpdir: - self.touch(tmpdir, setuptools_filename) self.touch(tmpdir, pip_filename) # not used, make sure that it's ignored self.touch(tmpdir, "wheel-0.34.2-py2.py3-none-any.whl") @@ -53,15 +49,12 @@ def test_get_packages_with_dir(self): unittest.mock.patch.object(ensurepip, '_WHEEL_PKG_DIR', tmpdir)): packages = ensurepip._get_packages() - self.assertEqual(packages['setuptools'].version, '49.1.3') - self.assertEqual(packages['setuptools'].wheel_path, - os.path.join(tmpdir, setuptools_filename)) self.assertEqual(packages['pip'].version, '20.2.2') self.assertEqual(packages['pip'].wheel_path, os.path.join(tmpdir, pip_filename)) # wheel package is ignored - self.assertEqual(sorted(packages), ['pip', 'setuptools']) + self.assertEqual(sorted(packages), ['pip']) class EnsurepipMixin: @@ -92,13 +85,13 @@ def test_basic_bootstrapping(self): self.run_pip.assert_called_once_with( [ "install", "--no-cache-dir", "--no-index", "--find-links", - unittest.mock.ANY, "setuptools", "pip", + unittest.mock.ANY, "pip", ], unittest.mock.ANY, ) additional_paths = self.run_pip.call_args[0][1] - self.assertEqual(len(additional_paths), 2) + self.assertEqual(len(additional_paths), 1) def test_bootstrapping_with_root(self): ensurepip.bootstrap(root="/foo/bar/") @@ -107,7 +100,7 @@ def test_bootstrapping_with_root(self): [ "install", "--no-cache-dir", "--no-index", "--find-links", unittest.mock.ANY, "--root", "/foo/bar/", - "setuptools", "pip", + "pip", ], unittest.mock.ANY, ) @@ -118,7 +111,7 @@ def test_bootstrapping_with_user(self): self.run_pip.assert_called_once_with( [ "install", "--no-cache-dir", "--no-index", "--find-links", - unittest.mock.ANY, "--user", "setuptools", "pip", + unittest.mock.ANY, "--user", "pip", ], unittest.mock.ANY, ) @@ -129,7 +122,7 @@ def test_bootstrapping_with_upgrade(self): self.run_pip.assert_called_once_with( [ "install", "--no-cache-dir", "--no-index", "--find-links", - unittest.mock.ANY, "--upgrade", "setuptools", "pip", + unittest.mock.ANY, "--upgrade", "pip", ], unittest.mock.ANY, ) @@ -140,7 +133,7 @@ def test_bootstrapping_with_verbosity_1(self): self.run_pip.assert_called_once_with( [ "install", "--no-cache-dir", "--no-index", "--find-links", - unittest.mock.ANY, "-v", "setuptools", "pip", + unittest.mock.ANY, "-v", "pip", ], unittest.mock.ANY, ) @@ -151,7 +144,7 @@ def test_bootstrapping_with_verbosity_2(self): self.run_pip.assert_called_once_with( [ "install", "--no-cache-dir", "--no-index", "--find-links", - unittest.mock.ANY, "-vv", "setuptools", "pip", + unittest.mock.ANY, "-vv", "pip", ], unittest.mock.ANY, ) @@ -162,7 +155,7 @@ def test_bootstrapping_with_verbosity_3(self): self.run_pip.assert_called_once_with( [ "install", "--no-cache-dir", "--no-index", "--find-links", - unittest.mock.ANY, "-vvv", "setuptools", "pip", + unittest.mock.ANY, "-vvv", "pip", ], unittest.mock.ANY, ) @@ -239,7 +232,6 @@ def test_uninstall(self): self.run_pip.assert_called_once_with( [ "uninstall", "-y", "--disable-pip-version-check", "pip", - "setuptools", ] ) @@ -250,7 +242,6 @@ def test_uninstall_with_verbosity_1(self): self.run_pip.assert_called_once_with( [ "uninstall", "-y", "--disable-pip-version-check", "-v", "pip", - "setuptools", ] ) @@ -261,7 +252,6 @@ def test_uninstall_with_verbosity_2(self): self.run_pip.assert_called_once_with( [ "uninstall", "-y", "--disable-pip-version-check", "-vv", "pip", - "setuptools", ] ) @@ -272,7 +262,7 @@ def test_uninstall_with_verbosity_3(self): self.run_pip.assert_called_once_with( [ "uninstall", "-y", "--disable-pip-version-check", "-vvv", - "pip", "setuptools", + "pip" ] ) @@ -312,13 +302,13 @@ def test_basic_bootstrapping(self): self.run_pip.assert_called_once_with( [ "install", "--no-cache-dir", "--no-index", "--find-links", - unittest.mock.ANY, "setuptools", "pip", + unittest.mock.ANY, "pip", ], unittest.mock.ANY, ) additional_paths = self.run_pip.call_args[0][1] - self.assertEqual(len(additional_paths), 2) + self.assertEqual(len(additional_paths), 1) self.assertEqual(exit_code, 0) def test_bootstrapping_error_code(self): @@ -344,7 +334,6 @@ def test_basic_uninstall(self): self.run_pip.assert_called_once_with( [ "uninstall", "-y", "--disable-pip-version-check", "pip", - "setuptools", ] ) diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 7cccbe84f4ebfa..333b97688af5b6 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -227,7 +227,6 @@ def pip_cmd_checker(cmd, **kwargs): 'install', '--upgrade', 'pip', - 'setuptools' ] ) @@ -745,7 +744,6 @@ def do_test_with_pip(self, system_site_packages): # future pip versions, this test can likely be relaxed further. out = out.decode("latin-1") # Force to text, prevent decoding errors self.assertIn("Successfully uninstalled pip", out) - self.assertIn("Successfully uninstalled setuptools", out) # Check pip is now gone from the virtual environment. This only # applies in the system_site_packages=False case, because in the # other case, pip may still be available in the system site-packages diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py index 2f87c62ccba866..2173c9b13e5cf7 100644 --- a/Lib/venv/__init__.py +++ b/Lib/venv/__init__.py @@ -13,7 +13,7 @@ import types -CORE_VENV_DEPS = ('pip', 'setuptools') +CORE_VENV_DEPS = ('pip',) logger = logging.getLogger(__name__) @@ -523,7 +523,7 @@ def main(args=None): 'this environment.') parser.add_argument('--upgrade-deps', default=False, action='store_true', dest='upgrade_deps', - help=f'Upgrade core dependencies: {", ".join(CORE_VENV_DEPS)} ' + help=f'Upgrade core dependencies ({", ".join(CORE_VENV_DEPS)}) ' 'to the latest version in PyPI') options = parser.parse_args(args) if options.upgrade and options.clear: diff --git a/Mac/BuildScript/scripts/postflight.ensurepip b/Mac/BuildScript/scripts/postflight.ensurepip index 36d05945b6fd90..ce3c6c1c2bf9e6 100755 --- a/Mac/BuildScript/scripts/postflight.ensurepip +++ b/Mac/BuildScript/scripts/postflight.ensurepip @@ -56,19 +56,19 @@ if [ -d /usr/local/bin ] ; then cd /usr/local/bin - # Create pipx.y and easy_install-x.y links if /usr/local/bin/pythonx.y + # Create pipx.y links if /usr/local/bin/pythonx.y # is linked to this framework version install_links_if_our_fw "python${PYVER}" \ - "pip${PYVER}" "easy_install-${PYVER}" + "pip${PYVER}" # Create pipx link if /usr/local/bin/pythonx is linked to this version install_links_if_our_fw "python${PYMAJOR}" \ "pip${PYMAJOR}" - # Create pip and easy_install link if /usr/local/bin/python + # Create pip link if /usr/local/bin/python # is linked to this version install_links_if_our_fw "python" \ - "pip" "easy_install" + "pip" ) fi exit 0 diff --git a/Mac/Makefile.in b/Mac/Makefile.in index f9691288414538..69ab4198988570 100644 --- a/Mac/Makefile.in +++ b/Mac/Makefile.in @@ -166,7 +166,6 @@ altinstallunixtools: -if test "x$(ENSUREPIP)" != "xno" ; then \ cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ for fn in \ - easy_install-$(VERSION) \ pip$(VERSION) \ ; \ do \ diff --git a/Misc/NEWS.d/next/Library/2023-01-14-17-54-56.gh-issue-95299.vUhpKz.rst b/Misc/NEWS.d/next/Library/2023-01-14-17-54-56.gh-issue-95299.vUhpKz.rst new file mode 100644 index 00000000000000..29c30848e09a83 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-01-14-17-54-56.gh-issue-95299.vUhpKz.rst @@ -0,0 +1 @@ +Remove the bundled setuptools wheel from ``ensurepip``, and stop installing setuptools in environments created by ``venv``. diff --git a/Tools/build/verify_ensurepip_wheels.py b/Tools/build/verify_ensurepip_wheels.py index 044d1fd6b3cf2d..09fd5d9e3103ac 100755 --- a/Tools/build/verify_ensurepip_wheels.py +++ b/Tools/build/verify_ensurepip_wheels.py @@ -14,7 +14,7 @@ from pathlib import Path from urllib.request import urlopen -PACKAGE_NAMES = ("pip", "setuptools") +PACKAGE_NAMES = ("pip",) ENSURE_PIP_ROOT = Path(__file__).parent.parent.parent / "Lib/ensurepip" WHEEL_DIR = ENSURE_PIP_ROOT / "_bundled" ENSURE_PIP_INIT_PY_TEXT = (ENSURE_PIP_ROOT / "__init__.py").read_text(encoding="utf-8") From c3d015ce62f791e703bfcabb0907cfeefac768a9 Mon Sep 17 00:00:00 2001 From: yuki Date: Tue, 18 Apr 2023 20:18:53 +0900 Subject: [PATCH 08/24] gh-101100: Fix broken reference `__format__` in `string.rst` (#103531) --- Doc/library/string.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/library/string.rst b/Doc/library/string.rst index f55074cc582718..26b3f5000634f5 100644 --- a/Doc/library/string.rst +++ b/Doc/library/string.rst @@ -254,10 +254,10 @@ Some simple format string examples:: "Units destroyed: {players[0]}" # First element of keyword argument 'players'. The *conversion* field causes a type coercion before formatting. Normally, the -job of formatting a value is done by the :meth:`__format__` method of the value +job of formatting a value is done by the :meth:`~object.__format__` method of the value itself. However, in some cases it is desirable to force a type to be formatted as a string, overriding its own definition of formatting. By converting the -value to a string before calling :meth:`__format__`, the normal formatting logic +value to a string before calling :meth:`~object.__format__`, the normal formatting logic is bypassed. Three conversion flags are currently supported: ``'!s'`` which calls :func:`str` From 4e04393b2f64f9e44aefa436cbdac42db98d4ef0 Mon Sep 17 00:00:00 2001 From: zyckk4 <100814967+zyckk4@users.noreply.github.com> Date: Tue, 18 Apr 2023 19:21:26 +0800 Subject: [PATCH 09/24] [Doc] Fix a typo in optparse.rst (#103504) --- Doc/library/optparse.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/optparse.rst b/Doc/library/optparse.rst index 3e29fed0175e04..468c3efbe01148 100644 --- a/Doc/library/optparse.rst +++ b/Doc/library/optparse.rst @@ -2027,7 +2027,7 @@ Features of note: values.ensure_value(attr, value) If the ``attr`` attribute of ``values`` doesn't exist or is ``None``, then - ensure_value() first sets it to ``value``, and then returns 'value. This is + ensure_value() first sets it to ``value``, and then returns ``value``. This is very handy for actions like ``"extend"``, ``"append"``, and ``"count"``, all of which accumulate data in a variable and expect that variable to be of a certain type (a list for the first two, an integer for the latter). Using From 78cac520c34b133ba32665e601adbc794282f4b7 Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Tue, 18 Apr 2023 17:47:08 +0100 Subject: [PATCH 10/24] gh-95299: Remove lingering setuptools reference in installer scripts (GH-103613) --- PC/layout/support/pip.py | 1 - 1 file changed, 1 deletion(-) diff --git a/PC/layout/support/pip.py b/PC/layout/support/pip.py index c54acb250a252e..0a6582acf348a3 100644 --- a/PC/layout/support/pip.py +++ b/PC/layout/support/pip.py @@ -67,7 +67,6 @@ def extract_pip_files(ns): "--no-color", "install", "pip", - "setuptools", "--upgrade", "--target", str(dest), From 07804ce24c3103ee1bb141af31b9a1a0f92f5e43 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Tue, 18 Apr 2023 20:41:14 +0300 Subject: [PATCH 11/24] GH-100530: Change the error message for non-class class patterns (GH-103576) --- .../2023-04-16-14-38-39.gh-issue-100530.OR6-sn.rst | 1 + Python/ceval.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2023-04-16-14-38-39.gh-issue-100530.OR6-sn.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-04-16-14-38-39.gh-issue-100530.OR6-sn.rst b/Misc/NEWS.d/next/Core and Builtins/2023-04-16-14-38-39.gh-issue-100530.OR6-sn.rst new file mode 100644 index 00000000000000..5b1bcc4a680fc3 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2023-04-16-14-38-39.gh-issue-100530.OR6-sn.rst @@ -0,0 +1 @@ +Clarify the error message raised when the called part of a class pattern isn't actually a class. diff --git a/Python/ceval.c b/Python/ceval.c index 8c43e3d89c2c2a..d8495da81e94ec 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -416,7 +416,7 @@ match_class(PyThreadState *tstate, PyObject *subject, PyObject *type, Py_ssize_t nargs, PyObject *kwargs) { if (!PyType_Check(type)) { - const char *e = "called match pattern must be a type"; + const char *e = "called match pattern must be a class"; _PyErr_Format(tstate, PyExc_TypeError, e); return NULL; } From 700ec657c80e78fb299963ffaa684c859ddb8f87 Mon Sep 17 00:00:00 2001 From: Ethan Furman Date: Tue, 18 Apr 2023 16:19:23 -0700 Subject: [PATCH 12/24] gh-103596: [Enum] do not shadow mixed-in methods/attributes (GH-103600) For example: class Book(StrEnum): title = auto() author = auto() desc = auto() Book.author.desc is Book.desc but Book.author.title() == 'Author' is commonly expected. Using upper-case member names avoids this confusion and possible performance impacts. Co-authored-by: samypr100 <3933065+samypr100@users.noreply.github.com> --- Doc/howto/enum.rst | 14 ++- Doc/library/enum.rst | 7 +- Lib/enum.py | 86 +++++++++++-------- Lib/test/test_enum.py | 17 ++++ ...-04-17-14-47-28.gh-issue-103596.ME1y3_.rst | 2 + 5 files changed, 85 insertions(+), 41 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2023-04-17-14-47-28.gh-issue-103596.ME1y3_.rst diff --git a/Doc/howto/enum.rst b/Doc/howto/enum.rst index 56391a026cf889..68b75c529e92c7 100644 --- a/Doc/howto/enum.rst +++ b/Doc/howto/enum.rst @@ -36,8 +36,10 @@ inherits from :class:`Enum` itself. .. note:: Case of Enum Members - Because Enums are used to represent constants we recommend using - UPPER_CASE names for members, and will be using that style in our examples. + Because Enums are used to represent constants, and to help avoid issues + with name clashes between mixin-class methods/attributes and enum names, + we strongly recommend using UPPER_CASE names for members, and will be using + that style in our examples. Depending on the nature of the enum a member's value may or may not be important, but either way that value can be used to get the corresponding @@ -490,6 +492,10 @@ the :meth:`~Enum.__repr__` omits the inherited class' name. For example:: Use the :func:`!dataclass` argument ``repr=False`` to use the standard :func:`repr`. +.. versionchanged:: 3.12 + Only the dataclass fields are shown in the value area, not the dataclass' + name. + Pickling -------- @@ -992,7 +998,9 @@ but remain normal attributes. Enum members are instances of their enum class, and are normally accessed as ``EnumClass.member``. In certain situations, such as writing custom enum behavior, being able to access one member directly from another is useful, -and is supported. +and is supported; however, in order to avoid name clashes between member names +and attributes/methods from mixed-in classes, upper-case names are strongly +recommended. .. versionchanged:: 3.5 diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 07acf9da33e275..582e06261afd72 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -119,7 +119,8 @@ Module Contents :func:`~enum.property` Allows :class:`Enum` members to have attributes without conflicting with - member names. + member names. The ``value`` and ``name`` attributes are implemented this + way. :func:`unique` @@ -169,7 +170,7 @@ Data Types final *enum*, as well as creating the enum members, properly handling duplicates, providing iteration over the enum class, etc. - .. method:: EnumType.__call__(cls, value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None) + .. method:: EnumType.__call__(cls, value, names=None, \*, module=None, qualname=None, type=None, start=1, boundary=None) This method is called in two different ways: @@ -317,7 +318,7 @@ Data Types >>> PowersOfThree.SECOND.value 9 - .. method:: Enum.__init_subclass__(cls, **kwds) + .. method:: Enum.__init_subclass__(cls, \**kwds) A *classmethod* that is used to further configure subsequent subclasses. By default, does nothing. diff --git a/Lib/enum.py b/Lib/enum.py index e9f224a303d3e5..6e497f7ef6a7de 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -190,6 +190,8 @@ class property(DynamicClassAttribute): """ member = None + _attr_type = None + _cls_type = None def __get__(self, instance, ownerclass=None): if instance is None: @@ -199,33 +201,36 @@ def __get__(self, instance, ownerclass=None): raise AttributeError( '%r has no attribute %r' % (ownerclass, self.name) ) - else: - if self.fget is None: - # look for a member by this name. - try: - return ownerclass._member_map_[self.name] - except KeyError: - raise AttributeError( - '%r has no attribute %r' % (ownerclass, self.name) - ) from None - else: - return self.fget(instance) + if self.fget is not None: + # use previous enum.property + return self.fget(instance) + elif self._attr_type == 'attr': + # look up previous attibute + return getattr(self._cls_type, self.name) + elif self._attr_type == 'desc': + # use previous descriptor + return getattr(instance._value_, self.name) + # look for a member by this name. + try: + return ownerclass._member_map_[self.name] + except KeyError: + raise AttributeError( + '%r has no attribute %r' % (ownerclass, self.name) + ) from None def __set__(self, instance, value): - if self.fset is None: - raise AttributeError( - " cannot set attribute %r" % (self.clsname, self.name) - ) - else: + if self.fset is not None: return self.fset(instance, value) + raise AttributeError( + " cannot set attribute %r" % (self.clsname, self.name) + ) def __delete__(self, instance): - if self.fdel is None: - raise AttributeError( - " cannot delete attribute %r" % (self.clsname, self.name) - ) - else: + if self.fdel is not None: return self.fdel(instance) + raise AttributeError( + " cannot delete attribute %r" % (self.clsname, self.name) + ) def __set_name__(self, ownerclass, name): self.name = name @@ -313,27 +318,38 @@ def __set_name__(self, enum_class, member_name): enum_class._member_names_.append(member_name) # if necessary, get redirect in place and then add it to _member_map_ found_descriptor = None + descriptor_type = None + class_type = None for base in enum_class.__mro__[1:]: - descriptor = base.__dict__.get(member_name) - if descriptor is not None: - if isinstance(descriptor, (property, DynamicClassAttribute)): - found_descriptor = descriptor + attr = base.__dict__.get(member_name) + if attr is not None: + if isinstance(attr, (property, DynamicClassAttribute)): + found_descriptor = attr + class_type = base + descriptor_type = 'enum' break - elif ( - hasattr(descriptor, 'fget') and - hasattr(descriptor, 'fset') and - hasattr(descriptor, 'fdel') - ): - found_descriptor = descriptor + elif _is_descriptor(attr): + found_descriptor = attr + descriptor_type = descriptor_type or 'desc' + class_type = class_type or base continue + else: + descriptor_type = 'attr' + class_type = base if found_descriptor: redirect = property() redirect.member = enum_member redirect.__set_name__(enum_class, member_name) - # earlier descriptor found; copy fget, fset, fdel to this one. - redirect.fget = found_descriptor.fget - redirect.fset = found_descriptor.fset - redirect.fdel = found_descriptor.fdel + if descriptor_type in ('enum','desc'): + # earlier descriptor found; copy fget, fset, fdel to this one. + redirect.fget = getattr(found_descriptor, 'fget', None) + redirect._get = getattr(found_descriptor, '__get__', None) + redirect.fset = getattr(found_descriptor, 'fset', None) + redirect._set = getattr(found_descriptor, '__set__', None) + redirect.fdel = getattr(found_descriptor, 'fdel', None) + redirect._del = getattr(found_descriptor, '__delete__', None) + redirect._attr_type = descriptor_type + redirect._cls_type = class_type setattr(enum_class, member_name, redirect) else: setattr(enum_class, member_name, enum_member) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index e9dfcf8586a823..fb7a016c9007f8 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -819,10 +819,27 @@ class TestPlainFlag(_EnumTests, _PlainOutputTests, _FlagTests, unittest.TestCase class TestIntEnum(_EnumTests, _MinimalOutputTests, unittest.TestCase): enum_type = IntEnum + # + def test_shadowed_attr(self): + class Number(IntEnum): + divisor = 1 + numerator = 2 + # + self.assertEqual(Number.divisor.numerator, 1) + self.assertIs(Number.numerator.divisor, Number.divisor) class TestStrEnum(_EnumTests, _MinimalOutputTests, unittest.TestCase): enum_type = StrEnum + # + def test_shadowed_attr(self): + class Book(StrEnum): + author = 'author' + title = 'title' + # + self.assertEqual(Book.author.title(), 'Author') + self.assertEqual(Book.title.title(), 'Title') + self.assertIs(Book.title.author, Book.author) class TestIntFlag(_EnumTests, _MinimalOutputTests, _FlagTests, unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2023-04-17-14-47-28.gh-issue-103596.ME1y3_.rst b/Misc/NEWS.d/next/Library/2023-04-17-14-47-28.gh-issue-103596.ME1y3_.rst new file mode 100644 index 00000000000000..2fa27e60b58efe --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-04-17-14-47-28.gh-issue-103596.ME1y3_.rst @@ -0,0 +1,2 @@ +Attributes/methods are no longer shadowed by same-named enum members, +although they may be shadowed by enum.property's. From ffdbfe197694cb6f2509b94859ccf3534daa6fd1 Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Tue, 18 Apr 2023 20:30:54 -0600 Subject: [PATCH 13/24] gh-103617: Fix compiler warning in _iomodule.c (#103618) --- Modules/_io/_iomodule.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index 5644cc05c45800..7f4f1d939fb7e9 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -616,8 +616,9 @@ iomodule_clear(PyObject *mod) { } static void -iomodule_free(PyObject *mod) { - iomodule_clear(mod); +iomodule_free(void *mod) +{ + (void)iomodule_clear((PyObject *)mod); } From e989e0b62aba9b487faf24d8694d28022d35a776 Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Tue, 18 Apr 2023 21:08:16 -0600 Subject: [PATCH 14/24] gh-103583: Always pass multibyte codec structs as const (#103588) --- Modules/cjkcodecs/multibytecodec.c | 10 +++++----- Modules/cjkcodecs/multibytecodec.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 55778cdb59e4dc..c42daefbd32813 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -67,7 +67,7 @@ typedef struct { static char *incnewkwarglist[] = {"errors", NULL}; static char *streamkwarglist[] = {"stream", "errors", NULL}; -static PyObject *multibytecodec_encode(MultibyteCodec *, +static PyObject *multibytecodec_encode(const MultibyteCodec *, MultibyteCodec_State *, PyObject *, Py_ssize_t *, PyObject *, int); @@ -221,7 +221,7 @@ expand_encodebuffer(MultibyteEncodeBuffer *buf, Py_ssize_t esize) */ static int -multibytecodec_encerror(MultibyteCodec *codec, +multibytecodec_encerror(const MultibyteCodec *codec, MultibyteCodec_State *state, MultibyteEncodeBuffer *buf, PyObject *errors, Py_ssize_t e) @@ -375,7 +375,7 @@ multibytecodec_encerror(MultibyteCodec *codec, } static int -multibytecodec_decerror(MultibyteCodec *codec, +multibytecodec_decerror(const MultibyteCodec *codec, MultibyteCodec_State *state, MultibyteDecodeBuffer *buf, PyObject *errors, Py_ssize_t e) @@ -479,7 +479,7 @@ multibytecodec_decerror(MultibyteCodec *codec, } static PyObject * -multibytecodec_encode(MultibyteCodec *codec, +multibytecodec_encode(const MultibyteCodec *codec, MultibyteCodec_State *state, PyObject *text, Py_ssize_t *inpos_t, PyObject *errors, int flags) @@ -1953,7 +1953,7 @@ _multibytecodec___create_codec(PyObject *module, PyObject *arg) /*[clinic end generated code: output=cfa3dce8260e809d input=6840b2a6b183fcfa]*/ { MultibyteCodecObject *self; - MultibyteCodec *codec; + const MultibyteCodec *codec; if (!PyCapsule_IsValid(arg, PyMultibyteCodec_CAPSULE_NAME)) { PyErr_SetString(PyExc_ValueError, "argument type invalid"); diff --git a/Modules/cjkcodecs/multibytecodec.h b/Modules/cjkcodecs/multibytecodec.h index 69404ba96aa1f0..a6ab9cbe61a266 100644 --- a/Modules/cjkcodecs/multibytecodec.h +++ b/Modules/cjkcodecs/multibytecodec.h @@ -62,14 +62,14 @@ typedef struct { typedef struct { PyObject_HEAD - MultibyteCodec *codec; + const MultibyteCodec *codec; } MultibyteCodecObject; #define MultibyteCodec_Check(state, op) Py_IS_TYPE((op), state->multibytecodec_type) #define _MultibyteStatefulCodec_HEAD \ PyObject_HEAD \ - MultibyteCodec *codec; \ + const MultibyteCodec *codec; \ MultibyteCodec_State state; \ PyObject *errors; typedef struct { From f4d087964e3deaabc902a155efdf0e7f43f78d52 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Wed, 19 Apr 2023 08:02:48 +0300 Subject: [PATCH 15/24] gh-103582: Remove last references to `argparse.REMAINDER` from docs (#103586) --- Doc/library/argparse.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index ee68ac58d3de75..dd59181a30702e 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -67,7 +67,7 @@ default_ Default value used when an argument is not provided dest_ Specify the attribute name used in the result namespace help_ Help message for an argument metavar_ Alternate display name for the argument as shown in help -nargs_ Number of times the argument can be used :class:`int`, ``'?'``, ``'*'``, ``'+'``, or ``argparse.REMAINDER`` +nargs_ Number of times the argument can be used :class:`int`, ``'?'``, ``'*'``, or ``'+'`` required_ Indicate whether an argument is required or optional ``True`` or ``False`` type_ Automatically convert an argument to the given type :class:`int`, :class:`float`, ``argparse.FileType('w')``, or callable function ====================== =========================================================== ========================================================================================================================== @@ -2218,7 +2218,7 @@ support this parsing style. These parsers do not support all the argparse features, and will raise exceptions if unsupported features are used. In particular, subparsers, -``argparse.REMAINDER``, and mutually exclusive groups that include both +and mutually exclusive groups that include both optionals and positionals are not supported. The following example shows the difference between From d1e4917e06d5638f1a7fa189d6d63ec9c2a27753 Mon Sep 17 00:00:00 2001 From: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Date: Wed, 19 Apr 2023 06:05:52 +0100 Subject: [PATCH 16/24] gh-102778: IDLE - make sys.last_exc available in Shell after traceback (#103314) --------- Co-authored-by: Terry Jan Reedy --- Lib/idlelib/run.py | 1 + .../next/Library/2023-04-06-16-55-51.gh-issue-102778.BWeAmE.rst | 1 + 2 files changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2023-04-06-16-55-51.gh-issue-102778.BWeAmE.rst diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py index 577c49eb67b20d..04ce615621ee7c 100644 --- a/Lib/idlelib/run.py +++ b/Lib/idlelib/run.py @@ -239,6 +239,7 @@ def print_exception(): efile = sys.stderr typ, val, tb = excinfo = sys.exc_info() sys.last_type, sys.last_value, sys.last_traceback = excinfo + sys.last_exc = val seen = set() def print_exc(typ, exc, tb): diff --git a/Misc/NEWS.d/next/Library/2023-04-06-16-55-51.gh-issue-102778.BWeAmE.rst b/Misc/NEWS.d/next/Library/2023-04-06-16-55-51.gh-issue-102778.BWeAmE.rst new file mode 100644 index 00000000000000..64ae5b5b6d564b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-04-06-16-55-51.gh-issue-102778.BWeAmE.rst @@ -0,0 +1 @@ +Support ``sys.last_exc`` in :mod:`idlelib`. From da2273fec7b1644786b9616592b53b04fdec4024 Mon Sep 17 00:00:00 2001 From: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> Date: Wed, 19 Apr 2023 15:51:53 +0530 Subject: [PATCH 17/24] GH-88342: clarify that `asyncio.as_completed` accepts generators yielding tasks (#103626) --- Doc/library/asyncio-task.rst | 3 +++ Doc/whatsnew/3.12.rst | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index 41d09e1e79705c..b81d89acf7fd88 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -829,6 +829,9 @@ Waiting Primitives Deprecation warning is emitted if not all awaitable objects in the *aws* iterable are Future-like objects and there is no running event loop. + .. versionchanged:: 3.12 + Added support for generators yielding tasks. + Running in Threads ================== diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst index bd95bfeea80c71..b3bb065741d037 100644 --- a/Doc/whatsnew/3.12.rst +++ b/Doc/whatsnew/3.12.rst @@ -250,7 +250,8 @@ asyncio :mod:`asyncio` does not support legacy generator-based coroutines. (Contributed by Kumar Aditya in :gh:`102748`.) -* :func:`asyncio.wait` now accepts generators yielding tasks. +* :func:`asyncio.wait` and :func:`asyncio.as_completed` now accepts generators + yielding tasks. (Contributed by Kumar Aditya in :gh:`78530`.) csv From bd2ed066c855dadbc739e89f9bc32e218dfc904e Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Wed, 19 Apr 2023 08:15:50 -0600 Subject: [PATCH 18/24] gh-83004: Harden msvcrt further (#103420) --- PC/msvcrtmodule.c | 115 +++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 62 deletions(-) diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c index de9a88946aff3e..090254befc934d 100644 --- a/PC/msvcrtmodule.c +++ b/PC/msvcrtmodule.c @@ -564,88 +564,81 @@ static struct PyMethodDef msvcrt_functions[] = { {NULL, NULL} }; -static void -insertint(PyObject *d, char *name, int value) -{ - PyObject *v = PyLong_FromLong((long) value); - if (v == NULL) { - /* Don't bother reporting this error */ - PyErr_Clear(); - } - else { - PyDict_SetItemString(d, name, v); - Py_DECREF(v); - } -} - -static void -insertptr(PyObject *d, char *name, void *value) +static int +insertptr(PyObject *mod, char *name, void *value) { PyObject *v = PyLong_FromVoidPtr(value); if (v == NULL) { - /* Don't bother reporting this error */ - PyErr_Clear(); - } - else { - PyDict_SetItemString(d, name, v); - Py_DECREF(v); + return -1; } + int rc = PyModule_AddObjectRef(mod, name, v); + Py_DECREF(v); + return rc; } +#define INSERTINT(MOD, NAME, VAL) do { \ + if (PyModule_AddIntConstant(MOD, NAME, VAL) < 0) { \ + return -1; \ + } \ +} while (0) + +#define INSERTPTR(MOD, NAME, PTR) do { \ + if (insertptr(MOD, NAME, PTR) < 0) { \ + return -1; \ + } \ +} while (0) + +#define INSERTSTR(MOD, NAME, CONST) do { \ + if (PyModule_AddStringConstant(MOD, NAME, CONST) < 0) { \ + return -1; \ + } \ +} while (0) + static int exec_module(PyObject* m) { - int st; - PyObject *d = PyModule_GetDict(m); // Borrowed ref. - /* constants for the locking() function's mode argument */ - insertint(d, "LK_LOCK", _LK_LOCK); - insertint(d, "LK_NBLCK", _LK_NBLCK); - insertint(d, "LK_NBRLCK", _LK_NBRLCK); - insertint(d, "LK_RLCK", _LK_RLCK); - insertint(d, "LK_UNLCK", _LK_UNLCK); + INSERTINT(m, "LK_LOCK", _LK_LOCK); + INSERTINT(m, "LK_NBLCK", _LK_NBLCK); + INSERTINT(m, "LK_NBRLCK", _LK_NBRLCK); + INSERTINT(m, "LK_RLCK", _LK_RLCK); + INSERTINT(m, "LK_UNLCK", _LK_UNLCK); #ifdef MS_WINDOWS_DESKTOP - insertint(d, "SEM_FAILCRITICALERRORS", SEM_FAILCRITICALERRORS); - insertint(d, "SEM_NOALIGNMENTFAULTEXCEPT", SEM_NOALIGNMENTFAULTEXCEPT); - insertint(d, "SEM_NOGPFAULTERRORBOX", SEM_NOGPFAULTERRORBOX); - insertint(d, "SEM_NOOPENFILEERRORBOX", SEM_NOOPENFILEERRORBOX); + INSERTINT(m, "SEM_FAILCRITICALERRORS", SEM_FAILCRITICALERRORS); + INSERTINT(m, "SEM_NOALIGNMENTFAULTEXCEPT", SEM_NOALIGNMENTFAULTEXCEPT); + INSERTINT(m, "SEM_NOGPFAULTERRORBOX", SEM_NOGPFAULTERRORBOX); + INSERTINT(m, "SEM_NOOPENFILEERRORBOX", SEM_NOOPENFILEERRORBOX); #endif #ifdef _DEBUG - insertint(d, "CRT_WARN", _CRT_WARN); - insertint(d, "CRT_ERROR", _CRT_ERROR); - insertint(d, "CRT_ASSERT", _CRT_ASSERT); - insertint(d, "CRTDBG_MODE_DEBUG", _CRTDBG_MODE_DEBUG); - insertint(d, "CRTDBG_MODE_FILE", _CRTDBG_MODE_FILE); - insertint(d, "CRTDBG_MODE_WNDW", _CRTDBG_MODE_WNDW); - insertint(d, "CRTDBG_REPORT_MODE", _CRTDBG_REPORT_MODE); - insertptr(d, "CRTDBG_FILE_STDERR", _CRTDBG_FILE_STDERR); - insertptr(d, "CRTDBG_FILE_STDOUT", _CRTDBG_FILE_STDOUT); - insertptr(d, "CRTDBG_REPORT_FILE", _CRTDBG_REPORT_FILE); + INSERTINT(m, "CRT_WARN", _CRT_WARN); + INSERTINT(m, "CRT_ERROR", _CRT_ERROR); + INSERTINT(m, "CRT_ASSERT", _CRT_ASSERT); + INSERTINT(m, "CRTDBG_MODE_DEBUG", _CRTDBG_MODE_DEBUG); + INSERTINT(m, "CRTDBG_MODE_FILE", _CRTDBG_MODE_FILE); + INSERTINT(m, "CRTDBG_MODE_WNDW", _CRTDBG_MODE_WNDW); + INSERTINT(m, "CRTDBG_REPORT_MODE", _CRTDBG_REPORT_MODE); + INSERTPTR(m, "CRTDBG_FILE_STDERR", _CRTDBG_FILE_STDERR); + INSERTPTR(m, "CRTDBG_FILE_STDOUT", _CRTDBG_FILE_STDOUT); + INSERTPTR(m, "CRTDBG_REPORT_FILE", _CRTDBG_REPORT_FILE); #endif +#undef INSERTINT +#undef INSERTPTR + /* constants for the crt versions */ #ifdef _VC_ASSEMBLY_PUBLICKEYTOKEN - st = PyModule_AddStringConstant(m, "VC_ASSEMBLY_PUBLICKEYTOKEN", - _VC_ASSEMBLY_PUBLICKEYTOKEN); - if (st < 0) { - return -1; - } + INSERTSTR(m, "VC_ASSEMBLY_PUBLICKEYTOKEN", _VC_ASSEMBLY_PUBLICKEYTOKEN); #endif #ifdef _CRT_ASSEMBLY_VERSION - st = PyModule_AddStringConstant(m, "CRT_ASSEMBLY_VERSION", - _CRT_ASSEMBLY_VERSION); - if (st < 0) { - return -1; - } + INSERTSTR(m, "CRT_ASSEMBLY_VERSION", _CRT_ASSEMBLY_VERSION); #endif #ifdef __LIBRARIES_ASSEMBLY_NAME_PREFIX - st = PyModule_AddStringConstant(m, "LIBRARIES_ASSEMBLY_NAME_PREFIX", - __LIBRARIES_ASSEMBLY_NAME_PREFIX); - if (st < 0) { - return -1; - } + INSERTSTR(m, "LIBRARIES_ASSEMBLY_NAME_PREFIX", + __LIBRARIES_ASSEMBLY_NAME_PREFIX); #endif +#undef INSERTSTR + /* constants for the 2010 crt versions */ #if defined(_VC_CRT_MAJOR_VERSION) && defined (_VC_CRT_MINOR_VERSION) && defined(_VC_CRT_BUILD_VERSION) && defined(_VC_CRT_RBUILD_VERSION) PyObject *version = PyUnicode_FromFormat("%d.%d.%d.%d", @@ -656,14 +649,12 @@ exec_module(PyObject* m) if (version == NULL) { return -1; } - st = PyModule_AddObjectRef(m, "CRT_ASSEMBLY_VERSION", version); + int st = PyModule_AddObjectRef(m, "CRT_ASSEMBLY_VERSION", version); Py_DECREF(version); if (st < 0) { return -1; } #endif - /* make compiler warning quiet if st is unused */ - (void)st; return 0; } From a6b07b5a345f7f54ee9f6d75e81d2fb55971b35c Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Wed, 19 Apr 2023 10:02:17 -0600 Subject: [PATCH 19/24] gh-103583: Add ref. dependency between multibytecodec modules (#103589) --- Modules/cjkcodecs/cjkcodecs.h | 44 ++++++++++++++++++++++++------ Modules/cjkcodecs/multibytecodec.c | 19 ++++++++++--- Modules/cjkcodecs/multibytecodec.h | 9 +++++- 3 files changed, 58 insertions(+), 14 deletions(-) diff --git a/Modules/cjkcodecs/cjkcodecs.h b/Modules/cjkcodecs/cjkcodecs.h index 646a9fd255ce20..1b0355310eddab 100644 --- a/Modules/cjkcodecs/cjkcodecs.h +++ b/Modules/cjkcodecs/cjkcodecs.h @@ -284,18 +284,45 @@ getmultibytecodec(void) return _PyImport_GetModuleAttrString("_multibytecodec", "__create_codec"); } +static void +destroy_codec_capsule(PyObject *capsule) +{ + void *ptr = PyCapsule_GetPointer(capsule, CODEC_CAPSULE); + codec_capsule *data = (codec_capsule *)ptr; + Py_DECREF(data->cjk_module); + PyMem_Free(ptr); +} + +static codec_capsule * +capsulate_codec(PyObject *mod, const MultibyteCodec *codec) +{ + codec_capsule *data = PyMem_Malloc(sizeof(codec_capsule)); + if (data == NULL) { + PyErr_NoMemory(); + return NULL; + } + data->codec = codec; + data->cjk_module = Py_NewRef(mod); + return data; +} + static PyObject * -_getcodec(const MultibyteCodec *codec) +_getcodec(PyObject *self, const MultibyteCodec *codec) { PyObject *cofunc = getmultibytecodec(); if (cofunc == NULL) { return NULL; } - PyObject *codecobj = PyCapsule_New((void *)codec, - PyMultibyteCodec_CAPSULE_NAME, - NULL); + codec_capsule *data = capsulate_codec(self, codec); + if (data == NULL) { + Py_DECREF(cofunc); + return NULL; + } + PyObject *codecobj = PyCapsule_New(data, CODEC_CAPSULE, + destroy_codec_capsule); if (codecobj == NULL) { + PyMem_Free(data); Py_DECREF(cofunc); return NULL; } @@ -323,7 +350,7 @@ getcodec(PyObject *self, PyObject *encoding) for (int i = 0; i < st->num_codecs; i++) { const MultibyteCodec *codec = &st->codec_list[i]; if (strcmp(codec->encoding, enc) == 0) { - return _getcodec(codec); + return _getcodec(self, codec); } } @@ -352,8 +379,7 @@ register_maps(PyObject *module) char mhname[256] = "__map_"; strcpy(mhname + sizeof("__map_") - 1, h->charset); - PyObject *capsule = PyCapsule_New((void *)h, - PyMultibyteCodec_CAPSULE_NAME, NULL); + PyObject *capsule = PyCapsule_New((void *)h, MAP_CAPSULE, NULL); if (capsule == NULL) { return -1; } @@ -417,14 +443,14 @@ importmap(const char *modname, const char *symbol, o = PyObject_GetAttrString(mod, symbol); if (o == NULL) goto errorexit; - else if (!PyCapsule_IsValid(o, PyMultibyteCodec_CAPSULE_NAME)) { + else if (!PyCapsule_IsValid(o, MAP_CAPSULE)) { PyErr_SetString(PyExc_ValueError, "map data must be a Capsule."); goto errorexit; } else { struct dbcs_map *map; - map = PyCapsule_GetPointer(o, PyMultibyteCodec_CAPSULE_NAME); + map = PyCapsule_GetPointer(o, MAP_CAPSULE); if (encmap != NULL) *encmap = map->encmap; if (decmap != NULL) diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index c42daefbd32813..8976ad331aaa2a 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -720,9 +720,17 @@ static struct PyMethodDef multibytecodec_methods[] = { }; static int -multibytecodec_traverse(PyObject *self, visitproc visit, void *arg) +multibytecodec_clear(MultibyteCodecObject *self) +{ + Py_CLEAR(self->cjk_module); + return 0; +} + +static int +multibytecodec_traverse(MultibyteCodecObject *self, visitproc visit, void *arg) { Py_VISIT(Py_TYPE(self)); + Py_VISIT(self->cjk_module); return 0; } @@ -731,6 +739,7 @@ multibytecodec_dealloc(MultibyteCodecObject *self) { PyObject_GC_UnTrack(self); PyTypeObject *tp = Py_TYPE(self); + (void)multibytecodec_clear(self); tp->tp_free(self); Py_DECREF(tp); } @@ -740,6 +749,7 @@ static PyType_Slot multibytecodec_slots[] = { {Py_tp_getattro, PyObject_GenericGetAttr}, {Py_tp_methods, multibytecodec_methods}, {Py_tp_traverse, multibytecodec_traverse}, + {Py_tp_clear, multibytecodec_clear}, {0, NULL}, }; @@ -1953,14 +1963,14 @@ _multibytecodec___create_codec(PyObject *module, PyObject *arg) /*[clinic end generated code: output=cfa3dce8260e809d input=6840b2a6b183fcfa]*/ { MultibyteCodecObject *self; - const MultibyteCodec *codec; - if (!PyCapsule_IsValid(arg, PyMultibyteCodec_CAPSULE_NAME)) { + if (!PyCapsule_IsValid(arg, CODEC_CAPSULE)) { PyErr_SetString(PyExc_ValueError, "argument type invalid"); return NULL; } - codec = PyCapsule_GetPointer(arg, PyMultibyteCodec_CAPSULE_NAME); + codec_capsule *data = PyCapsule_GetPointer(arg, CODEC_CAPSULE); + const MultibyteCodec *codec = data->codec; if (codec->codecinit != NULL && codec->codecinit(codec->config) != 0) return NULL; @@ -1969,6 +1979,7 @@ _multibytecodec___create_codec(PyObject *module, PyObject *arg) if (self == NULL) return NULL; self->codec = codec; + self->cjk_module = Py_NewRef(data->cjk_module); PyObject_GC_Track(self); return (PyObject *)self; diff --git a/Modules/cjkcodecs/multibytecodec.h b/Modules/cjkcodecs/multibytecodec.h index a6ab9cbe61a266..327cb51129d945 100644 --- a/Modules/cjkcodecs/multibytecodec.h +++ b/Modules/cjkcodecs/multibytecodec.h @@ -63,6 +63,7 @@ typedef struct { typedef struct { PyObject_HEAD const MultibyteCodec *codec; + PyObject *cjk_module; } MultibyteCodecObject; #define MultibyteCodec_Check(state, op) Py_IS_TYPE((op), state->multibytecodec_type) @@ -130,7 +131,13 @@ typedef struct { #define MBENC_FLUSH 0x0001 /* encode all characters encodable */ #define MBENC_MAX MBENC_FLUSH -#define PyMultibyteCodec_CAPSULE_NAME "multibytecodec.__map_*" +typedef struct { + const MultibyteCodec *codec; + PyObject *cjk_module; +} codec_capsule; + +#define MAP_CAPSULE "multibytecodec.map" +#define CODEC_CAPSULE "multibytecodec.codec" #ifdef __cplusplus From 1ef61cf71a218c71860ff6aecf0fd51edb8b65dc Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Wed, 19 Apr 2023 17:18:16 +0100 Subject: [PATCH 20/24] gh-102856: Initial implementation of PEP 701 (#102855) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Lysandros Nikolaou Co-authored-by: Batuhan Taskaya Co-authored-by: Marta Gómez Macías Co-authored-by: sunmy2019 <59365878+sunmy2019@users.noreply.github.com> --- Doc/library/token-list.inc | 10 + Grammar/Tokens | 4 + Grammar/python.gram | 54 +- Include/internal/pycore_token.h | 22 +- Lib/test/test_ast.py | 5 - Lib/test/test_cmd_line_script.py | 6 +- Lib/test/test_eof.py | 4 +- Lib/test/test_exceptions.py | 3 +- Lib/test/test_fstring.py | 311 +- Lib/test/test_tokenize.py | 28 +- Lib/test/test_type_comments.py | 2 +- Lib/token.py | 27 +- ...-04-17-16-00-32.gh-issue-102856.UunJ7y.rst | 1 + Parser/action_helpers.c | 539 +- Parser/parser.c | 7846 +++++++++++------ Parser/pegen.c | 2 +- Parser/pegen.h | 18 +- Parser/pegen_errors.c | 16 +- Parser/string_parser.c | 1089 +-- Parser/string_parser.h | 39 +- Parser/token.c | 5 + Parser/tokenizer.c | 489 +- Parser/tokenizer.h | 29 + Programs/test_frozenmain.h | 8 +- Python/Python-tokenize.c | 4 +- Tools/build/generate_token.py | 2 + Tools/peg_generator/pegen/c_generator.py | 1 + 27 files changed, 6425 insertions(+), 4139 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2023-04-17-16-00-32.gh-issue-102856.UunJ7y.rst diff --git a/Doc/library/token-list.inc b/Doc/library/token-list.inc index 2739d5bfc1dfa2..3b345099bf54b5 100644 --- a/Doc/library/token-list.inc +++ b/Doc/library/token-list.inc @@ -201,6 +201,10 @@ Token value for ``":="``. +.. data:: EXCLAMATION + + Token value for ``"!"``. + .. data:: OP .. data:: AWAIT @@ -213,6 +217,12 @@ .. data:: SOFT_KEYWORD +.. data:: FSTRING_START + +.. data:: FSTRING_MIDDLE + +.. data:: FSTRING_END + .. data:: ERRORTOKEN .. data:: N_TOKENS diff --git a/Grammar/Tokens b/Grammar/Tokens index 1f3e3b09913653..096876fdd130f8 100644 --- a/Grammar/Tokens +++ b/Grammar/Tokens @@ -53,6 +53,7 @@ ATEQUAL '@=' RARROW '->' ELLIPSIS '...' COLONEQUAL ':=' +EXCLAMATION '!' OP AWAIT @@ -60,6 +61,9 @@ ASYNC TYPE_IGNORE TYPE_COMMENT SOFT_KEYWORD +FSTRING_START +FSTRING_MIDDLE +FSTRING_END ERRORTOKEN # These aren't used by the C tokenizer but are needed for tokenize.py diff --git a/Grammar/python.gram b/Grammar/python.gram index 2498251293e80e..3a356c65a75195 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -194,7 +194,7 @@ yield_stmt[stmt_ty]: y=yield_expr { _PyAST_Expr(y, EXTRA) } assert_stmt[stmt_ty]: 'assert' a=expression b=[',' z=expression { z }] { _PyAST_Assert(a, b, EXTRA) } -import_stmt[stmt_ty]: +import_stmt[stmt_ty]: | invalid_import | import_name | import_from @@ -415,8 +415,8 @@ try_stmt[stmt_ty]: | invalid_try_stmt | 'try' &&':' b=block f=finally_block { _PyAST_Try(b, NULL, NULL, f, EXTRA) } | 'try' &&':' b=block ex[asdl_excepthandler_seq*]=except_block+ el=[else_block] f=[finally_block] { _PyAST_Try(b, ex, el, f, EXTRA) } - | 'try' &&':' b=block ex[asdl_excepthandler_seq*]=except_star_block+ el=[else_block] f=[finally_block] { - CHECK_VERSION(stmt_ty, 11, "Exception groups are", + | 'try' &&':' b=block ex[asdl_excepthandler_seq*]=except_star_block+ el=[else_block] f=[finally_block] { + CHECK_VERSION(stmt_ty, 11, "Exception groups are", _PyAST_TryStar(b, ex, el, f, EXTRA)) } @@ -807,7 +807,7 @@ atom[expr_ty]: | 'True' { _PyAST_Constant(Py_True, NULL, EXTRA) } | 'False' { _PyAST_Constant(Py_False, NULL, EXTRA) } | 'None' { _PyAST_Constant(Py_None, NULL, EXTRA) } - | &STRING strings + | &(STRING|FSTRING_START) strings | NUMBER | &'(' (tuple | group | genexp) | &'[' (list | listcomp) @@ -877,7 +877,26 @@ lambda_param[arg_ty]: a=NAME { _PyAST_arg(a->v.Name.id, NULL, NULL, EXTRA) } # LITERALS # ======== -strings[expr_ty] (memo): a=STRING+ { _PyPegen_concatenate_strings(p, a) } +fstring_middle[expr_ty]: + | fstring_replacement_field + | t=FSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) } +fstring_replacement_field[expr_ty]: + | '{' a=(yield_expr | star_expressions) debug_expr="="? conversion=[fstring_conversion] format=[fstring_full_format_spec] '}' { + _PyPegen_formatted_value(p, a, debug_expr, conversion, format, EXTRA) + } + | invalid_replacement_field +fstring_conversion[expr_ty]: + | conv_token="!" conv=NAME { _PyPegen_check_fstring_conversion(p, conv_token, conv) } +fstring_full_format_spec[expr_ty]: + | ':' spec=fstring_format_spec* { spec ? _PyAST_JoinedStr((asdl_expr_seq*)spec, EXTRA) : NULL } +fstring_format_spec[expr_ty]: + | t=FSTRING_MIDDLE { _PyPegen_constant_from_token(p, t) } + | fstring_replacement_field +fstring[expr_ty]: + | a=FSTRING_START b=fstring_middle* c=FSTRING_END { _PyPegen_joined_str(p, a, (asdl_expr_seq*)b, c) } + +string[expr_ty]: s[Token*]=STRING { _PyPegen_constant_from_string(p, s) } +strings[expr_ty] (memo): a[asdl_expr_seq*]=(fstring|string)+ { _PyPegen_concatenate_strings(p, a, EXTRA) } list[expr_ty]: | '[' a=[star_named_expressions] ']' { _PyAST_List(a, Load, EXTRA) } @@ -1118,6 +1137,8 @@ invalid_expression: _PyPegen_check_legacy_stmt(p, a) ? NULL : p->tokens[p->mark-1]->level == 0 ? NULL : RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "invalid syntax. Perhaps you forgot a comma?") } | a=disjunction 'if' b=disjunction !('else'|':') { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "expected 'else' after 'if' expression") } + | a='lambda' [lambda_params] b=':' &(FSTRING_MIDDLE | fstring_replacement_field) { + RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "f-string: lambda expressions are not allowed without parentheses") } invalid_named_expression(memo): | a=expression ':=' expression { @@ -1241,7 +1262,7 @@ invalid_group: invalid_import: | a='import' dotted_name 'from' dotted_name { RAISE_SYNTAX_ERROR_STARTING_FROM(a, "Did you mean to use 'from ... import ...' instead?") } - + invalid_import_from_targets: | import_from_as_names ',' NEWLINE { RAISE_SYNTAX_ERROR("trailing comma not allowed without surrounding parentheses") } @@ -1335,3 +1356,24 @@ invalid_kvpair: | expression a=':' &('}'|',') {RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "expression expected after dictionary key and ':'") } invalid_starred_expression: | a='*' expression '=' b=expression { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "cannot assign to iterable argument unpacking") } +invalid_replacement_field: + | '{' a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "f-string: valid expression required before '='") } + | '{' a='!' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "f-string: valid expression required before '!'") } + | '{' a=':' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "f-string: valid expression required before ':'") } + | '{' a='}' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "f-string: valid expression required before '}'") } + | '{' !(yield_expr | star_expressions) { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: expecting a valid expression after '{'")} + | '{' (yield_expr | star_expressions) !('=' | '!' | ':' | '}') { + PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: expecting '=', or '!', or ':', or '}'") } + | '{' (yield_expr | star_expressions) '=' !('!' | ':' | '}') { + PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: expecting '!', or ':', or '}'") } + | '{' (yield_expr | star_expressions) '='? invalid_conversion_character + | '{' (yield_expr | star_expressions) '='? ['!' NAME] !(':' | '}') { + PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: expecting ':' or '}'") } + | '{' (yield_expr | star_expressions) '='? ['!' NAME] ':' fstring_format_spec* !'}' { + PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: expecting '}', or format specs") } + | '{' (yield_expr | star_expressions) '='? ['!' NAME] !'}' { + PyErr_Occurred() ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: expecting '}'") } + +invalid_conversion_character: + | '!' &(':' | '}') { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: missing conversion character") } + | '!' !NAME { RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("f-string: invalid conversion character") } diff --git a/Include/internal/pycore_token.h b/Include/internal/pycore_token.h index 95459ab9f7d004..b9df8766736adf 100644 --- a/Include/internal/pycore_token.h +++ b/Include/internal/pycore_token.h @@ -67,14 +67,18 @@ extern "C" { #define RARROW 51 #define ELLIPSIS 52 #define COLONEQUAL 53 -#define OP 54 -#define AWAIT 55 -#define ASYNC 56 -#define TYPE_IGNORE 57 -#define TYPE_COMMENT 58 -#define SOFT_KEYWORD 59 -#define ERRORTOKEN 60 -#define N_TOKENS 64 +#define EXCLAMATION 54 +#define OP 55 +#define AWAIT 56 +#define ASYNC 57 +#define TYPE_IGNORE 58 +#define TYPE_COMMENT 59 +#define SOFT_KEYWORD 60 +#define FSTRING_START 61 +#define FSTRING_MIDDLE 62 +#define FSTRING_END 63 +#define ERRORTOKEN 64 +#define N_TOKENS 68 #define NT_OFFSET 256 /* Special definitions for cooperation with parser */ @@ -86,6 +90,8 @@ extern "C" { (x) == NEWLINE || \ (x) == INDENT || \ (x) == DEDENT) +#define ISSTRINGLIT(x) ((x) == STRING || \ + (x) == FSTRING_MIDDLE) // Symbols exported for test_peg_generator diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 6c932e1305e1dd..a579bfd7930784 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -774,11 +774,6 @@ def test_parenthesized_with_feature_version(self): ast.parse('with (CtxManager() as example): ...', feature_version=(3, 8)) ast.parse('with CtxManager() as example: ...', feature_version=(3, 8)) - def test_debug_f_string_feature_version(self): - ast.parse('f"{x=}"', feature_version=(3, 8)) - with self.assertRaises(SyntaxError): - ast.parse('f"{x=}"', feature_version=(3, 7)) - def test_assignment_expression_feature_version(self): ast.parse('(x := 0)', feature_version=(3, 8)) with self.assertRaises(SyntaxError): diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py index f10d72ea5547ee..d98e23855e0c19 100644 --- a/Lib/test/test_cmd_line_script.py +++ b/Lib/test/test_cmd_line_script.py @@ -636,9 +636,9 @@ def test_syntaxerror_multi_line_fstring(self): self.assertEqual( stderr.splitlines()[-3:], [ - b' foo"""', - b' ^', - b'SyntaxError: f-string: empty expression not allowed', + b' foo = f"""{}', + b' ^', + b'SyntaxError: f-string: valid expression required before \'}\'', ], ) diff --git a/Lib/test/test_eof.py b/Lib/test/test_eof.py index abcbf046e2cc22..be4fd73bfdc36b 100644 --- a/Lib/test/test_eof.py +++ b/Lib/test/test_eof.py @@ -4,6 +4,7 @@ from test import support from test.support import os_helper from test.support import script_helper +from test.support import warnings_helper import unittest class EOFTestCase(unittest.TestCase): @@ -36,10 +37,11 @@ def test_EOFS_with_file(self): rc, out, err = script_helper.assert_python_failure(file_name) self.assertIn(b'unterminated triple-quoted string literal (detected at line 3)', err) + @warnings_helper.ignore_warnings(category=SyntaxWarning) def test_eof_with_line_continuation(self): expect = "unexpected EOF while parsing (, line 1)" try: - compile('"\\xhh" \\', '', 'exec', dont_inherit=True) + compile('"\\Xhh" \\', '', 'exec') except SyntaxError as msg: self.assertEqual(str(msg), expect) else: diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 684e888f08c778..4ef7decfbc263e 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -155,6 +155,7 @@ def ckmsg(src, msg): ckmsg(s, "'continue' not properly in loop") ckmsg("continue\n", "'continue' not properly in loop") + ckmsg("f'{6 0}'", "invalid syntax. Perhaps you forgot a comma?") def testSyntaxErrorMissingParens(self): def ckmsg(src, msg, exception=SyntaxError): @@ -227,7 +228,7 @@ def testSyntaxErrorOffset(self): check('Python = "\u1e54\xfd\u0163\u0125\xf2\xf1" +', 1, 20) check(b'# -*- coding: cp1251 -*-\nPython = "\xcf\xb3\xf2\xee\xed" +', 2, 19, encoding='cp1251') - check(b'Python = "\xcf\xb3\xf2\xee\xed" +', 1, 18) + check(b'Python = "\xcf\xb3\xf2\xee\xed" +', 1, 10) check('x = "a', 1, 5) check('lambda x: x = 2', 1, 1) check('f{a + b + c}', 1, 2) diff --git a/Lib/test/test_fstring.py b/Lib/test/test_fstring.py index b3f6ef41d77b8f..f571233da07b78 100644 --- a/Lib/test/test_fstring.py +++ b/Lib/test/test_fstring.py @@ -329,13 +329,13 @@ def test_ast_line_numbers_multiline_fstring(self): self.assertEqual(t.body[1].lineno, 3) self.assertEqual(t.body[1].value.lineno, 3) self.assertEqual(t.body[1].value.values[0].lineno, 3) - self.assertEqual(t.body[1].value.values[1].lineno, 3) - self.assertEqual(t.body[1].value.values[2].lineno, 3) + self.assertEqual(t.body[1].value.values[1].lineno, 4) + self.assertEqual(t.body[1].value.values[2].lineno, 6) self.assertEqual(t.body[1].col_offset, 0) self.assertEqual(t.body[1].value.col_offset, 0) - self.assertEqual(t.body[1].value.values[0].col_offset, 0) - self.assertEqual(t.body[1].value.values[1].col_offset, 0) - self.assertEqual(t.body[1].value.values[2].col_offset, 0) + self.assertEqual(t.body[1].value.values[0].col_offset, 4) + self.assertEqual(t.body[1].value.values[1].col_offset, 2) + self.assertEqual(t.body[1].value.values[2].col_offset, 11) # NOTE: the following lineno information and col_offset is correct for # expressions within FormattedValues. binop = t.body[1].value.values[1].value @@ -366,13 +366,13 @@ def test_ast_line_numbers_multiline_fstring(self): self.assertEqual(t.body[0].lineno, 2) self.assertEqual(t.body[0].value.lineno, 2) self.assertEqual(t.body[0].value.values[0].lineno, 2) - self.assertEqual(t.body[0].value.values[1].lineno, 2) - self.assertEqual(t.body[0].value.values[2].lineno, 2) + self.assertEqual(t.body[0].value.values[1].lineno, 3) + self.assertEqual(t.body[0].value.values[2].lineno, 3) self.assertEqual(t.body[0].col_offset, 0) self.assertEqual(t.body[0].value.col_offset, 4) - self.assertEqual(t.body[0].value.values[0].col_offset, 4) - self.assertEqual(t.body[0].value.values[1].col_offset, 4) - self.assertEqual(t.body[0].value.values[2].col_offset, 4) + self.assertEqual(t.body[0].value.values[0].col_offset, 8) + self.assertEqual(t.body[0].value.values[1].col_offset, 10) + self.assertEqual(t.body[0].value.values[2].col_offset, 17) # Check {blech} self.assertEqual(t.body[0].value.values[1].value.lineno, 3) self.assertEqual(t.body[0].value.values[1].value.end_lineno, 3) @@ -387,6 +387,20 @@ def test_ast_line_numbers_with_parentheses(self): t = ast.parse(expr) self.assertEqual(type(t), ast.Module) self.assertEqual(len(t.body), 1) + # check the joinedstr location + joinedstr = t.body[0].value + self.assertEqual(type(joinedstr), ast.JoinedStr) + self.assertEqual(joinedstr.lineno, 3) + self.assertEqual(joinedstr.end_lineno, 3) + self.assertEqual(joinedstr.col_offset, 4) + self.assertEqual(joinedstr.end_col_offset, 17) + # check the formatted value location + fv = t.body[0].value.values[1] + self.assertEqual(type(fv), ast.FormattedValue) + self.assertEqual(fv.lineno, 3) + self.assertEqual(fv.end_lineno, 3) + self.assertEqual(fv.col_offset, 7) + self.assertEqual(fv.end_col_offset, 16) # check the test(t) location call = t.body[0].value.values[1].value self.assertEqual(type(call), ast.Call) @@ -397,6 +411,50 @@ def test_ast_line_numbers_with_parentheses(self): expr = """ x = ( + u'wat', + u"wat", + b'wat', + b"wat", + f'wat', + f"wat", +) + +y = ( + u'''wat''', + u\"\"\"wat\"\"\", + b'''wat''', + b\"\"\"wat\"\"\", + f'''wat''', + f\"\"\"wat\"\"\", +) + """ + t = ast.parse(expr) + self.assertEqual(type(t), ast.Module) + self.assertEqual(len(t.body), 2) + x, y = t.body + + # Check the single quoted string offsets first. + offsets = [ + (elt.col_offset, elt.end_col_offset) + for elt in x.value.elts + ] + self.assertTrue(all( + offset == (4, 10) + for offset in offsets + )) + + # Check the triple quoted string offsets. + offsets = [ + (elt.col_offset, elt.end_col_offset) + for elt in y.value.elts + ] + self.assertTrue(all( + offset == (4, 14) + for offset in offsets + )) + + expr = """ +x = ( 'PERL_MM_OPT', ( f'wat' f'some_string={f(x)} ' @@ -415,9 +473,9 @@ def test_ast_line_numbers_with_parentheses(self): # check the first wat self.assertEqual(type(wat1), ast.Constant) self.assertEqual(wat1.lineno, 4) - self.assertEqual(wat1.end_lineno, 6) - self.assertEqual(wat1.col_offset, 12) - self.assertEqual(wat1.end_col_offset, 18) + self.assertEqual(wat1.end_lineno, 5) + self.assertEqual(wat1.col_offset, 14) + self.assertEqual(wat1.end_col_offset, 26) # check the call call = middle.value self.assertEqual(type(call), ast.Call) @@ -427,10 +485,14 @@ def test_ast_line_numbers_with_parentheses(self): self.assertEqual(call.end_col_offset, 31) # check the second wat self.assertEqual(type(wat2), ast.Constant) - self.assertEqual(wat2.lineno, 4) + self.assertEqual(wat2.lineno, 5) self.assertEqual(wat2.end_lineno, 6) - self.assertEqual(wat2.col_offset, 12) - self.assertEqual(wat2.end_col_offset, 18) + self.assertEqual(wat2.col_offset, 32) + # wat ends at the offset 17, but the whole f-string + # ends at the offset 18 (since the quote is part of the + # f-string but not the wat string) + self.assertEqual(wat2.end_col_offset, 17) + self.assertEqual(fstring.end_col_offset, 18) def test_docstring(self): def f(): @@ -467,7 +529,7 @@ def test_literal(self): self.assertEqual(f' ', ' ') def test_unterminated_string(self): - self.assertAllRaise(SyntaxError, 'f-string: unterminated string', + self.assertAllRaise(SyntaxError, 'unterminated string', [r"""f'{"x'""", r"""f'{"x}'""", r"""f'{("x'""", @@ -475,28 +537,33 @@ def test_unterminated_string(self): ]) def test_mismatched_parens(self): - self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' " + self.assertAllRaise(SyntaxError, r"closing parenthesis '\}' " r"does not match opening parenthesis '\('", ["f'{((}'", ]) - self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\)' " + self.assertAllRaise(SyntaxError, r"closing parenthesis '\)' " r"does not match opening parenthesis '\['", ["f'{a[4)}'", ]) - self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\]' " + self.assertAllRaise(SyntaxError, r"closing parenthesis '\]' " r"does not match opening parenthesis '\('", ["f'{a(4]}'", ]) - self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' " + self.assertAllRaise(SyntaxError, r"closing parenthesis '\}' " r"does not match opening parenthesis '\['", ["f'{a[4}'", ]) - self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' " + self.assertAllRaise(SyntaxError, r"closing parenthesis '\}' " r"does not match opening parenthesis '\('", ["f'{a(4}'", ]) self.assertRaises(SyntaxError, eval, "f'{" + "("*500 + "}'") + def test_fstring_nested_too_deeply(self): + self.assertAllRaise(SyntaxError, + "f-string: expressions nested too deeply", + ['f"{1+2:{1+2:{1+1:{1}}}}"']) + def test_double_braces(self): self.assertEqual(f'{{', '{') self.assertEqual(f'a{{', 'a{') @@ -559,8 +626,14 @@ def test_compile_time_concat(self): self.assertEqual(f'' '' f'', '') self.assertEqual(f'' '' f'' '', '') - self.assertAllRaise(SyntaxError, "f-string: expecting '}'", - ["f'{3' f'}'", # can't concat to get a valid f-string + # This is not really [f'{'] + [f'}'] since we treat the inside + # of braces as a purely new context, so it is actually f'{ and + # then eval(' f') (a valid expression) and then }' which would + # constitute a valid f-string. + self.assertEqual(f'{' f'}', ' f') + + self.assertAllRaise(SyntaxError, "expecting '}'", + ['''f'{3' f"}"''', # can't concat to get a valid f-string ]) def test_comments(self): @@ -618,25 +691,19 @@ def test_format_specifier_expressions(self): self.assertEqual(f'{-10:-{"#"}1{0}x}', ' -0xa') self.assertEqual(f'{-10:{"-"}#{1}0{"x"}}', ' -0xa') self.assertEqual(f'{10:#{3 != {4:5} and width}x}', ' 0xa') + self.assertEqual(f'result: {value:{width:{0}}.{precision:1}}', 'result: 12.35') - self.assertAllRaise(SyntaxError, - """f-string: invalid conversion character 'r{"': """ - """expected 's', 'r', or 'a'""", + self.assertAllRaise(SyntaxError, "f-string: expecting ':' or '}'", ["""f'{"s"!r{":10"}}'""", - # This looks like a nested format spec. ]) - self.assertAllRaise(SyntaxError, "f-string: invalid syntax", + self.assertAllRaise(SyntaxError, + "f-string: expecting a valid expression after '{'", [# Invalid syntax inside a nested spec. "f'{4:{/5}}'", ]) - self.assertAllRaise(SyntaxError, "f-string: expressions nested too deeply", - [# Can't nest format specifiers. - "f'result: {value:{width:{0}}.{precision:1}}'", - ]) - self.assertAllRaise(SyntaxError, 'f-string: invalid conversion character', [# No expansion inside conversion or for # the : or ! itself. @@ -655,7 +722,8 @@ def __format__(self, spec): self.assertEqual(f'{x} {x}', '1 2') def test_missing_expression(self): - self.assertAllRaise(SyntaxError, 'f-string: empty expression not allowed', + self.assertAllRaise(SyntaxError, + "f-string: valid expression required before '}'", ["f'{}'", "f'{ }'" "f' {} '", @@ -667,8 +735,8 @@ def test_missing_expression(self): "f'''{\t\f\r\n}'''", ]) - # Different error messages are raised when a specifier ('!', ':' or '=') is used after an empty expression - self.assertAllRaise(SyntaxError, "f-string: expression required before '!'", + self.assertAllRaise(SyntaxError, + "f-string: valid expression required before '!'", ["f'{!r}'", "f'{ !r}'", "f'{!}'", @@ -689,7 +757,8 @@ def test_missing_expression(self): "f'{ !xr:a}'", ]) - self.assertAllRaise(SyntaxError, "f-string: expression required before ':'", + self.assertAllRaise(SyntaxError, + "f-string: valid expression required before ':'", ["f'{:}'", "f'{ :!}'", "f'{:2}'", @@ -697,7 +766,8 @@ def test_missing_expression(self): "f'{:'", ]) - self.assertAllRaise(SyntaxError, "f-string: expression required before '='", + self.assertAllRaise(SyntaxError, + "f-string: valid expression required before '='", ["f'{=}'", "f'{ =}'", "f'{ =:}'", @@ -715,24 +785,18 @@ def test_missing_expression(self): def test_parens_in_expressions(self): self.assertEqual(f'{3,}', '(3,)') - # Add these because when an expression is evaluated, parens - # are added around it. But we shouldn't go from an invalid - # expression to a valid one. The added parens are just - # supposed to allow whitespace (including newlines). - self.assertAllRaise(SyntaxError, 'f-string: invalid syntax', + self.assertAllRaise(SyntaxError, + "f-string: expecting a valid expression after '{'", ["f'{,}'", - "f'{,}'", # this is (,), which is an error ]) self.assertAllRaise(SyntaxError, r"f-string: unmatched '\)'", ["f'{3)+(4}'", ]) - self.assertAllRaise(SyntaxError, 'unterminated string literal', - ["f'{\n}'", - ]) def test_newlines_before_syntax_error(self): - self.assertAllRaise(SyntaxError, "invalid syntax", + self.assertAllRaise(SyntaxError, + "f-string: expecting a valid expression after '{'", ["f'{.}'", "\nf'{.}'", "\n\nf'{.}'"]) def test_backslashes_in_string_part(self): @@ -776,7 +840,7 @@ def test_backslashes_in_string_part(self): self.assertEqual(f'2\x203', '2 3') self.assertEqual(f'\x203', ' 3') - with self.assertWarns(SyntaxWarning): # invalid escape sequence + with self.assertWarns(DeprecationWarning): # invalid escape sequence value = eval(r"f'\{6*7}'") self.assertEqual(value, '\\42') self.assertEqual(f'\\{6*7}', '\\42') @@ -809,18 +873,40 @@ def test_misformed_unicode_character_name(self): r"'\N{GREEK CAPITAL LETTER DELTA'", ]) - def test_no_backslashes_in_expression_part(self): - self.assertAllRaise(SyntaxError, 'f-string expression part cannot include a backslash', - [r"f'{\'a\'}'", - r"f'{\t3}'", - r"f'{\}'", - r"rf'{\'a\'}'", - r"rf'{\t3}'", - r"rf'{\}'", - r"""rf'{"\N{LEFT CURLY BRACKET}"}'""", - r"f'{\n}'", + def test_backslashes_in_expression_part(self): + self.assertEqual(f"{( + 1 + + 2 + )}", "3") + + self.assertEqual("\N{LEFT CURLY BRACKET}", '{') + self.assertEqual(f'{"\N{LEFT CURLY BRACKET}"}', '{') + self.assertEqual(rf'{"\N{LEFT CURLY BRACKET}"}', '{') + + self.assertAllRaise(SyntaxError, + "f-string: valid expression required before '}'", + ["f'{\n}'", ]) + def test_invalid_backslashes_inside_fstring_context(self): + # All of these variations are invalid python syntax, + # so they are also invalid in f-strings as well. + cases = [ + formatting.format(expr=expr) + for formatting in [ + "{expr}", + "f'{{{expr}}}'", + "rf'{{{expr}}}'", + ] + for expr in [ + r"\'a\'", + r"\t3", + r"\\"[0], + ] + ] + self.assertAllRaise(SyntaxError, 'unexpected character after line continuation', + cases) + def test_no_escapes_for_braces(self): """ Only literal curly braces begin an expression. @@ -843,11 +929,69 @@ def test_lambda(self): self.assertEqual(f'{(lambda y:x*y)("8"):10}', "88888 ") # lambda doesn't work without parens, because the colon - # makes the parser think it's a format_spec - self.assertAllRaise(SyntaxError, 'f-string: invalid syntax', + # makes the parser think it's a format_spec + # emit warning if we can match a format_spec + self.assertAllRaise(SyntaxError, + "f-string: lambda expressions are not allowed " + "without parentheses", ["f'{lambda x:x}'", + "f'{lambda :x}'", + "f'{lambda *arg, :x}'", + "f'{1, lambda:x}'", + ]) + + # but don't emit the paren warning in general cases + self.assertAllRaise(SyntaxError, + "f-string: expecting a valid expression after '{'", + ["f'{lambda x:}'", + "f'{lambda :}'", + "f'{+ lambda:None}'", ]) + def test_valid_prefixes(self): + self.assertEqual(F'{1}', "1") + self.assertEqual(FR'{2}', "2") + self.assertEqual(fR'{3}', "3") + + def test_roundtrip_raw_quotes(self): + self.assertEqual(fr"\'", "\\'") + self.assertEqual(fr'\"', '\\"') + self.assertEqual(fr'\"\'', '\\"\\\'') + self.assertEqual(fr'\'\"', '\\\'\\"') + self.assertEqual(fr'\"\'\"', '\\"\\\'\\"') + self.assertEqual(fr'\'\"\'', '\\\'\\"\\\'') + self.assertEqual(fr'\"\'\"\'', '\\"\\\'\\"\\\'') + + def test_fstring_backslash_before_double_bracket(self): + self.assertEqual(f'\{{\}}', '\\{\\}') + self.assertEqual(f'\{{', '\\{') + self.assertEqual(f'\{{{1+1}', '\\{2') + self.assertEqual(f'\}}{1+1}', '\\}2') + self.assertEqual(f'{1+1}\}}', '2\\}') + self.assertEqual(fr'\{{\}}', '\\{\\}') + self.assertEqual(fr'\{{', '\\{') + self.assertEqual(fr'\{{{1+1}', '\\{2') + self.assertEqual(fr'\}}{1+1}', '\\}2') + self.assertEqual(fr'{1+1}\}}', '2\\}') + + def test_fstring_backslash_prefix_raw(self): + self.assertEqual(f'\\', '\\') + self.assertEqual(f'\\\\', '\\\\') + self.assertEqual(fr'\\', r'\\') + self.assertEqual(fr'\\\\', r'\\\\') + self.assertEqual(rf'\\', r'\\') + self.assertEqual(rf'\\\\', r'\\\\') + self.assertEqual(Rf'\\', R'\\') + self.assertEqual(Rf'\\\\', R'\\\\') + self.assertEqual(fR'\\', R'\\') + self.assertEqual(fR'\\\\', R'\\\\') + self.assertEqual(FR'\\', R'\\') + self.assertEqual(FR'\\\\', R'\\\\') + + def test_fstring_format_spec_greedy_matching(self): + self.assertEqual(f"{1:}}}", "1}") + self.assertEqual(f"{1:>3{5}}}}", " 1}") + def test_yield(self): # Not terribly useful, but make sure the yield turns # a function into a generator @@ -1037,6 +1181,11 @@ def test_conversions(self): self.assertEqual(f'{"a"!r}', "'a'") self.assertEqual(f'{"a"!a}', "'a'") + # Conversions can have trailing whitespace after them since it + # does not provide any significance + self.assertEqual(f"{3!s }", "3") + self.assertEqual(f'{3.14!s :10.10}', '3.14 ') + # Not a conversion. self.assertEqual(f'{"a!r"}', "a!r") @@ -1049,16 +1198,27 @@ def test_conversions(self): "f'{3!g'", ]) - self.assertAllRaise(SyntaxError, 'f-string: missed conversion character', + self.assertAllRaise(SyntaxError, 'f-string: missing conversion character', ["f'{3!}'", "f'{3!:'", "f'{3!:}'", ]) - for conv in 'g', 'A', '3', 'G', '!', ' s', 's ', ' s ', 'ä', 'ɐ', 'ª': + for conv_identifier in 'g', 'A', 'G', 'ä', 'ɐ': self.assertAllRaise(SyntaxError, "f-string: invalid conversion character %r: " - "expected 's', 'r', or 'a'" % conv, + "expected 's', 'r', or 'a'" % conv_identifier, + ["f'{3!" + conv_identifier + "}'"]) + + for conv_non_identifier in '3', '!': + self.assertAllRaise(SyntaxError, + "f-string: invalid conversion character", + ["f'{3!" + conv_non_identifier + "}'"]) + + for conv in ' s', ' s ': + self.assertAllRaise(SyntaxError, + "f-string: conversion type must come right after the" + " exclamanation mark", ["f'{3!" + conv + "}'"]) self.assertAllRaise(SyntaxError, @@ -1097,8 +1257,7 @@ def test_mismatched_braces(self): ]) self.assertAllRaise(SyntaxError, "f-string: expecting '}'", - ["f'{3:{{>10}'", - "f'{3'", + ["f'{3'", "f'{3!'", "f'{3:'", "f'{3!s'", @@ -1111,11 +1270,14 @@ def test_mismatched_braces(self): "f'{{{'", "f'{{}}{'", "f'{'", - "f'x{<'", # See bpo-46762. - "f'x{>'", "f'{i='", # See gh-93418. ]) + self.assertAllRaise(SyntaxError, + "f-string: expecting a valid expression after '{'", + ["f'{3:{{>10}'", + ]) + # But these are just normal strings. self.assertEqual(f'{"{"}', '{') self.assertEqual(f'{"}"}', '}') @@ -1314,6 +1476,7 @@ def __repr__(self): self.assertEqual(f'X{x =}Y', 'Xx ='+repr(x)+'Y') self.assertEqual(f'X{x= }Y', 'Xx= '+repr(x)+'Y') self.assertEqual(f'X{x = }Y', 'Xx = '+repr(x)+'Y') + self.assertEqual(f"sadsd {1 + 1 = :{1 + 1:1d}f}", "sadsd 1 + 1 = 2.000000") # These next lines contains tabs. Backslash escapes don't # work in f-strings. @@ -1335,7 +1498,8 @@ def test_walrus(self): self.assertEqual(x, 10) def test_invalid_syntax_error_message(self): - with self.assertRaisesRegex(SyntaxError, "f-string: invalid syntax"): + with self.assertRaisesRegex(SyntaxError, + "f-string: expecting '=', or '!', or ':', or '}'"): compile("f'{a $ b}'", "?", "exec") def test_with_two_commas_in_format_specifier(self): @@ -1359,12 +1523,11 @@ def test_with_an_underscore_and_a_comma_in_format_specifier(self): f'{1:_,}' def test_syntax_error_for_starred_expressions(self): - error_msg = re.escape("cannot use starred expression here") - with self.assertRaisesRegex(SyntaxError, error_msg): + with self.assertRaisesRegex(SyntaxError, "can't use starred expression here"): compile("f'{*a}'", "?", "exec") - error_msg = re.escape("cannot use double starred expression here") - with self.assertRaisesRegex(SyntaxError, error_msg): + with self.assertRaisesRegex(SyntaxError, + "f-string: expecting a valid expression after '{'"): compile("f'{**a}'", "?", "exec") if __name__ == '__main__': diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py index 63c2501cfe2338..283a7c23609e67 100644 --- a/Lib/test/test_tokenize.py +++ b/Lib/test/test_tokenize.py @@ -1625,6 +1625,10 @@ def test_random_files(self): # 7 more testfiles fail. Remove them also until the failure is diagnosed. testfiles.remove(os.path.join(tempdir, "test_unicode_identifiers.py")) + + # TODO: Remove this once we can unparse PEP 701 syntax + testfiles.remove(os.path.join(tempdir, "test_fstring.py")) + for f in ('buffer', 'builtin', 'fileio', 'inspect', 'os', 'platform', 'sys'): testfiles.remove(os.path.join(tempdir, "test_%s.py") % f) @@ -1937,25 +1941,39 @@ def test_string(self): """) self.check_tokenize('f"abc"', """\ - STRING 'f"abc"' (1, 0) (1, 6) + FSTRING_START 'f"' (1, 0) (1, 2) + FSTRING_MIDDLE 'abc' (1, 2) (1, 5) + FSTRING_END '"' (1, 5) (1, 6) """) self.check_tokenize('fR"a{b}c"', """\ - STRING 'fR"a{b}c"' (1, 0) (1, 9) + FSTRING_START 'fR"' (1, 0) (1, 3) + FSTRING_MIDDLE 'a' (1, 3) (1, 4) + LBRACE '{' (1, 4) (1, 5) + NAME 'b' (1, 5) (1, 6) + RBRACE '}' (1, 6) (1, 7) + FSTRING_MIDDLE 'c' (1, 7) (1, 8) + FSTRING_END '"' (1, 8) (1, 9) """) self.check_tokenize('f"""abc"""', """\ - STRING 'f\"\"\"abc\"\"\"' (1, 0) (1, 10) + FSTRING_START 'f\"""' (1, 0) (1, 4) + FSTRING_MIDDLE 'abc' (1, 4) (1, 7) + FSTRING_END '\"""' (1, 7) (1, 10) """) self.check_tokenize(r'f"abc\ def"', """\ - STRING 'f"abc\\\\\\ndef"' (1, 0) (2, 4) + FSTRING_START \'f"\' (1, 0) (1, 2) + FSTRING_MIDDLE 'abc\\\\\\ndef' (1, 2) (2, 3) + FSTRING_END '"' (2, 3) (2, 4) """) self.check_tokenize(r'Rf"abc\ def"', """\ - STRING 'Rf"abc\\\\\\ndef"' (1, 0) (2, 4) + FSTRING_START 'Rf"' (1, 0) (1, 3) + FSTRING_MIDDLE 'abc\\\\\\ndef' (1, 3) (2, 3) + FSTRING_END '"' (2, 3) (2, 4) """) def test_function(self): diff --git a/Lib/test/test_type_comments.py b/Lib/test/test_type_comments.py index 8db7394d1512aa..aba4a44be9da96 100644 --- a/Lib/test/test_type_comments.py +++ b/Lib/test/test_type_comments.py @@ -272,7 +272,7 @@ def test_matmul(self): pass def test_fstring(self): - for tree in self.parse_all(fstring, minver=6): + for tree in self.parse_all(fstring): pass def test_underscorednumber(self): diff --git a/Lib/token.py b/Lib/token.py index 95b107c6643b3f..1459d12b376f82 100644 --- a/Lib/token.py +++ b/Lib/token.py @@ -57,18 +57,22 @@ RARROW = 51 ELLIPSIS = 52 COLONEQUAL = 53 -OP = 54 -AWAIT = 55 -ASYNC = 56 -TYPE_IGNORE = 57 -TYPE_COMMENT = 58 -SOFT_KEYWORD = 59 +EXCLAMATION = 54 +OP = 55 +AWAIT = 56 +ASYNC = 57 +TYPE_IGNORE = 58 +TYPE_COMMENT = 59 +SOFT_KEYWORD = 60 +FSTRING_START = 61 +FSTRING_MIDDLE = 62 +FSTRING_END = 63 # These aren't used by the C tokenizer but are needed for tokenize.py -ERRORTOKEN = 60 -COMMENT = 61 -NL = 62 -ENCODING = 63 -N_TOKENS = 64 +ERRORTOKEN = 64 +COMMENT = 65 +NL = 66 +ENCODING = 67 +N_TOKENS = 68 # Special definitions for cooperation with parser NT_OFFSET = 256 @@ -78,6 +82,7 @@ __all__.extend(tok_name.values()) EXACT_TOKEN_TYPES = { + '!': EXCLAMATION, '!=': NOTEQUAL, '%': PERCENT, '%=': PERCENTEQUAL, diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-04-17-16-00-32.gh-issue-102856.UunJ7y.rst b/Misc/NEWS.d/next/Core and Builtins/2023-04-17-16-00-32.gh-issue-102856.UunJ7y.rst new file mode 100644 index 00000000000000..35eceb83816bcb --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2023-04-17-16-00-32.gh-issue-102856.UunJ7y.rst @@ -0,0 +1 @@ +Implement the required C tokenizer changes for PEP 701. Patch by Pablo Galindo Salgado, Lysandros Nikolaou, Batuhan Taskaya, Marta Gómez Macías and sunmy2019. diff --git a/Parser/action_helpers.c b/Parser/action_helpers.c index 46390966892d16..55c0f6fdd620f4 100644 --- a/Parser/action_helpers.c +++ b/Parser/action_helpers.c @@ -1,6 +1,7 @@ #include #include "pegen.h" +#include "tokenizer.h" #include "string_parser.h" #include "pycore_runtime.h" // _PyRuntime @@ -853,96 +854,6 @@ _PyPegen_seq_delete_starred_exprs(Parser *p, asdl_seq *kwargs) return new_seq; } -expr_ty -_PyPegen_concatenate_strings(Parser *p, asdl_seq *strings) -{ - Py_ssize_t len = asdl_seq_LEN(strings); - assert(len > 0); - - Token *first = asdl_seq_GET_UNTYPED(strings, 0); - Token *last = asdl_seq_GET_UNTYPED(strings, len - 1); - - int bytesmode = 0; - PyObject *bytes_str = NULL; - - FstringParser state; - _PyPegen_FstringParser_Init(&state); - - for (Py_ssize_t i = 0; i < len; i++) { - Token *t = asdl_seq_GET_UNTYPED(strings, i); - - int this_bytesmode; - int this_rawmode; - PyObject *s; - const char *fstr; - Py_ssize_t fstrlen = -1; - - if (_PyPegen_parsestr(p, &this_bytesmode, &this_rawmode, &s, &fstr, &fstrlen, t) != 0) { - goto error; - } - - /* Check that we are not mixing bytes with unicode. */ - if (i != 0 && bytesmode != this_bytesmode) { - RAISE_SYNTAX_ERROR("cannot mix bytes and nonbytes literals"); - Py_XDECREF(s); - goto error; - } - bytesmode = this_bytesmode; - - if (fstr != NULL) { - assert(s == NULL && !bytesmode); - - int result = _PyPegen_FstringParser_ConcatFstring(p, &state, &fstr, fstr + fstrlen, - this_rawmode, 0, first, t, last); - if (result < 0) { - goto error; - } - } - else { - /* String or byte string. */ - assert(s != NULL && fstr == NULL); - assert(bytesmode ? PyBytes_CheckExact(s) : PyUnicode_CheckExact(s)); - - if (bytesmode) { - if (i == 0) { - bytes_str = s; - } - else { - PyBytes_ConcatAndDel(&bytes_str, s); - if (!bytes_str) { - goto error; - } - } - } - else { - /* This is a regular string. Concatenate it. */ - if (_PyPegen_FstringParser_ConcatAndDel(&state, s) < 0) { - goto error; - } - } - } - } - - if (bytesmode) { - if (_PyArena_AddPyObject(p->arena, bytes_str) < 0) { - goto error; - } - return _PyAST_Constant(bytes_str, NULL, first->lineno, - first->col_offset, last->end_lineno, - last->end_col_offset, p->arena); - } - - return _PyPegen_FstringParser_Finish(p, &state, first, last); - -error: - Py_XDECREF(bytes_str); - _PyPegen_FstringParser_Dealloc(&state); - if (PyErr_Occurred()) { - _Pypegen_raise_decode_error(p); - } - return NULL; -} - expr_ty _PyPegen_ensure_imaginary(Parser *p, expr_ty exp) { @@ -1054,6 +965,18 @@ _PyPegen_check_legacy_stmt(Parser *p, expr_ty name) { return 0; } +expr_ty +_PyPegen_check_fstring_conversion(Parser *p, Token* symbol, expr_ty conv) { + if (symbol->lineno != conv->lineno || symbol->end_col_offset != conv->col_offset) { + return RAISE_SYNTAX_ERROR_KNOWN_RANGE( + symbol, conv, + "f-string: conversion type must come right after the exclamanation mark" + ); + } + return conv; +} + + const char * _PyPegen_get_expr_name(expr_ty e) { @@ -1271,3 +1194,439 @@ _PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args, asdl_comprehension_seq "Generator expression must be parenthesized" ); } + +// Fstring stuff + +static expr_ty +decode_fstring_buffer(Parser *p, int lineno, int col_offset, int end_lineno, + int end_col_offset) +{ + tokenizer_mode *tok_mode = &(p->tok->tok_mode_stack[p->tok->tok_mode_stack_index]); + assert(tok_mode->last_expr_buffer != NULL); + assert(tok_mode->last_expr_size >= 0 && tok_mode->last_expr_end >= 0); + + PyObject *res = PyUnicode_DecodeUTF8( + tok_mode->last_expr_buffer, + tok_mode->last_expr_size - tok_mode->last_expr_end, + NULL + ); + if (!res || _PyArena_AddPyObject(p->arena, res) < 0) { + Py_XDECREF(res); + return NULL; + } + + return _PyAST_Constant(res, NULL, lineno, col_offset, end_lineno, end_col_offset, p->arena); +} + +static expr_ty +_PyPegen_decode_fstring_part(Parser* p, int is_raw, expr_ty constant) { + assert(PyUnicode_CheckExact(constant->v.Constant.value)); + + const char* bstr = PyUnicode_AsUTF8(constant->v.Constant.value); + if (bstr == NULL) { + return NULL; + } + + size_t len; + if (strcmp(bstr, "{{") == 0 || strcmp(bstr, "}}") == 0) { + len = 1; + } else { + len = strlen(bstr); + } + + is_raw = is_raw || strchr(bstr, '\\') == NULL; + PyObject *str = _PyPegen_decode_string(p, is_raw, bstr, len, NULL); + if (str == NULL) { + _Pypegen_raise_decode_error(p); + return NULL; + } + if (_PyArena_AddPyObject(p->arena, str) < 0) { + Py_DECREF(str); + return NULL; + } + return _PyAST_Constant(str, NULL, constant->lineno, constant->col_offset, + constant->end_lineno, constant->end_col_offset, + p->arena); +} + +static asdl_expr_seq * +unpack_top_level_joined_strs(Parser *p, asdl_expr_seq *raw_expressions) +{ + /* The parser might put multiple f-string values into an individual + * JoinedStr node at the top level due to stuff like f-string debugging + * expressions. This function flattens those and promotes them to the + * upper level. Only simplifies AST, but the compiler already takes care + * of the regular output, so this is not necessary if you are not going + * to expose the output AST to Python level. */ + + Py_ssize_t i, req_size, raw_size; + + req_size = raw_size = asdl_seq_LEN(raw_expressions); + expr_ty expr; + for (i = 0; i < raw_size; i++) { + expr = asdl_seq_GET(raw_expressions, i); + if (expr->kind == JoinedStr_kind) { + req_size += asdl_seq_LEN(expr->v.JoinedStr.values) - 1; + } + } + + asdl_expr_seq *expressions = _Py_asdl_expr_seq_new(req_size, p->arena); + + Py_ssize_t raw_index, req_index = 0; + for (raw_index = 0; raw_index < raw_size; raw_index++) { + expr = asdl_seq_GET(raw_expressions, raw_index); + if (expr->kind == JoinedStr_kind) { + asdl_expr_seq *values = expr->v.JoinedStr.values; + for (Py_ssize_t n = 0; n < asdl_seq_LEN(values); n++) { + asdl_seq_SET(expressions, req_index, asdl_seq_GET(values, n)); + req_index++; + } + } else { + asdl_seq_SET(expressions, req_index, expr); + req_index++; + } + } + return expressions; +} + +expr_ty +_PyPegen_joined_str(Parser *p, Token* a, asdl_expr_seq* raw_expressions, Token*b) { + asdl_expr_seq *expr = unpack_top_level_joined_strs(p, raw_expressions); + Py_ssize_t n_items = asdl_seq_LEN(expr); + + const char* quote_str = PyBytes_AsString(a->bytes); + if (quote_str == NULL) { + return NULL; + } + int is_raw = strpbrk(quote_str, "rR") != NULL; + + asdl_expr_seq *seq = _Py_asdl_expr_seq_new(n_items, p->arena); + if (seq == NULL) { + return NULL; + } + + Py_ssize_t index = 0; + for (Py_ssize_t i = 0; i < n_items; i++) { + expr_ty item = asdl_seq_GET(expr, i); + if (item->kind == Constant_kind) { + item = _PyPegen_decode_fstring_part(p, is_raw, item); + if (item == NULL) { + return NULL; + } + + /* Tokenizer emits string parts even when the underlying string + might become an empty value (e.g. FSTRING_MIDDLE with the value \\n) + so we need to check for them and simplify it here. */ + if (PyUnicode_CheckExact(item->v.Constant.value) + && PyUnicode_GET_LENGTH(item->v.Constant.value) == 0) { + continue; + } + } + asdl_seq_SET(seq, index++, item); + } + + asdl_expr_seq *resized_exprs; + if (index != n_items) { + resized_exprs = _Py_asdl_expr_seq_new(index, p->arena); + if (resized_exprs == NULL) { + return NULL; + } + for (Py_ssize_t i = 0; i < index; i++) { + asdl_seq_SET(resized_exprs, i, asdl_seq_GET(seq, i)); + } + } + else { + resized_exprs = seq; + } + + return _PyAST_JoinedStr(resized_exprs, a->lineno, a->col_offset, + b->end_lineno, b->end_col_offset, + p->arena); +} + +expr_ty _PyPegen_constant_from_token(Parser* p, Token* tok) { + char* bstr = PyBytes_AsString(tok->bytes); + if (bstr == NULL) { + return NULL; + } + PyObject* str = PyUnicode_FromString(bstr); + if (str == NULL) { + return NULL; + } + if (_PyArena_AddPyObject(p->arena, str) < 0) { + Py_DECREF(str); + return NULL; + } + return _PyAST_Constant(str, NULL, tok->lineno, tok->col_offset, + tok->end_lineno, tok->end_col_offset, + p->arena); +} + +expr_ty _PyPegen_constant_from_string(Parser* p, Token* tok) { + char* the_str = PyBytes_AsString(tok->bytes); + if (the_str == NULL) { + return NULL; + } + PyObject *s = _PyPegen_parse_string(p, tok); + if (s == NULL) { + _Pypegen_raise_decode_error(p); + return NULL; + } + if (_PyArena_AddPyObject(p->arena, s) < 0) { + Py_DECREF(s); + return NULL; + } + PyObject *kind = NULL; + if (the_str && the_str[0] == 'u') { + kind = _PyPegen_new_identifier(p, "u"); + if (kind == NULL) { + return NULL; + } + } + return _PyAST_Constant(s, kind, tok->lineno, tok->col_offset, tok->end_lineno, tok->end_col_offset, p->arena); +} + +expr_ty _PyPegen_formatted_value(Parser *p, expr_ty expression, Token *debug, expr_ty conversion, + expr_ty format, int lineno, int col_offset, int end_lineno, int end_col_offset, + PyArena *arena) { + int conversion_val = -1; + if (conversion != NULL) { + assert(conversion->kind == Name_kind); + Py_UCS4 first = PyUnicode_READ_CHAR(conversion->v.Name.id, 0); + + if (PyUnicode_GET_LENGTH(conversion->v.Name.id) > 1 || + !(first == 's' || first == 'r' || first == 'a')) { + RAISE_SYNTAX_ERROR_KNOWN_LOCATION(conversion, + "f-string: invalid conversion character %R: expected 's', 'r', or 'a'", + conversion->v.Name.id); + return NULL; + } + + conversion_val = Py_SAFE_DOWNCAST(first, Py_UCS4, int); + } + else if (debug && !format) { + /* If no conversion is specified, use !r for debug expressions */ + conversion_val = (int)'r'; + } + + expr_ty formatted_value = _PyAST_FormattedValue( + expression, conversion_val, format, + lineno, col_offset, end_lineno, + end_col_offset, arena + ); + + if (debug) { + /* Find the non whitespace token after the "=" */ + int debug_end_line, debug_end_offset; + + if (conversion) { + debug_end_line = conversion->lineno; + debug_end_offset = conversion->col_offset; + } + else if (format) { + debug_end_line = format->lineno; + debug_end_offset = format->col_offset + 1; // HACK: ?? + } + else { + debug_end_line = end_lineno; + debug_end_offset = end_col_offset; + } + + expr_ty debug_text = decode_fstring_buffer(p, lineno, col_offset + 1, + debug_end_line, debug_end_offset - 1); + if (!debug_text) { + return NULL; + } + + asdl_expr_seq *values = _Py_asdl_expr_seq_new(2, arena); + asdl_seq_SET(values, 0, debug_text); + asdl_seq_SET(values, 1, formatted_value); + return _PyAST_JoinedStr(values, lineno, col_offset, debug_end_line, debug_end_offset, p->arena); + } + else { + return formatted_value; + } +} + +expr_ty +_PyPegen_concatenate_strings(Parser *p, asdl_expr_seq *strings, + int lineno, int col_offset, int end_lineno, + int end_col_offset, PyArena *arena) +{ + Py_ssize_t len = asdl_seq_LEN(strings); + assert(len > 0); + + int f_string_found = 0; + int unicode_string_found = 0; + int bytes_found = 0; + + Py_ssize_t i = 0; + Py_ssize_t n_flattened_elements = 0; + for (i = 0; i < len; i++) { + expr_ty elem = asdl_seq_GET(strings, i); + if (elem->kind == Constant_kind) { + if (PyBytes_CheckExact(elem->v.Constant.value)) { + bytes_found = 1; + } else { + unicode_string_found = 1; + } + n_flattened_elements++; + } else { + n_flattened_elements += asdl_seq_LEN(elem->v.JoinedStr.values); + f_string_found = 1; + } + } + + if ((unicode_string_found || f_string_found) && bytes_found) { + RAISE_SYNTAX_ERROR("cannot mix bytes and nonbytes literals"); + return NULL; + } + + if (bytes_found) { + PyObject* res = PyBytes_FromString(""); + + /* Bytes literals never get a kind, but just for consistency + since they are represented as Constant nodes, we'll mirror + the same behavior as unicode strings for determining the + kind. */ + PyObject* kind = asdl_seq_GET(strings, 0)->v.Constant.kind; + for (i = 0; i < len; i++) { + expr_ty elem = asdl_seq_GET(strings, i); + PyBytes_Concat(&res, elem->v.Constant.value); + } + if (!res || _PyArena_AddPyObject(arena, res) < 0) { + Py_XDECREF(res); + return NULL; + } + return _PyAST_Constant(res, kind, lineno, col_offset, end_lineno, end_col_offset, p->arena); + } + + if (!f_string_found && len == 1) { + return asdl_seq_GET(strings, 0); + } + + asdl_expr_seq* flattened = _Py_asdl_expr_seq_new(n_flattened_elements, p->arena); + if (flattened == NULL) { + return NULL; + } + + /* build flattened list */ + Py_ssize_t current_pos = 0; + Py_ssize_t j = 0; + for (i = 0; i < len; i++) { + expr_ty elem = asdl_seq_GET(strings, i); + if (elem->kind == Constant_kind) { + asdl_seq_SET(flattened, current_pos++, elem); + } else { + for (j = 0; j < asdl_seq_LEN(elem->v.JoinedStr.values); j++) { + expr_ty subvalue = asdl_seq_GET(elem->v.JoinedStr.values, j); + if (subvalue == NULL) { + return NULL; + } + asdl_seq_SET(flattened, current_pos++, subvalue); + } + } + } + + /* calculate folded element count */ + Py_ssize_t n_elements = 0; + int prev_is_constant = 0; + for (i = 0; i < n_flattened_elements; i++) { + expr_ty elem = asdl_seq_GET(flattened, i); + + /* The concatenation of a FormattedValue and an empty Contant should + lead to the FormattedValue itself. Thus, we will not take any empty + constants into account, just as in `_PyPegen_joined_str` */ + if (f_string_found && elem->kind == Constant_kind && + PyUnicode_CheckExact(elem->v.Constant.value) && + PyUnicode_GET_LENGTH(elem->v.Constant.value) == 0) + continue; + + if (!prev_is_constant || elem->kind != Constant_kind) { + n_elements++; + } + prev_is_constant = elem->kind == Constant_kind; + } + + asdl_expr_seq* values = _Py_asdl_expr_seq_new(n_elements, p->arena); + if (values == NULL) { + return NULL; + } + + /* build folded list */ + _PyUnicodeWriter writer; + current_pos = 0; + for (i = 0; i < n_flattened_elements; i++) { + expr_ty elem = asdl_seq_GET(flattened, i); + + /* if the current elem and the following are constants, + fold them and all consequent constants */ + if (elem->kind == Constant_kind) { + if (i + 1 < n_flattened_elements && + asdl_seq_GET(flattened, i + 1)->kind == Constant_kind) { + expr_ty first_elem = elem; + + /* When a string is getting concatenated, the kind of the string + is determined by the first string in the concatenation + sequence. + + u"abc" "def" -> u"abcdef" + "abc" u"abc" -> "abcabc" */ + PyObject *kind = elem->v.Constant.kind; + + _PyUnicodeWriter_Init(&writer); + expr_ty last_elem = elem; + for (j = i; j < n_flattened_elements; j++) { + expr_ty current_elem = asdl_seq_GET(flattened, j); + if (current_elem->kind == Constant_kind) { + if (_PyUnicodeWriter_WriteStr( + &writer, current_elem->v.Constant.value)) { + _PyUnicodeWriter_Dealloc(&writer); + return NULL; + } + last_elem = current_elem; + } else { + break; + } + } + i = j - 1; + + PyObject *concat_str = _PyUnicodeWriter_Finish(&writer); + if (concat_str == NULL) { + _PyUnicodeWriter_Dealloc(&writer); + return NULL; + } + if (_PyArena_AddPyObject(p->arena, concat_str) < 0) { + Py_DECREF(concat_str); + return NULL; + } + elem = _PyAST_Constant(concat_str, kind, first_elem->lineno, + first_elem->col_offset, + last_elem->end_lineno, + last_elem->end_col_offset, p->arena); + if (elem == NULL) { + return NULL; + } + } + + /* Drop all empty contanst strings */ + if (f_string_found && + PyUnicode_CheckExact(elem->v.Constant.value) && + PyUnicode_GET_LENGTH(elem->v.Constant.value) == 0) { + continue; + } + } + + asdl_seq_SET(values, current_pos++, elem); + } + + if (!f_string_found) { + assert(n_elements == 1); + expr_ty elem = asdl_seq_GET(values, 0); + assert(elem->kind == Constant_kind); + return elem; + } + + assert(current_pos == n_elements); + return _PyAST_JoinedStr(values, lineno, col_offset, end_lineno, end_col_offset, p->arena); +} diff --git a/Parser/parser.c b/Parser/parser.c index e0a88a9cc72c8b..771366844fc489 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -17,52 +17,52 @@ static KeywordToken *reserved_keywords[] = { (KeywordToken[]) {{NULL, -1}}, (KeywordToken[]) {{NULL, -1}}, (KeywordToken[]) { - {"if", 641}, - {"as", 639}, - {"in", 650}, + {"if", 642}, + {"as", 640}, + {"in", 651}, {"or", 574}, {"is", 582}, {NULL, -1}, }, (KeywordToken[]) { - {"del", 603}, - {"def", 651}, - {"for", 649}, - {"try", 623}, + {"del", 604}, + {"def", 652}, + {"for", 650}, + {"try", 624}, {"and", 575}, {"not", 581}, {NULL, -1}, }, (KeywordToken[]) { - {"from", 607}, + {"from", 608}, {"pass", 504}, - {"with", 614}, - {"elif", 643}, - {"else", 644}, - {"None", 601}, - {"True", 600}, + {"with", 615}, + {"elif", 644}, + {"else", 645}, + {"None", 602}, + {"True", 601}, {NULL, -1}, }, (KeywordToken[]) { {"raise", 522}, {"yield", 573}, {"break", 508}, - {"class", 653}, - {"while", 646}, - {"False", 602}, + {"class", 654}, + {"while", 647}, + {"False", 603}, {NULL, -1}, }, (KeywordToken[]) { {"return", 519}, - {"import", 606}, + {"import", 607}, {"assert", 526}, {"global", 523}, - {"except", 636}, - {"lambda", 586}, + {"except", 637}, + {"lambda", 600}, {NULL, -1}, }, (KeywordToken[]) { - {"finally", 632}, + {"finally", 633}, {NULL, -1}, }, (KeywordToken[]) { @@ -224,341 +224,370 @@ static char *soft_keywords[] = { #define lambda_param_with_default_type 1144 #define lambda_param_maybe_default_type 1145 #define lambda_param_type 1146 -#define strings_type 1147 -#define list_type 1148 -#define tuple_type 1149 -#define set_type 1150 -#define dict_type 1151 -#define double_starred_kvpairs_type 1152 -#define double_starred_kvpair_type 1153 -#define kvpair_type 1154 -#define for_if_clauses_type 1155 -#define for_if_clause_type 1156 -#define listcomp_type 1157 -#define setcomp_type 1158 -#define genexp_type 1159 -#define dictcomp_type 1160 -#define arguments_type 1161 -#define args_type 1162 -#define kwargs_type 1163 -#define starred_expression_type 1164 -#define kwarg_or_starred_type 1165 -#define kwarg_or_double_starred_type 1166 -#define star_targets_type 1167 -#define star_targets_list_seq_type 1168 -#define star_targets_tuple_seq_type 1169 -#define star_target_type 1170 -#define target_with_star_atom_type 1171 -#define star_atom_type 1172 -#define single_target_type 1173 -#define single_subscript_attribute_target_type 1174 -#define t_primary_type 1175 // Left-recursive -#define t_lookahead_type 1176 -#define del_targets_type 1177 -#define del_target_type 1178 -#define del_t_atom_type 1179 -#define type_expressions_type 1180 -#define func_type_comment_type 1181 -#define invalid_arguments_type 1182 -#define invalid_kwarg_type 1183 -#define expression_without_invalid_type 1184 -#define invalid_legacy_expression_type 1185 -#define invalid_expression_type 1186 -#define invalid_named_expression_type 1187 -#define invalid_assignment_type 1188 -#define invalid_ann_assign_target_type 1189 -#define invalid_del_stmt_type 1190 -#define invalid_block_type 1191 -#define invalid_comprehension_type 1192 -#define invalid_dict_comprehension_type 1193 -#define invalid_parameters_type 1194 -#define invalid_default_type 1195 -#define invalid_star_etc_type 1196 -#define invalid_kwds_type 1197 -#define invalid_parameters_helper_type 1198 -#define invalid_lambda_parameters_type 1199 -#define invalid_lambda_parameters_helper_type 1200 -#define invalid_lambda_star_etc_type 1201 -#define invalid_lambda_kwds_type 1202 -#define invalid_double_type_comments_type 1203 -#define invalid_with_item_type 1204 -#define invalid_for_target_type 1205 -#define invalid_group_type 1206 -#define invalid_import_type 1207 -#define invalid_import_from_targets_type 1208 -#define invalid_with_stmt_type 1209 -#define invalid_with_stmt_indent_type 1210 -#define invalid_try_stmt_type 1211 -#define invalid_except_stmt_type 1212 -#define invalid_finally_stmt_type 1213 -#define invalid_except_stmt_indent_type 1214 -#define invalid_except_star_stmt_indent_type 1215 -#define invalid_match_stmt_type 1216 -#define invalid_case_block_type 1217 -#define invalid_as_pattern_type 1218 -#define invalid_class_pattern_type 1219 -#define invalid_class_argument_pattern_type 1220 -#define invalid_if_stmt_type 1221 -#define invalid_elif_stmt_type 1222 -#define invalid_else_stmt_type 1223 -#define invalid_while_stmt_type 1224 -#define invalid_for_stmt_type 1225 -#define invalid_def_raw_type 1226 -#define invalid_class_def_raw_type 1227 -#define invalid_double_starred_kvpairs_type 1228 -#define invalid_kvpair_type 1229 -#define invalid_starred_expression_type 1230 -#define _loop0_1_type 1231 -#define _loop0_2_type 1232 -#define _loop1_3_type 1233 -#define _loop0_5_type 1234 -#define _gather_4_type 1235 -#define _tmp_6_type 1236 -#define _tmp_7_type 1237 -#define _tmp_8_type 1238 -#define _tmp_9_type 1239 -#define _tmp_10_type 1240 -#define _tmp_11_type 1241 -#define _tmp_12_type 1242 -#define _tmp_13_type 1243 -#define _loop1_14_type 1244 -#define _tmp_15_type 1245 -#define _tmp_16_type 1246 -#define _tmp_17_type 1247 -#define _loop0_19_type 1248 -#define _gather_18_type 1249 -#define _loop0_21_type 1250 -#define _gather_20_type 1251 -#define _tmp_22_type 1252 -#define _tmp_23_type 1253 -#define _loop0_24_type 1254 -#define _loop1_25_type 1255 -#define _loop0_27_type 1256 -#define _gather_26_type 1257 -#define _tmp_28_type 1258 -#define _loop0_30_type 1259 -#define _gather_29_type 1260 -#define _tmp_31_type 1261 -#define _loop1_32_type 1262 -#define _tmp_33_type 1263 -#define _tmp_34_type 1264 -#define _tmp_35_type 1265 -#define _loop0_36_type 1266 -#define _loop0_37_type 1267 -#define _loop0_38_type 1268 -#define _loop1_39_type 1269 -#define _loop0_40_type 1270 -#define _loop1_41_type 1271 -#define _loop1_42_type 1272 -#define _loop1_43_type 1273 -#define _loop0_44_type 1274 -#define _loop1_45_type 1275 -#define _loop0_46_type 1276 -#define _loop1_47_type 1277 -#define _loop0_48_type 1278 -#define _loop0_49_type 1279 -#define _loop1_50_type 1280 -#define _loop0_52_type 1281 -#define _gather_51_type 1282 -#define _loop0_54_type 1283 -#define _gather_53_type 1284 -#define _loop0_56_type 1285 -#define _gather_55_type 1286 -#define _loop0_58_type 1287 -#define _gather_57_type 1288 -#define _tmp_59_type 1289 -#define _loop1_60_type 1290 -#define _loop1_61_type 1291 -#define _tmp_62_type 1292 -#define _tmp_63_type 1293 -#define _loop1_64_type 1294 -#define _loop0_66_type 1295 -#define _gather_65_type 1296 -#define _tmp_67_type 1297 -#define _tmp_68_type 1298 -#define _tmp_69_type 1299 -#define _tmp_70_type 1300 -#define _loop0_72_type 1301 -#define _gather_71_type 1302 -#define _loop0_74_type 1303 -#define _gather_73_type 1304 -#define _tmp_75_type 1305 -#define _loop0_77_type 1306 -#define _gather_76_type 1307 -#define _loop0_79_type 1308 -#define _gather_78_type 1309 -#define _loop1_80_type 1310 -#define _loop1_81_type 1311 -#define _loop0_83_type 1312 -#define _gather_82_type 1313 -#define _loop1_84_type 1314 -#define _loop1_85_type 1315 -#define _loop1_86_type 1316 -#define _tmp_87_type 1317 -#define _loop0_89_type 1318 -#define _gather_88_type 1319 -#define _tmp_90_type 1320 -#define _tmp_91_type 1321 -#define _tmp_92_type 1322 -#define _tmp_93_type 1323 -#define _tmp_94_type 1324 -#define _loop0_95_type 1325 -#define _loop0_96_type 1326 -#define _loop0_97_type 1327 -#define _loop1_98_type 1328 -#define _loop0_99_type 1329 -#define _loop1_100_type 1330 -#define _loop1_101_type 1331 -#define _loop1_102_type 1332 -#define _loop0_103_type 1333 -#define _loop1_104_type 1334 -#define _loop0_105_type 1335 -#define _loop1_106_type 1336 -#define _loop0_107_type 1337 -#define _loop1_108_type 1338 -#define _loop1_109_type 1339 -#define _tmp_110_type 1340 -#define _loop0_112_type 1341 -#define _gather_111_type 1342 -#define _loop1_113_type 1343 -#define _loop0_114_type 1344 -#define _loop0_115_type 1345 -#define _tmp_116_type 1346 -#define _loop0_118_type 1347 -#define _gather_117_type 1348 -#define _tmp_119_type 1349 -#define _loop0_121_type 1350 -#define _gather_120_type 1351 -#define _loop0_123_type 1352 -#define _gather_122_type 1353 -#define _loop0_125_type 1354 -#define _gather_124_type 1355 -#define _loop0_127_type 1356 -#define _gather_126_type 1357 -#define _loop0_128_type 1358 -#define _loop0_130_type 1359 -#define _gather_129_type 1360 -#define _loop1_131_type 1361 -#define _tmp_132_type 1362 -#define _loop0_134_type 1363 -#define _gather_133_type 1364 -#define _loop0_136_type 1365 -#define _gather_135_type 1366 -#define _loop0_138_type 1367 -#define _gather_137_type 1368 -#define _loop0_140_type 1369 -#define _gather_139_type 1370 -#define _loop0_142_type 1371 -#define _gather_141_type 1372 -#define _tmp_143_type 1373 -#define _tmp_144_type 1374 -#define _tmp_145_type 1375 -#define _tmp_146_type 1376 -#define _tmp_147_type 1377 -#define _tmp_148_type 1378 -#define _tmp_149_type 1379 -#define _tmp_150_type 1380 -#define _tmp_151_type 1381 -#define _tmp_152_type 1382 -#define _tmp_153_type 1383 -#define _loop0_154_type 1384 -#define _loop0_155_type 1385 -#define _loop0_156_type 1386 -#define _tmp_157_type 1387 -#define _tmp_158_type 1388 -#define _tmp_159_type 1389 -#define _tmp_160_type 1390 -#define _tmp_161_type 1391 -#define _loop0_162_type 1392 -#define _loop0_163_type 1393 -#define _loop0_164_type 1394 -#define _loop1_165_type 1395 -#define _tmp_166_type 1396 -#define _loop0_167_type 1397 -#define _tmp_168_type 1398 -#define _loop0_169_type 1399 -#define _loop1_170_type 1400 -#define _tmp_171_type 1401 -#define _tmp_172_type 1402 -#define _tmp_173_type 1403 -#define _loop0_174_type 1404 -#define _tmp_175_type 1405 -#define _tmp_176_type 1406 -#define _loop1_177_type 1407 -#define _tmp_178_type 1408 -#define _loop0_179_type 1409 -#define _loop0_180_type 1410 -#define _loop0_181_type 1411 -#define _loop0_183_type 1412 -#define _gather_182_type 1413 -#define _tmp_184_type 1414 -#define _loop0_185_type 1415 -#define _tmp_186_type 1416 -#define _loop0_187_type 1417 -#define _loop1_188_type 1418 -#define _loop1_189_type 1419 -#define _tmp_190_type 1420 -#define _tmp_191_type 1421 -#define _loop0_192_type 1422 -#define _tmp_193_type 1423 -#define _tmp_194_type 1424 -#define _tmp_195_type 1425 -#define _loop0_197_type 1426 -#define _gather_196_type 1427 -#define _loop0_199_type 1428 -#define _gather_198_type 1429 -#define _loop0_201_type 1430 -#define _gather_200_type 1431 -#define _loop0_203_type 1432 -#define _gather_202_type 1433 -#define _tmp_204_type 1434 -#define _loop0_205_type 1435 -#define _loop1_206_type 1436 -#define _tmp_207_type 1437 -#define _loop0_208_type 1438 -#define _loop1_209_type 1439 -#define _tmp_210_type 1440 -#define _tmp_211_type 1441 -#define _tmp_212_type 1442 -#define _tmp_213_type 1443 -#define _tmp_214_type 1444 -#define _tmp_215_type 1445 -#define _tmp_216_type 1446 -#define _tmp_217_type 1447 -#define _tmp_218_type 1448 -#define _tmp_219_type 1449 -#define _loop0_221_type 1450 -#define _gather_220_type 1451 -#define _tmp_222_type 1452 -#define _tmp_223_type 1453 -#define _tmp_224_type 1454 -#define _tmp_225_type 1455 -#define _tmp_226_type 1456 -#define _tmp_227_type 1457 -#define _tmp_228_type 1458 -#define _tmp_229_type 1459 -#define _tmp_230_type 1460 -#define _tmp_231_type 1461 -#define _tmp_232_type 1462 -#define _tmp_233_type 1463 -#define _tmp_234_type 1464 -#define _tmp_235_type 1465 -#define _tmp_236_type 1466 -#define _tmp_237_type 1467 -#define _tmp_238_type 1468 -#define _tmp_239_type 1469 -#define _tmp_240_type 1470 -#define _tmp_241_type 1471 -#define _tmp_242_type 1472 -#define _tmp_243_type 1473 -#define _tmp_244_type 1474 -#define _tmp_245_type 1475 -#define _tmp_246_type 1476 -#define _tmp_247_type 1477 -#define _tmp_248_type 1478 -#define _tmp_249_type 1479 -#define _tmp_250_type 1480 -#define _tmp_251_type 1481 +#define fstring_middle_type 1147 +#define fstring_replacement_field_type 1148 +#define fstring_conversion_type 1149 +#define fstring_full_format_spec_type 1150 +#define fstring_format_spec_type 1151 +#define string_type 1152 +#define strings_type 1153 +#define list_type 1154 +#define tuple_type 1155 +#define set_type 1156 +#define dict_type 1157 +#define double_starred_kvpairs_type 1158 +#define double_starred_kvpair_type 1159 +#define kvpair_type 1160 +#define for_if_clauses_type 1161 +#define for_if_clause_type 1162 +#define listcomp_type 1163 +#define setcomp_type 1164 +#define genexp_type 1165 +#define dictcomp_type 1166 +#define arguments_type 1167 +#define args_type 1168 +#define kwargs_type 1169 +#define starred_expression_type 1170 +#define kwarg_or_starred_type 1171 +#define kwarg_or_double_starred_type 1172 +#define star_targets_type 1173 +#define star_targets_list_seq_type 1174 +#define star_targets_tuple_seq_type 1175 +#define star_target_type 1176 +#define target_with_star_atom_type 1177 +#define star_atom_type 1178 +#define single_target_type 1179 +#define single_subscript_attribute_target_type 1180 +#define t_primary_type 1181 // Left-recursive +#define t_lookahead_type 1182 +#define del_targets_type 1183 +#define del_target_type 1184 +#define del_t_atom_type 1185 +#define type_expressions_type 1186 +#define func_type_comment_type 1187 +#define invalid_arguments_type 1188 +#define invalid_kwarg_type 1189 +#define expression_without_invalid_type 1190 +#define invalid_legacy_expression_type 1191 +#define invalid_expression_type 1192 +#define invalid_named_expression_type 1193 +#define invalid_assignment_type 1194 +#define invalid_ann_assign_target_type 1195 +#define invalid_del_stmt_type 1196 +#define invalid_block_type 1197 +#define invalid_comprehension_type 1198 +#define invalid_dict_comprehension_type 1199 +#define invalid_parameters_type 1200 +#define invalid_default_type 1201 +#define invalid_star_etc_type 1202 +#define invalid_kwds_type 1203 +#define invalid_parameters_helper_type 1204 +#define invalid_lambda_parameters_type 1205 +#define invalid_lambda_parameters_helper_type 1206 +#define invalid_lambda_star_etc_type 1207 +#define invalid_lambda_kwds_type 1208 +#define invalid_double_type_comments_type 1209 +#define invalid_with_item_type 1210 +#define invalid_for_target_type 1211 +#define invalid_group_type 1212 +#define invalid_import_type 1213 +#define invalid_import_from_targets_type 1214 +#define invalid_with_stmt_type 1215 +#define invalid_with_stmt_indent_type 1216 +#define invalid_try_stmt_type 1217 +#define invalid_except_stmt_type 1218 +#define invalid_finally_stmt_type 1219 +#define invalid_except_stmt_indent_type 1220 +#define invalid_except_star_stmt_indent_type 1221 +#define invalid_match_stmt_type 1222 +#define invalid_case_block_type 1223 +#define invalid_as_pattern_type 1224 +#define invalid_class_pattern_type 1225 +#define invalid_class_argument_pattern_type 1226 +#define invalid_if_stmt_type 1227 +#define invalid_elif_stmt_type 1228 +#define invalid_else_stmt_type 1229 +#define invalid_while_stmt_type 1230 +#define invalid_for_stmt_type 1231 +#define invalid_def_raw_type 1232 +#define invalid_class_def_raw_type 1233 +#define invalid_double_starred_kvpairs_type 1234 +#define invalid_kvpair_type 1235 +#define invalid_starred_expression_type 1236 +#define invalid_replacement_field_type 1237 +#define invalid_conversion_character_type 1238 +#define _loop0_1_type 1239 +#define _loop0_2_type 1240 +#define _loop0_3_type 1241 +#define _loop1_4_type 1242 +#define _loop0_6_type 1243 +#define _gather_5_type 1244 +#define _tmp_7_type 1245 +#define _tmp_8_type 1246 +#define _tmp_9_type 1247 +#define _tmp_10_type 1248 +#define _tmp_11_type 1249 +#define _tmp_12_type 1250 +#define _tmp_13_type 1251 +#define _tmp_14_type 1252 +#define _loop1_15_type 1253 +#define _tmp_16_type 1254 +#define _tmp_17_type 1255 +#define _tmp_18_type 1256 +#define _loop0_20_type 1257 +#define _gather_19_type 1258 +#define _loop0_22_type 1259 +#define _gather_21_type 1260 +#define _tmp_23_type 1261 +#define _tmp_24_type 1262 +#define _loop0_25_type 1263 +#define _loop1_26_type 1264 +#define _loop0_28_type 1265 +#define _gather_27_type 1266 +#define _tmp_29_type 1267 +#define _loop0_31_type 1268 +#define _gather_30_type 1269 +#define _tmp_32_type 1270 +#define _loop1_33_type 1271 +#define _tmp_34_type 1272 +#define _tmp_35_type 1273 +#define _tmp_36_type 1274 +#define _loop0_37_type 1275 +#define _loop0_38_type 1276 +#define _loop0_39_type 1277 +#define _loop1_40_type 1278 +#define _loop0_41_type 1279 +#define _loop1_42_type 1280 +#define _loop1_43_type 1281 +#define _loop1_44_type 1282 +#define _loop0_45_type 1283 +#define _loop1_46_type 1284 +#define _loop0_47_type 1285 +#define _loop1_48_type 1286 +#define _loop0_49_type 1287 +#define _loop0_50_type 1288 +#define _loop1_51_type 1289 +#define _loop0_53_type 1290 +#define _gather_52_type 1291 +#define _loop0_55_type 1292 +#define _gather_54_type 1293 +#define _loop0_57_type 1294 +#define _gather_56_type 1295 +#define _loop0_59_type 1296 +#define _gather_58_type 1297 +#define _tmp_60_type 1298 +#define _loop1_61_type 1299 +#define _loop1_62_type 1300 +#define _tmp_63_type 1301 +#define _tmp_64_type 1302 +#define _loop1_65_type 1303 +#define _loop0_67_type 1304 +#define _gather_66_type 1305 +#define _tmp_68_type 1306 +#define _tmp_69_type 1307 +#define _tmp_70_type 1308 +#define _tmp_71_type 1309 +#define _loop0_73_type 1310 +#define _gather_72_type 1311 +#define _loop0_75_type 1312 +#define _gather_74_type 1313 +#define _tmp_76_type 1314 +#define _loop0_78_type 1315 +#define _gather_77_type 1316 +#define _loop0_80_type 1317 +#define _gather_79_type 1318 +#define _loop1_81_type 1319 +#define _loop1_82_type 1320 +#define _loop0_84_type 1321 +#define _gather_83_type 1322 +#define _loop1_85_type 1323 +#define _loop1_86_type 1324 +#define _loop1_87_type 1325 +#define _tmp_88_type 1326 +#define _loop0_90_type 1327 +#define _gather_89_type 1328 +#define _tmp_91_type 1329 +#define _tmp_92_type 1330 +#define _tmp_93_type 1331 +#define _tmp_94_type 1332 +#define _tmp_95_type 1333 +#define _tmp_96_type 1334 +#define _loop0_97_type 1335 +#define _loop0_98_type 1336 +#define _loop0_99_type 1337 +#define _loop1_100_type 1338 +#define _loop0_101_type 1339 +#define _loop1_102_type 1340 +#define _loop1_103_type 1341 +#define _loop1_104_type 1342 +#define _loop0_105_type 1343 +#define _loop1_106_type 1344 +#define _loop0_107_type 1345 +#define _loop1_108_type 1346 +#define _loop0_109_type 1347 +#define _loop1_110_type 1348 +#define _tmp_111_type 1349 +#define _loop0_112_type 1350 +#define _loop1_113_type 1351 +#define _tmp_114_type 1352 +#define _loop0_116_type 1353 +#define _gather_115_type 1354 +#define _loop1_117_type 1355 +#define _loop0_118_type 1356 +#define _loop0_119_type 1357 +#define _tmp_120_type 1358 +#define _loop0_122_type 1359 +#define _gather_121_type 1360 +#define _tmp_123_type 1361 +#define _loop0_125_type 1362 +#define _gather_124_type 1363 +#define _loop0_127_type 1364 +#define _gather_126_type 1365 +#define _loop0_129_type 1366 +#define _gather_128_type 1367 +#define _loop0_131_type 1368 +#define _gather_130_type 1369 +#define _loop0_132_type 1370 +#define _loop0_134_type 1371 +#define _gather_133_type 1372 +#define _loop1_135_type 1373 +#define _tmp_136_type 1374 +#define _loop0_138_type 1375 +#define _gather_137_type 1376 +#define _loop0_140_type 1377 +#define _gather_139_type 1378 +#define _loop0_142_type 1379 +#define _gather_141_type 1380 +#define _loop0_144_type 1381 +#define _gather_143_type 1382 +#define _loop0_146_type 1383 +#define _gather_145_type 1384 +#define _tmp_147_type 1385 +#define _tmp_148_type 1386 +#define _tmp_149_type 1387 +#define _tmp_150_type 1388 +#define _tmp_151_type 1389 +#define _tmp_152_type 1390 +#define _tmp_153_type 1391 +#define _tmp_154_type 1392 +#define _tmp_155_type 1393 +#define _tmp_156_type 1394 +#define _tmp_157_type 1395 +#define _tmp_158_type 1396 +#define _loop0_159_type 1397 +#define _loop0_160_type 1398 +#define _loop0_161_type 1399 +#define _tmp_162_type 1400 +#define _tmp_163_type 1401 +#define _tmp_164_type 1402 +#define _tmp_165_type 1403 +#define _tmp_166_type 1404 +#define _loop0_167_type 1405 +#define _loop0_168_type 1406 +#define _loop0_169_type 1407 +#define _loop1_170_type 1408 +#define _tmp_171_type 1409 +#define _loop0_172_type 1410 +#define _tmp_173_type 1411 +#define _loop0_174_type 1412 +#define _loop1_175_type 1413 +#define _tmp_176_type 1414 +#define _tmp_177_type 1415 +#define _tmp_178_type 1416 +#define _loop0_179_type 1417 +#define _tmp_180_type 1418 +#define _tmp_181_type 1419 +#define _loop1_182_type 1420 +#define _tmp_183_type 1421 +#define _loop0_184_type 1422 +#define _loop0_185_type 1423 +#define _loop0_186_type 1424 +#define _loop0_188_type 1425 +#define _gather_187_type 1426 +#define _tmp_189_type 1427 +#define _loop0_190_type 1428 +#define _tmp_191_type 1429 +#define _loop0_192_type 1430 +#define _loop1_193_type 1431 +#define _loop1_194_type 1432 +#define _tmp_195_type 1433 +#define _tmp_196_type 1434 +#define _loop0_197_type 1435 +#define _tmp_198_type 1436 +#define _tmp_199_type 1437 +#define _tmp_200_type 1438 +#define _loop0_202_type 1439 +#define _gather_201_type 1440 +#define _loop0_204_type 1441 +#define _gather_203_type 1442 +#define _loop0_206_type 1443 +#define _gather_205_type 1444 +#define _loop0_208_type 1445 +#define _gather_207_type 1446 +#define _tmp_209_type 1447 +#define _loop0_210_type 1448 +#define _loop1_211_type 1449 +#define _tmp_212_type 1450 +#define _loop0_213_type 1451 +#define _loop1_214_type 1452 +#define _tmp_215_type 1453 +#define _tmp_216_type 1454 +#define _tmp_217_type 1455 +#define _tmp_218_type 1456 +#define _tmp_219_type 1457 +#define _tmp_220_type 1458 +#define _tmp_221_type 1459 +#define _tmp_222_type 1460 +#define _tmp_223_type 1461 +#define _tmp_224_type 1462 +#define _loop0_226_type 1463 +#define _gather_225_type 1464 +#define _tmp_227_type 1465 +#define _tmp_228_type 1466 +#define _tmp_229_type 1467 +#define _tmp_230_type 1468 +#define _tmp_231_type 1469 +#define _tmp_232_type 1470 +#define _tmp_233_type 1471 +#define _tmp_234_type 1472 +#define _tmp_235_type 1473 +#define _tmp_236_type 1474 +#define _tmp_237_type 1475 +#define _tmp_238_type 1476 +#define _tmp_239_type 1477 +#define _loop0_240_type 1478 +#define _tmp_241_type 1479 +#define _tmp_242_type 1480 +#define _tmp_243_type 1481 +#define _tmp_244_type 1482 +#define _tmp_245_type 1483 +#define _tmp_246_type 1484 +#define _tmp_247_type 1485 +#define _tmp_248_type 1486 +#define _tmp_249_type 1487 +#define _tmp_250_type 1488 +#define _tmp_251_type 1489 +#define _tmp_252_type 1490 +#define _tmp_253_type 1491 +#define _tmp_254_type 1492 +#define _tmp_255_type 1493 +#define _tmp_256_type 1494 +#define _tmp_257_type 1495 +#define _tmp_258_type 1496 +#define _tmp_259_type 1497 +#define _tmp_260_type 1498 +#define _tmp_261_type 1499 +#define _tmp_262_type 1500 +#define _tmp_263_type 1501 +#define _tmp_264_type 1502 +#define _tmp_265_type 1503 +#define _tmp_266_type 1504 +#define _tmp_267_type 1505 +#define _tmp_268_type 1506 +#define _tmp_269_type 1507 +#define _tmp_270_type 1508 +#define _tmp_271_type 1509 +#define _tmp_272_type 1510 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -707,6 +736,12 @@ static arg_ty lambda_param_no_default_rule(Parser *p); static NameDefaultPair* lambda_param_with_default_rule(Parser *p); static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p); static arg_ty lambda_param_rule(Parser *p); +static expr_ty fstring_middle_rule(Parser *p); +static expr_ty fstring_replacement_field_rule(Parser *p); +static expr_ty fstring_conversion_rule(Parser *p); +static expr_ty fstring_full_format_spec_rule(Parser *p); +static expr_ty fstring_format_spec_rule(Parser *p); +static expr_ty string_rule(Parser *p); static expr_ty strings_rule(Parser *p); static expr_ty list_rule(Parser *p); static expr_ty tuple_rule(Parser *p); @@ -791,12 +826,14 @@ static void *invalid_class_def_raw_rule(Parser *p); static void *invalid_double_starred_kvpairs_rule(Parser *p); static void *invalid_kvpair_rule(Parser *p); static void *invalid_starred_expression_rule(Parser *p); +static void *invalid_replacement_field_rule(Parser *p); +static void *invalid_conversion_character_rule(Parser *p); static asdl_seq *_loop0_1_rule(Parser *p); static asdl_seq *_loop0_2_rule(Parser *p); -static asdl_seq *_loop1_3_rule(Parser *p); -static asdl_seq *_loop0_5_rule(Parser *p); -static asdl_seq *_gather_4_rule(Parser *p); -static void *_tmp_6_rule(Parser *p); +static asdl_seq *_loop0_3_rule(Parser *p); +static asdl_seq *_loop1_4_rule(Parser *p); +static asdl_seq *_loop0_6_rule(Parser *p); +static asdl_seq *_gather_5_rule(Parser *p); static void *_tmp_7_rule(Parser *p); static void *_tmp_8_rule(Parser *p); static void *_tmp_9_rule(Parser *p); @@ -804,139 +841,139 @@ static void *_tmp_10_rule(Parser *p); static void *_tmp_11_rule(Parser *p); static void *_tmp_12_rule(Parser *p); static void *_tmp_13_rule(Parser *p); -static asdl_seq *_loop1_14_rule(Parser *p); -static void *_tmp_15_rule(Parser *p); +static void *_tmp_14_rule(Parser *p); +static asdl_seq *_loop1_15_rule(Parser *p); static void *_tmp_16_rule(Parser *p); static void *_tmp_17_rule(Parser *p); -static asdl_seq *_loop0_19_rule(Parser *p); -static asdl_seq *_gather_18_rule(Parser *p); -static asdl_seq *_loop0_21_rule(Parser *p); -static asdl_seq *_gather_20_rule(Parser *p); -static void *_tmp_22_rule(Parser *p); +static void *_tmp_18_rule(Parser *p); +static asdl_seq *_loop0_20_rule(Parser *p); +static asdl_seq *_gather_19_rule(Parser *p); +static asdl_seq *_loop0_22_rule(Parser *p); +static asdl_seq *_gather_21_rule(Parser *p); static void *_tmp_23_rule(Parser *p); -static asdl_seq *_loop0_24_rule(Parser *p); -static asdl_seq *_loop1_25_rule(Parser *p); -static asdl_seq *_loop0_27_rule(Parser *p); -static asdl_seq *_gather_26_rule(Parser *p); -static void *_tmp_28_rule(Parser *p); -static asdl_seq *_loop0_30_rule(Parser *p); -static asdl_seq *_gather_29_rule(Parser *p); -static void *_tmp_31_rule(Parser *p); -static asdl_seq *_loop1_32_rule(Parser *p); -static void *_tmp_33_rule(Parser *p); +static void *_tmp_24_rule(Parser *p); +static asdl_seq *_loop0_25_rule(Parser *p); +static asdl_seq *_loop1_26_rule(Parser *p); +static asdl_seq *_loop0_28_rule(Parser *p); +static asdl_seq *_gather_27_rule(Parser *p); +static void *_tmp_29_rule(Parser *p); +static asdl_seq *_loop0_31_rule(Parser *p); +static asdl_seq *_gather_30_rule(Parser *p); +static void *_tmp_32_rule(Parser *p); +static asdl_seq *_loop1_33_rule(Parser *p); static void *_tmp_34_rule(Parser *p); static void *_tmp_35_rule(Parser *p); -static asdl_seq *_loop0_36_rule(Parser *p); +static void *_tmp_36_rule(Parser *p); static asdl_seq *_loop0_37_rule(Parser *p); static asdl_seq *_loop0_38_rule(Parser *p); -static asdl_seq *_loop1_39_rule(Parser *p); -static asdl_seq *_loop0_40_rule(Parser *p); -static asdl_seq *_loop1_41_rule(Parser *p); +static asdl_seq *_loop0_39_rule(Parser *p); +static asdl_seq *_loop1_40_rule(Parser *p); +static asdl_seq *_loop0_41_rule(Parser *p); static asdl_seq *_loop1_42_rule(Parser *p); static asdl_seq *_loop1_43_rule(Parser *p); -static asdl_seq *_loop0_44_rule(Parser *p); -static asdl_seq *_loop1_45_rule(Parser *p); -static asdl_seq *_loop0_46_rule(Parser *p); -static asdl_seq *_loop1_47_rule(Parser *p); -static asdl_seq *_loop0_48_rule(Parser *p); +static asdl_seq *_loop1_44_rule(Parser *p); +static asdl_seq *_loop0_45_rule(Parser *p); +static asdl_seq *_loop1_46_rule(Parser *p); +static asdl_seq *_loop0_47_rule(Parser *p); +static asdl_seq *_loop1_48_rule(Parser *p); static asdl_seq *_loop0_49_rule(Parser *p); -static asdl_seq *_loop1_50_rule(Parser *p); -static asdl_seq *_loop0_52_rule(Parser *p); -static asdl_seq *_gather_51_rule(Parser *p); -static asdl_seq *_loop0_54_rule(Parser *p); -static asdl_seq *_gather_53_rule(Parser *p); -static asdl_seq *_loop0_56_rule(Parser *p); -static asdl_seq *_gather_55_rule(Parser *p); -static asdl_seq *_loop0_58_rule(Parser *p); -static asdl_seq *_gather_57_rule(Parser *p); -static void *_tmp_59_rule(Parser *p); -static asdl_seq *_loop1_60_rule(Parser *p); +static asdl_seq *_loop0_50_rule(Parser *p); +static asdl_seq *_loop1_51_rule(Parser *p); +static asdl_seq *_loop0_53_rule(Parser *p); +static asdl_seq *_gather_52_rule(Parser *p); +static asdl_seq *_loop0_55_rule(Parser *p); +static asdl_seq *_gather_54_rule(Parser *p); +static asdl_seq *_loop0_57_rule(Parser *p); +static asdl_seq *_gather_56_rule(Parser *p); +static asdl_seq *_loop0_59_rule(Parser *p); +static asdl_seq *_gather_58_rule(Parser *p); +static void *_tmp_60_rule(Parser *p); static asdl_seq *_loop1_61_rule(Parser *p); -static void *_tmp_62_rule(Parser *p); +static asdl_seq *_loop1_62_rule(Parser *p); static void *_tmp_63_rule(Parser *p); -static asdl_seq *_loop1_64_rule(Parser *p); -static asdl_seq *_loop0_66_rule(Parser *p); -static asdl_seq *_gather_65_rule(Parser *p); -static void *_tmp_67_rule(Parser *p); +static void *_tmp_64_rule(Parser *p); +static asdl_seq *_loop1_65_rule(Parser *p); +static asdl_seq *_loop0_67_rule(Parser *p); +static asdl_seq *_gather_66_rule(Parser *p); static void *_tmp_68_rule(Parser *p); static void *_tmp_69_rule(Parser *p); static void *_tmp_70_rule(Parser *p); -static asdl_seq *_loop0_72_rule(Parser *p); -static asdl_seq *_gather_71_rule(Parser *p); -static asdl_seq *_loop0_74_rule(Parser *p); -static asdl_seq *_gather_73_rule(Parser *p); -static void *_tmp_75_rule(Parser *p); -static asdl_seq *_loop0_77_rule(Parser *p); -static asdl_seq *_gather_76_rule(Parser *p); -static asdl_seq *_loop0_79_rule(Parser *p); -static asdl_seq *_gather_78_rule(Parser *p); -static asdl_seq *_loop1_80_rule(Parser *p); +static void *_tmp_71_rule(Parser *p); +static asdl_seq *_loop0_73_rule(Parser *p); +static asdl_seq *_gather_72_rule(Parser *p); +static asdl_seq *_loop0_75_rule(Parser *p); +static asdl_seq *_gather_74_rule(Parser *p); +static void *_tmp_76_rule(Parser *p); +static asdl_seq *_loop0_78_rule(Parser *p); +static asdl_seq *_gather_77_rule(Parser *p); +static asdl_seq *_loop0_80_rule(Parser *p); +static asdl_seq *_gather_79_rule(Parser *p); static asdl_seq *_loop1_81_rule(Parser *p); -static asdl_seq *_loop0_83_rule(Parser *p); -static asdl_seq *_gather_82_rule(Parser *p); -static asdl_seq *_loop1_84_rule(Parser *p); +static asdl_seq *_loop1_82_rule(Parser *p); +static asdl_seq *_loop0_84_rule(Parser *p); +static asdl_seq *_gather_83_rule(Parser *p); static asdl_seq *_loop1_85_rule(Parser *p); static asdl_seq *_loop1_86_rule(Parser *p); -static void *_tmp_87_rule(Parser *p); -static asdl_seq *_loop0_89_rule(Parser *p); -static asdl_seq *_gather_88_rule(Parser *p); -static void *_tmp_90_rule(Parser *p); +static asdl_seq *_loop1_87_rule(Parser *p); +static void *_tmp_88_rule(Parser *p); +static asdl_seq *_loop0_90_rule(Parser *p); +static asdl_seq *_gather_89_rule(Parser *p); static void *_tmp_91_rule(Parser *p); static void *_tmp_92_rule(Parser *p); static void *_tmp_93_rule(Parser *p); static void *_tmp_94_rule(Parser *p); -static asdl_seq *_loop0_95_rule(Parser *p); -static asdl_seq *_loop0_96_rule(Parser *p); +static void *_tmp_95_rule(Parser *p); +static void *_tmp_96_rule(Parser *p); static asdl_seq *_loop0_97_rule(Parser *p); -static asdl_seq *_loop1_98_rule(Parser *p); +static asdl_seq *_loop0_98_rule(Parser *p); static asdl_seq *_loop0_99_rule(Parser *p); static asdl_seq *_loop1_100_rule(Parser *p); -static asdl_seq *_loop1_101_rule(Parser *p); +static asdl_seq *_loop0_101_rule(Parser *p); static asdl_seq *_loop1_102_rule(Parser *p); -static asdl_seq *_loop0_103_rule(Parser *p); +static asdl_seq *_loop1_103_rule(Parser *p); static asdl_seq *_loop1_104_rule(Parser *p); static asdl_seq *_loop0_105_rule(Parser *p); static asdl_seq *_loop1_106_rule(Parser *p); static asdl_seq *_loop0_107_rule(Parser *p); static asdl_seq *_loop1_108_rule(Parser *p); -static asdl_seq *_loop1_109_rule(Parser *p); -static void *_tmp_110_rule(Parser *p); +static asdl_seq *_loop0_109_rule(Parser *p); +static asdl_seq *_loop1_110_rule(Parser *p); +static void *_tmp_111_rule(Parser *p); static asdl_seq *_loop0_112_rule(Parser *p); -static asdl_seq *_gather_111_rule(Parser *p); static asdl_seq *_loop1_113_rule(Parser *p); -static asdl_seq *_loop0_114_rule(Parser *p); -static asdl_seq *_loop0_115_rule(Parser *p); -static void *_tmp_116_rule(Parser *p); +static void *_tmp_114_rule(Parser *p); +static asdl_seq *_loop0_116_rule(Parser *p); +static asdl_seq *_gather_115_rule(Parser *p); +static asdl_seq *_loop1_117_rule(Parser *p); static asdl_seq *_loop0_118_rule(Parser *p); -static asdl_seq *_gather_117_rule(Parser *p); -static void *_tmp_119_rule(Parser *p); -static asdl_seq *_loop0_121_rule(Parser *p); -static asdl_seq *_gather_120_rule(Parser *p); -static asdl_seq *_loop0_123_rule(Parser *p); -static asdl_seq *_gather_122_rule(Parser *p); +static asdl_seq *_loop0_119_rule(Parser *p); +static void *_tmp_120_rule(Parser *p); +static asdl_seq *_loop0_122_rule(Parser *p); +static asdl_seq *_gather_121_rule(Parser *p); +static void *_tmp_123_rule(Parser *p); static asdl_seq *_loop0_125_rule(Parser *p); static asdl_seq *_gather_124_rule(Parser *p); static asdl_seq *_loop0_127_rule(Parser *p); static asdl_seq *_gather_126_rule(Parser *p); -static asdl_seq *_loop0_128_rule(Parser *p); -static asdl_seq *_loop0_130_rule(Parser *p); -static asdl_seq *_gather_129_rule(Parser *p); -static asdl_seq *_loop1_131_rule(Parser *p); -static void *_tmp_132_rule(Parser *p); +static asdl_seq *_loop0_129_rule(Parser *p); +static asdl_seq *_gather_128_rule(Parser *p); +static asdl_seq *_loop0_131_rule(Parser *p); +static asdl_seq *_gather_130_rule(Parser *p); +static asdl_seq *_loop0_132_rule(Parser *p); static asdl_seq *_loop0_134_rule(Parser *p); static asdl_seq *_gather_133_rule(Parser *p); -static asdl_seq *_loop0_136_rule(Parser *p); -static asdl_seq *_gather_135_rule(Parser *p); +static asdl_seq *_loop1_135_rule(Parser *p); +static void *_tmp_136_rule(Parser *p); static asdl_seq *_loop0_138_rule(Parser *p); static asdl_seq *_gather_137_rule(Parser *p); static asdl_seq *_loop0_140_rule(Parser *p); static asdl_seq *_gather_139_rule(Parser *p); static asdl_seq *_loop0_142_rule(Parser *p); static asdl_seq *_gather_141_rule(Parser *p); -static void *_tmp_143_rule(Parser *p); -static void *_tmp_144_rule(Parser *p); -static void *_tmp_145_rule(Parser *p); -static void *_tmp_146_rule(Parser *p); +static asdl_seq *_loop0_144_rule(Parser *p); +static asdl_seq *_gather_143_rule(Parser *p); +static asdl_seq *_loop0_146_rule(Parser *p); +static asdl_seq *_gather_145_rule(Parser *p); static void *_tmp_147_rule(Parser *p); static void *_tmp_148_rule(Parser *p); static void *_tmp_149_rule(Parser *p); @@ -944,79 +981,79 @@ static void *_tmp_150_rule(Parser *p); static void *_tmp_151_rule(Parser *p); static void *_tmp_152_rule(Parser *p); static void *_tmp_153_rule(Parser *p); -static asdl_seq *_loop0_154_rule(Parser *p); -static asdl_seq *_loop0_155_rule(Parser *p); -static asdl_seq *_loop0_156_rule(Parser *p); +static void *_tmp_154_rule(Parser *p); +static void *_tmp_155_rule(Parser *p); +static void *_tmp_156_rule(Parser *p); static void *_tmp_157_rule(Parser *p); static void *_tmp_158_rule(Parser *p); -static void *_tmp_159_rule(Parser *p); -static void *_tmp_160_rule(Parser *p); -static void *_tmp_161_rule(Parser *p); -static asdl_seq *_loop0_162_rule(Parser *p); -static asdl_seq *_loop0_163_rule(Parser *p); -static asdl_seq *_loop0_164_rule(Parser *p); -static asdl_seq *_loop1_165_rule(Parser *p); +static asdl_seq *_loop0_159_rule(Parser *p); +static asdl_seq *_loop0_160_rule(Parser *p); +static asdl_seq *_loop0_161_rule(Parser *p); +static void *_tmp_162_rule(Parser *p); +static void *_tmp_163_rule(Parser *p); +static void *_tmp_164_rule(Parser *p); +static void *_tmp_165_rule(Parser *p); static void *_tmp_166_rule(Parser *p); static asdl_seq *_loop0_167_rule(Parser *p); -static void *_tmp_168_rule(Parser *p); +static asdl_seq *_loop0_168_rule(Parser *p); static asdl_seq *_loop0_169_rule(Parser *p); static asdl_seq *_loop1_170_rule(Parser *p); static void *_tmp_171_rule(Parser *p); -static void *_tmp_172_rule(Parser *p); +static asdl_seq *_loop0_172_rule(Parser *p); static void *_tmp_173_rule(Parser *p); static asdl_seq *_loop0_174_rule(Parser *p); -static void *_tmp_175_rule(Parser *p); +static asdl_seq *_loop1_175_rule(Parser *p); static void *_tmp_176_rule(Parser *p); -static asdl_seq *_loop1_177_rule(Parser *p); +static void *_tmp_177_rule(Parser *p); static void *_tmp_178_rule(Parser *p); static asdl_seq *_loop0_179_rule(Parser *p); -static asdl_seq *_loop0_180_rule(Parser *p); -static asdl_seq *_loop0_181_rule(Parser *p); -static asdl_seq *_loop0_183_rule(Parser *p); -static asdl_seq *_gather_182_rule(Parser *p); -static void *_tmp_184_rule(Parser *p); +static void *_tmp_180_rule(Parser *p); +static void *_tmp_181_rule(Parser *p); +static asdl_seq *_loop1_182_rule(Parser *p); +static void *_tmp_183_rule(Parser *p); +static asdl_seq *_loop0_184_rule(Parser *p); static asdl_seq *_loop0_185_rule(Parser *p); -static void *_tmp_186_rule(Parser *p); -static asdl_seq *_loop0_187_rule(Parser *p); -static asdl_seq *_loop1_188_rule(Parser *p); -static asdl_seq *_loop1_189_rule(Parser *p); -static void *_tmp_190_rule(Parser *p); +static asdl_seq *_loop0_186_rule(Parser *p); +static asdl_seq *_loop0_188_rule(Parser *p); +static asdl_seq *_gather_187_rule(Parser *p); +static void *_tmp_189_rule(Parser *p); +static asdl_seq *_loop0_190_rule(Parser *p); static void *_tmp_191_rule(Parser *p); static asdl_seq *_loop0_192_rule(Parser *p); -static void *_tmp_193_rule(Parser *p); -static void *_tmp_194_rule(Parser *p); +static asdl_seq *_loop1_193_rule(Parser *p); +static asdl_seq *_loop1_194_rule(Parser *p); static void *_tmp_195_rule(Parser *p); +static void *_tmp_196_rule(Parser *p); static asdl_seq *_loop0_197_rule(Parser *p); -static asdl_seq *_gather_196_rule(Parser *p); -static asdl_seq *_loop0_199_rule(Parser *p); -static asdl_seq *_gather_198_rule(Parser *p); -static asdl_seq *_loop0_201_rule(Parser *p); -static asdl_seq *_gather_200_rule(Parser *p); -static asdl_seq *_loop0_203_rule(Parser *p); -static asdl_seq *_gather_202_rule(Parser *p); -static void *_tmp_204_rule(Parser *p); -static asdl_seq *_loop0_205_rule(Parser *p); -static asdl_seq *_loop1_206_rule(Parser *p); -static void *_tmp_207_rule(Parser *p); +static void *_tmp_198_rule(Parser *p); +static void *_tmp_199_rule(Parser *p); +static void *_tmp_200_rule(Parser *p); +static asdl_seq *_loop0_202_rule(Parser *p); +static asdl_seq *_gather_201_rule(Parser *p); +static asdl_seq *_loop0_204_rule(Parser *p); +static asdl_seq *_gather_203_rule(Parser *p); +static asdl_seq *_loop0_206_rule(Parser *p); +static asdl_seq *_gather_205_rule(Parser *p); static asdl_seq *_loop0_208_rule(Parser *p); -static asdl_seq *_loop1_209_rule(Parser *p); -static void *_tmp_210_rule(Parser *p); -static void *_tmp_211_rule(Parser *p); +static asdl_seq *_gather_207_rule(Parser *p); +static void *_tmp_209_rule(Parser *p); +static asdl_seq *_loop0_210_rule(Parser *p); +static asdl_seq *_loop1_211_rule(Parser *p); static void *_tmp_212_rule(Parser *p); -static void *_tmp_213_rule(Parser *p); -static void *_tmp_214_rule(Parser *p); +static asdl_seq *_loop0_213_rule(Parser *p); +static asdl_seq *_loop1_214_rule(Parser *p); static void *_tmp_215_rule(Parser *p); static void *_tmp_216_rule(Parser *p); static void *_tmp_217_rule(Parser *p); static void *_tmp_218_rule(Parser *p); static void *_tmp_219_rule(Parser *p); -static asdl_seq *_loop0_221_rule(Parser *p); -static asdl_seq *_gather_220_rule(Parser *p); +static void *_tmp_220_rule(Parser *p); +static void *_tmp_221_rule(Parser *p); static void *_tmp_222_rule(Parser *p); static void *_tmp_223_rule(Parser *p); static void *_tmp_224_rule(Parser *p); -static void *_tmp_225_rule(Parser *p); -static void *_tmp_226_rule(Parser *p); +static asdl_seq *_loop0_226_rule(Parser *p); +static asdl_seq *_gather_225_rule(Parser *p); static void *_tmp_227_rule(Parser *p); static void *_tmp_228_rule(Parser *p); static void *_tmp_229_rule(Parser *p); @@ -1030,7 +1067,7 @@ static void *_tmp_236_rule(Parser *p); static void *_tmp_237_rule(Parser *p); static void *_tmp_238_rule(Parser *p); static void *_tmp_239_rule(Parser *p); -static void *_tmp_240_rule(Parser *p); +static asdl_seq *_loop0_240_rule(Parser *p); static void *_tmp_241_rule(Parser *p); static void *_tmp_242_rule(Parser *p); static void *_tmp_243_rule(Parser *p); @@ -1042,6 +1079,27 @@ static void *_tmp_248_rule(Parser *p); static void *_tmp_249_rule(Parser *p); static void *_tmp_250_rule(Parser *p); static void *_tmp_251_rule(Parser *p); +static void *_tmp_252_rule(Parser *p); +static void *_tmp_253_rule(Parser *p); +static void *_tmp_254_rule(Parser *p); +static void *_tmp_255_rule(Parser *p); +static void *_tmp_256_rule(Parser *p); +static void *_tmp_257_rule(Parser *p); +static void *_tmp_258_rule(Parser *p); +static void *_tmp_259_rule(Parser *p); +static void *_tmp_260_rule(Parser *p); +static void *_tmp_261_rule(Parser *p); +static void *_tmp_262_rule(Parser *p); +static void *_tmp_263_rule(Parser *p); +static void *_tmp_264_rule(Parser *p); +static void *_tmp_265_rule(Parser *p); +static void *_tmp_266_rule(Parser *p); +static void *_tmp_267_rule(Parser *p); +static void *_tmp_268_rule(Parser *p); +static void *_tmp_269_rule(Parser *p); +static void *_tmp_270_rule(Parser *p); +static void *_tmp_271_rule(Parser *p); +static void *_tmp_272_rule(Parser *p); // file: statements? $ @@ -1247,7 +1305,7 @@ func_type_rule(Parser *p) return _res; } -// fstring: star_expressions +// fstring: FSTRING_START fstring_middle* FSTRING_END static expr_ty fstring_rule(Parser *p) { @@ -1261,24 +1319,35 @@ fstring_rule(Parser *p) } expr_ty _res = NULL; int _mark = p->mark; - { // star_expressions + { // FSTRING_START fstring_middle* FSTRING_END if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); - expr_ty star_expressions_var; + D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END")); + Token * a; + asdl_seq * b; + Token * c; if ( - (star_expressions_var = star_expressions_rule(p)) // star_expressions + (a = _PyPegen_expect_token(p, FSTRING_START)) // token='FSTRING_START' + && + (b = _loop0_3_rule(p)) // fstring_middle* + && + (c = _PyPegen_expect_token(p, FSTRING_END)) // token='FSTRING_END' ) { - D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); - _res = star_expressions_var; + D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END")); + _res = _PyPegen_joined_str ( p , a , ( asdl_expr_seq* ) b , c ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } goto done; } p->mark = _mark; D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END")); } _res = NULL; done: @@ -1308,7 +1377,7 @@ statements_rule(Parser *p) D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+")); asdl_seq * a; if ( - (a = _loop1_3_rule(p)) // statement+ + (a = _loop1_4_rule(p)) // statement+ ) { D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+")); @@ -1584,7 +1653,7 @@ simple_stmts_rule(Parser *p) asdl_stmt_seq* a; Token * newline_var; if ( - (a = (asdl_stmt_seq*)_gather_4_rule(p)) // ';'.simple_stmt+ + (a = (asdl_stmt_seq*)_gather_5_rule(p)) // ';'.simple_stmt+ && (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator) // ';'? && @@ -1731,7 +1800,7 @@ simple_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt")); stmt_ty import_stmt_var; if ( - _PyPegen_lookahead(1, _tmp_6_rule, p) + _PyPegen_lookahead(1, _tmp_7_rule, p) && (import_stmt_var = import_stmt_rule(p)) // import_stmt ) @@ -1806,7 +1875,7 @@ simple_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt")); stmt_ty del_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 603) // token='del' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 604) // token='del' && (del_stmt_var = del_stmt_rule(p)) // del_stmt ) @@ -2006,7 +2075,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def")); stmt_ty function_def_var; if ( - _PyPegen_lookahead(1, _tmp_7_rule, p) + _PyPegen_lookahead(1, _tmp_8_rule, p) && (function_def_var = function_def_rule(p)) // function_def ) @@ -2027,7 +2096,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt")); stmt_ty if_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 641) // token='if' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 642) // token='if' && (if_stmt_var = if_stmt_rule(p)) // if_stmt ) @@ -2048,7 +2117,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def")); stmt_ty class_def_var; if ( - _PyPegen_lookahead(1, _tmp_8_rule, p) + _PyPegen_lookahead(1, _tmp_9_rule, p) && (class_def_var = class_def_rule(p)) // class_def ) @@ -2069,7 +2138,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt")); stmt_ty with_stmt_var; if ( - _PyPegen_lookahead(1, _tmp_9_rule, p) + _PyPegen_lookahead(1, _tmp_10_rule, p) && (with_stmt_var = with_stmt_rule(p)) // with_stmt ) @@ -2090,7 +2159,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt")); stmt_ty for_stmt_var; if ( - _PyPegen_lookahead(1, _tmp_10_rule, p) + _PyPegen_lookahead(1, _tmp_11_rule, p) && (for_stmt_var = for_stmt_rule(p)) // for_stmt ) @@ -2111,7 +2180,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt")); stmt_ty try_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 623) // token='try' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 624) // token='try' && (try_stmt_var = try_stmt_rule(p)) // try_stmt ) @@ -2132,7 +2201,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt")); stmt_ty while_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 646) // token='while' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 647) // token='while' && (while_stmt_var = while_stmt_rule(p)) // while_stmt ) @@ -2215,7 +2284,7 @@ assignment_rule(Parser *p) && (b = expression_rule(p)) // expression && - (c = _tmp_11_rule(p), !p->error_indicator) // ['=' annotated_rhs] + (c = _tmp_12_rule(p), !p->error_indicator) // ['=' annotated_rhs] ) { D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]")); @@ -2251,13 +2320,13 @@ assignment_rule(Parser *p) expr_ty b; void *c; if ( - (a = _tmp_12_rule(p)) // '(' single_target ')' | single_subscript_attribute_target + (a = _tmp_13_rule(p)) // '(' single_target ')' | single_subscript_attribute_target && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && (b = expression_rule(p)) // expression && - (c = _tmp_13_rule(p), !p->error_indicator) // ['=' annotated_rhs] + (c = _tmp_14_rule(p), !p->error_indicator) // ['=' annotated_rhs] ) { D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]")); @@ -2292,9 +2361,9 @@ assignment_rule(Parser *p) void *b; void *tc; if ( - (a = (asdl_expr_seq*)_loop1_14_rule(p)) // ((star_targets '='))+ + (a = (asdl_expr_seq*)_loop1_15_rule(p)) // ((star_targets '='))+ && - (b = _tmp_15_rule(p)) // yield_expr | star_expressions + (b = _tmp_16_rule(p)) // yield_expr | star_expressions && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' && @@ -2340,7 +2409,7 @@ assignment_rule(Parser *p) && (_cut_var = 1) && - (c = _tmp_16_rule(p)) // yield_expr | star_expressions + (c = _tmp_17_rule(p)) // yield_expr | star_expressions ) { D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)")); @@ -2899,7 +2968,7 @@ raise_stmt_rule(Parser *p) && (a = expression_rule(p)) // expression && - (b = _tmp_17_rule(p), !p->error_indicator) // ['from' expression] + (b = _tmp_18_rule(p), !p->error_indicator) // ['from' expression] ) { D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]")); @@ -2997,7 +3066,7 @@ global_stmt_rule(Parser *p) if ( (_keyword = _PyPegen_expect_token(p, 523)) // token='global' && - (a = (asdl_expr_seq*)_gather_18_rule(p)) // ','.NAME+ + (a = (asdl_expr_seq*)_gather_19_rule(p)) // ','.NAME+ ) { D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+")); @@ -3062,7 +3131,7 @@ nonlocal_stmt_rule(Parser *p) if ( (_keyword = _PyPegen_expect_token(p, 524)) // token='nonlocal' && - (a = (asdl_expr_seq*)_gather_20_rule(p)) // ','.NAME+ + (a = (asdl_expr_seq*)_gather_21_rule(p)) // ','.NAME+ ) { D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+")); @@ -3125,11 +3194,11 @@ del_stmt_rule(Parser *p) Token * _keyword; asdl_expr_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 603)) // token='del' + (_keyword = _PyPegen_expect_token(p, 604)) // token='del' && (a = del_targets_rule(p)) // del_targets && - _PyPegen_lookahead(1, _tmp_22_rule, p) + _PyPegen_lookahead(1, _tmp_23_rule, p) ) { D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)")); @@ -3278,7 +3347,7 @@ assert_stmt_rule(Parser *p) && (a = expression_rule(p)) // expression && - (b = _tmp_23_rule(p), !p->error_indicator) // [',' expression] + (b = _tmp_24_rule(p), !p->error_indicator) // [',' expression] ) { D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]")); @@ -3418,7 +3487,7 @@ import_name_rule(Parser *p) Token * _keyword; asdl_alias_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 606)) // token='import' + (_keyword = _PyPegen_expect_token(p, 607)) // token='import' && (a = dotted_as_names_rule(p)) // dotted_as_names ) @@ -3488,13 +3557,13 @@ import_from_rule(Parser *p) expr_ty b; asdl_alias_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 607)) // token='from' + (_keyword = _PyPegen_expect_token(p, 608)) // token='from' && - (a = _loop0_24_rule(p)) // (('.' | '...'))* + (a = _loop0_25_rule(p)) // (('.' | '...'))* && (b = dotted_name_rule(p)) // dotted_name && - (_keyword_1 = _PyPegen_expect_token(p, 606)) // token='import' + (_keyword_1 = _PyPegen_expect_token(p, 607)) // token='import' && (c = import_from_targets_rule(p)) // import_from_targets ) @@ -3532,11 +3601,11 @@ import_from_rule(Parser *p) asdl_seq * a; asdl_alias_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 607)) // token='from' + (_keyword = _PyPegen_expect_token(p, 608)) // token='from' && - (a = _loop1_25_rule(p)) // (('.' | '...'))+ + (a = _loop1_26_rule(p)) // (('.' | '...'))+ && - (_keyword_1 = _PyPegen_expect_token(p, 606)) // token='import' + (_keyword_1 = _PyPegen_expect_token(p, 607)) // token='import' && (b = import_from_targets_rule(p)) // import_from_targets ) @@ -3731,7 +3800,7 @@ import_from_as_names_rule(Parser *p) D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+")); asdl_alias_seq* a; if ( - (a = (asdl_alias_seq*)_gather_26_rule(p)) // ','.import_from_as_name+ + (a = (asdl_alias_seq*)_gather_27_rule(p)) // ','.import_from_as_name+ ) { D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+")); @@ -3787,7 +3856,7 @@ import_from_as_name_rule(Parser *p) if ( (a = _PyPegen_name_token(p)) // NAME && - (b = _tmp_28_rule(p), !p->error_indicator) // ['as' NAME] + (b = _tmp_29_rule(p), !p->error_indicator) // ['as' NAME] ) { D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]")); @@ -3840,7 +3909,7 @@ dotted_as_names_rule(Parser *p) D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+")); asdl_alias_seq* a; if ( - (a = (asdl_alias_seq*)_gather_29_rule(p)) // ','.dotted_as_name+ + (a = (asdl_alias_seq*)_gather_30_rule(p)) // ','.dotted_as_name+ ) { D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+")); @@ -3896,7 +3965,7 @@ dotted_as_name_rule(Parser *p) if ( (a = dotted_name_rule(p)) // dotted_name && - (b = _tmp_31_rule(p), !p->error_indicator) // ['as' NAME] + (b = _tmp_32_rule(p), !p->error_indicator) // ['as' NAME] ) { D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]")); @@ -4151,7 +4220,7 @@ decorators_rule(Parser *p) D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+")); asdl_expr_seq* a; if ( - (a = (asdl_expr_seq*)_loop1_32_rule(p)) // (('@' named_expression NEWLINE))+ + (a = (asdl_expr_seq*)_loop1_33_rule(p)) // (('@' named_expression NEWLINE))+ ) { D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+")); @@ -4293,11 +4362,11 @@ class_def_raw_rule(Parser *p) void *b; asdl_stmt_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 653)) // token='class' + (_keyword = _PyPegen_expect_token(p, 654)) // token='class' && (a = _PyPegen_name_token(p)) // NAME && - (b = _tmp_33_rule(p), !p->error_indicator) // ['(' arguments? ')'] + (b = _tmp_34_rule(p), !p->error_indicator) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -4459,7 +4528,7 @@ function_def_raw_rule(Parser *p) void *params; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 651)) // token='def' + (_keyword = _PyPegen_expect_token(p, 652)) // token='def' && (n = _PyPegen_name_token(p)) // NAME && @@ -4469,7 +4538,7 @@ function_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (a = _tmp_34_rule(p), !p->error_indicator) // ['->' expression] + (a = _tmp_35_rule(p), !p->error_indicator) // ['->' expression] && (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -4519,7 +4588,7 @@ function_def_raw_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 651)) // token='def' + (_keyword = _PyPegen_expect_token(p, 652)) // token='def' && (n = _PyPegen_name_token(p)) // NAME && @@ -4529,7 +4598,7 @@ function_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (a = _tmp_35_rule(p), !p->error_indicator) // ['->' expression] + (a = _tmp_36_rule(p), !p->error_indicator) // ['->' expression] && (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -4656,9 +4725,9 @@ parameters_rule(Parser *p) if ( (a = slash_no_default_rule(p)) // slash_no_default && - (b = (asdl_arg_seq*)_loop0_36_rule(p)) // param_no_default* + (b = (asdl_arg_seq*)_loop0_37_rule(p)) // param_no_default* && - (c = _loop0_37_rule(p)) // param_with_default* + (c = _loop0_38_rule(p)) // param_with_default* && (d = star_etc_rule(p), !p->error_indicator) // star_etc? ) @@ -4688,7 +4757,7 @@ parameters_rule(Parser *p) if ( (a = slash_with_default_rule(p)) // slash_with_default && - (b = _loop0_38_rule(p)) // param_with_default* + (b = _loop0_39_rule(p)) // param_with_default* && (c = star_etc_rule(p), !p->error_indicator) // star_etc? ) @@ -4716,9 +4785,9 @@ parameters_rule(Parser *p) asdl_seq * b; void *c; if ( - (a = (asdl_arg_seq*)_loop1_39_rule(p)) // param_no_default+ + (a = (asdl_arg_seq*)_loop1_40_rule(p)) // param_no_default+ && - (b = _loop0_40_rule(p)) // param_with_default* + (b = _loop0_41_rule(p)) // param_with_default* && (c = star_etc_rule(p), !p->error_indicator) // star_etc? ) @@ -4745,7 +4814,7 @@ parameters_rule(Parser *p) asdl_seq * a; void *b; if ( - (a = _loop1_41_rule(p)) // param_with_default+ + (a = _loop1_42_rule(p)) // param_with_default+ && (b = star_etc_rule(p), !p->error_indicator) // star_etc? ) @@ -4817,7 +4886,7 @@ slash_no_default_rule(Parser *p) Token * _literal_1; asdl_arg_seq* a; if ( - (a = (asdl_arg_seq*)_loop1_42_rule(p)) // param_no_default+ + (a = (asdl_arg_seq*)_loop1_43_rule(p)) // param_no_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -4846,7 +4915,7 @@ slash_no_default_rule(Parser *p) Token * _literal; asdl_arg_seq* a; if ( - (a = (asdl_arg_seq*)_loop1_43_rule(p)) // param_no_default+ + (a = (asdl_arg_seq*)_loop1_44_rule(p)) // param_no_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -4899,9 +4968,9 @@ slash_with_default_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _loop0_44_rule(p)) // param_no_default* + (a = _loop0_45_rule(p)) // param_no_default* && - (b = _loop1_45_rule(p)) // param_with_default+ + (b = _loop1_46_rule(p)) // param_with_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -4931,9 +5000,9 @@ slash_with_default_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _loop0_46_rule(p)) // param_no_default* + (a = _loop0_47_rule(p)) // param_no_default* && - (b = _loop1_47_rule(p)) // param_with_default+ + (b = _loop1_48_rule(p)) // param_with_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -5012,7 +5081,7 @@ star_etc_rule(Parser *p) && (a = param_no_default_rule(p)) // param_no_default && - (b = _loop0_48_rule(p)) // param_maybe_default* + (b = _loop0_49_rule(p)) // param_maybe_default* && (c = kwds_rule(p), !p->error_indicator) // kwds? ) @@ -5045,7 +5114,7 @@ star_etc_rule(Parser *p) && (a = param_no_default_star_annotation_rule(p)) // param_no_default_star_annotation && - (b = _loop0_49_rule(p)) // param_maybe_default* + (b = _loop0_50_rule(p)) // param_maybe_default* && (c = kwds_rule(p), !p->error_indicator) // kwds? ) @@ -5078,7 +5147,7 @@ star_etc_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 12)) // token=',' && - (b = _loop1_50_rule(p)) // param_maybe_default+ + (b = _loop1_51_rule(p)) // param_maybe_default+ && (c = kwds_rule(p), !p->error_indicator) // kwds? ) @@ -5871,7 +5940,7 @@ if_stmt_rule(Parser *p) asdl_stmt_seq* b; stmt_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (a = named_expression_rule(p)) // named_expression && @@ -5916,7 +5985,7 @@ if_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (a = named_expression_rule(p)) // named_expression && @@ -6012,7 +6081,7 @@ elif_stmt_rule(Parser *p) asdl_stmt_seq* b; stmt_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 643)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 644)) // token='elif' && (a = named_expression_rule(p)) // named_expression && @@ -6057,7 +6126,7 @@ elif_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 643)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 644)) // token='elif' && (a = named_expression_rule(p)) // named_expression && @@ -6139,7 +6208,7 @@ else_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 644)) // token='else' + (_keyword = _PyPegen_expect_token(p, 645)) // token='else' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6219,7 +6288,7 @@ while_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 646)) // token='while' + (_keyword = _PyPegen_expect_token(p, 647)) // token='while' && (a = named_expression_rule(p)) // named_expression && @@ -6320,11 +6389,11 @@ for_stmt_rule(Parser *p) expr_ty t; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='for' + (_keyword = _PyPegen_expect_token(p, 650)) // token='for' && (t = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 651)) // token='in' && (_cut_var = 1) && @@ -6384,11 +6453,11 @@ for_stmt_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 649)) // token='for' + (_keyword = _PyPegen_expect_token(p, 650)) // token='for' && (t = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 651)) // token='in' && (_cut_var = 1) && @@ -6517,11 +6586,11 @@ with_stmt_rule(Parser *p) asdl_withitem_seq* a; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 614)) // token='with' + (_keyword = _PyPegen_expect_token(p, 615)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = (asdl_withitem_seq*)_gather_51_rule(p)) // ','.with_item+ + (a = (asdl_withitem_seq*)_gather_52_rule(p)) // ','.with_item+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? && @@ -6566,9 +6635,9 @@ with_stmt_rule(Parser *p) asdl_stmt_seq* b; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 614)) // token='with' + (_keyword = _PyPegen_expect_token(p, 615)) // token='with' && - (a = (asdl_withitem_seq*)_gather_53_rule(p)) // ','.with_item+ + (a = (asdl_withitem_seq*)_gather_54_rule(p)) // ','.with_item+ && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -6617,11 +6686,11 @@ with_stmt_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 614)) // token='with' + (_keyword = _PyPegen_expect_token(p, 615)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = (asdl_withitem_seq*)_gather_55_rule(p)) // ','.with_item+ + (a = (asdl_withitem_seq*)_gather_56_rule(p)) // ','.with_item+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? && @@ -6669,9 +6738,9 @@ with_stmt_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 614)) // token='with' + (_keyword = _PyPegen_expect_token(p, 615)) // token='with' && - (a = (asdl_withitem_seq*)_gather_57_rule(p)) // ','.with_item+ + (a = (asdl_withitem_seq*)_gather_58_rule(p)) // ','.with_item+ && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -6756,11 +6825,11 @@ with_item_rule(Parser *p) if ( (e = expression_rule(p)) // expression && - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (t = star_target_rule(p)) // star_target && - _PyPegen_lookahead(1, _tmp_59_rule, p) + _PyPegen_lookahead(1, _tmp_60_rule, p) ) { D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')")); @@ -6882,7 +6951,7 @@ try_stmt_rule(Parser *p) asdl_stmt_seq* b; asdl_stmt_seq* f; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='try' + (_keyword = _PyPegen_expect_token(p, 624)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6926,13 +6995,13 @@ try_stmt_rule(Parser *p) asdl_excepthandler_seq* ex; void *f; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='try' + (_keyword = _PyPegen_expect_token(p, 624)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && (b = block_rule(p)) // block && - (ex = (asdl_excepthandler_seq*)_loop1_60_rule(p)) // except_block+ + (ex = (asdl_excepthandler_seq*)_loop1_61_rule(p)) // except_block+ && (el = else_block_rule(p), !p->error_indicator) // else_block? && @@ -6974,13 +7043,13 @@ try_stmt_rule(Parser *p) asdl_excepthandler_seq* ex; void *f; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='try' + (_keyword = _PyPegen_expect_token(p, 624)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && (b = block_rule(p)) // block && - (ex = (asdl_excepthandler_seq*)_loop1_61_rule(p)) // except_star_block+ + (ex = (asdl_excepthandler_seq*)_loop1_62_rule(p)) // except_star_block+ && (el = else_block_rule(p), !p->error_indicator) // else_block? && @@ -7073,11 +7142,11 @@ except_block_rule(Parser *p) expr_ty e; void *t; if ( - (_keyword = _PyPegen_expect_token(p, 636)) // token='except' + (_keyword = _PyPegen_expect_token(p, 637)) // token='except' && (e = expression_rule(p)) // expression && - (t = _tmp_62_rule(p), !p->error_indicator) // ['as' NAME] + (t = _tmp_63_rule(p), !p->error_indicator) // ['as' NAME] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -7116,7 +7185,7 @@ except_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 636)) // token='except' + (_keyword = _PyPegen_expect_token(p, 637)) // token='except' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -7228,13 +7297,13 @@ except_star_block_rule(Parser *p) expr_ty e; void *t; if ( - (_keyword = _PyPegen_expect_token(p, 636)) // token='except' + (_keyword = _PyPegen_expect_token(p, 637)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && (e = expression_rule(p)) // expression && - (t = _tmp_63_rule(p), !p->error_indicator) // ['as' NAME] + (t = _tmp_64_rule(p), !p->error_indicator) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -7331,7 +7400,7 @@ finally_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 632)) // token='finally' + (_keyword = _PyPegen_expect_token(p, 633)) // token='finally' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -7406,7 +7475,7 @@ match_stmt_rule(Parser *p) && (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT' && - (cases = (asdl_match_case_seq*)_loop1_64_rule(p)) // case_block+ + (cases = (asdl_match_case_seq*)_loop1_65_rule(p)) // case_block+ && (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT' ) @@ -7643,7 +7712,7 @@ guard_rule(Parser *p) Token * _keyword; expr_ty guard; if ( - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (guard = named_expression_rule(p)) // named_expression ) @@ -7841,7 +7910,7 @@ as_pattern_rule(Parser *p) if ( (pattern = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (target = pattern_capture_target_rule(p)) // pattern_capture_target ) @@ -7924,7 +7993,7 @@ or_pattern_rule(Parser *p) D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+")); asdl_pattern_seq* patterns; if ( - (patterns = (asdl_pattern_seq*)_gather_65_rule(p)) // '|'.closed_pattern+ + (patterns = (asdl_pattern_seq*)_gather_66_rule(p)) // '|'.closed_pattern+ ) { D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+")); @@ -8179,7 +8248,7 @@ literal_pattern_rule(Parser *p) if ( (value = signed_number_rule(p)) // signed_number && - _PyPegen_lookahead(0, _tmp_67_rule, p) + _PyPegen_lookahead(0, _tmp_68_rule, p) ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')")); @@ -8278,7 +8347,7 @@ literal_pattern_rule(Parser *p) D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 601)) // token='None' + (_keyword = _PyPegen_expect_token(p, 602)) // token='None' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -8311,7 +8380,7 @@ literal_pattern_rule(Parser *p) D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 600)) // token='True' + (_keyword = _PyPegen_expect_token(p, 601)) // token='True' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -8344,7 +8413,7 @@ literal_pattern_rule(Parser *p) D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 602)) // token='False' + (_keyword = _PyPegen_expect_token(p, 603)) // token='False' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -8414,7 +8483,7 @@ literal_expr_rule(Parser *p) if ( (signed_number_var = signed_number_rule(p)) // signed_number && - _PyPegen_lookahead(0, _tmp_68_rule, p) + _PyPegen_lookahead(0, _tmp_69_rule, p) ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')")); @@ -8471,7 +8540,7 @@ literal_expr_rule(Parser *p) D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 601)) // token='None' + (_keyword = _PyPegen_expect_token(p, 602)) // token='None' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -8504,7 +8573,7 @@ literal_expr_rule(Parser *p) D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 600)) // token='True' + (_keyword = _PyPegen_expect_token(p, 601)) // token='True' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -8537,7 +8606,7 @@ literal_expr_rule(Parser *p) D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 602)) // token='False' + (_keyword = _PyPegen_expect_token(p, 603)) // token='False' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -9021,7 +9090,7 @@ pattern_capture_target_rule(Parser *p) && (name = _PyPegen_name_token(p)) // NAME && - _PyPegen_lookahead(0, _tmp_69_rule, p) + _PyPegen_lookahead(0, _tmp_70_rule, p) ) { D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')")); @@ -9138,7 +9207,7 @@ value_pattern_rule(Parser *p) if ( (attr = attr_rule(p)) // attr && - _PyPegen_lookahead(0, _tmp_70_rule, p) + _PyPegen_lookahead(0, _tmp_71_rule, p) ) { D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')")); @@ -9564,7 +9633,7 @@ maybe_sequence_pattern_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * patterns; if ( - (patterns = _gather_71_rule(p)) // ','.maybe_star_pattern+ + (patterns = _gather_72_rule(p)) // ','.maybe_star_pattern+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -9976,13 +10045,13 @@ items_pattern_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+")); - asdl_seq * _gather_73_var; + asdl_seq * _gather_74_var; if ( - (_gather_73_var = _gather_73_rule(p)) // ','.key_value_pattern+ + (_gather_74_var = _gather_74_rule(p)) // ','.key_value_pattern+ ) { D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+")); - _res = _gather_73_var; + _res = _gather_74_var; goto done; } p->mark = _mark; @@ -10019,7 +10088,7 @@ key_value_pattern_rule(Parser *p) void *key; pattern_ty pattern; if ( - (key = _tmp_75_rule(p)) // literal_expr | attr + (key = _tmp_76_rule(p)) // literal_expr | attr && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -10350,7 +10419,7 @@ positional_patterns_rule(Parser *p) D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+")); asdl_pattern_seq* args; if ( - (args = (asdl_pattern_seq*)_gather_76_rule(p)) // ','.pattern+ + (args = (asdl_pattern_seq*)_gather_77_rule(p)) // ','.pattern+ ) { D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+")); @@ -10392,13 +10461,13 @@ keyword_patterns_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+")); - asdl_seq * _gather_78_var; + asdl_seq * _gather_79_var; if ( - (_gather_78_var = _gather_78_rule(p)) // ','.keyword_pattern+ + (_gather_79_var = _gather_79_rule(p)) // ','.keyword_pattern+ ) { D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+")); - _res = _gather_78_var; + _res = _gather_79_var; goto done; } p->mark = _mark; @@ -10497,7 +10566,7 @@ expressions_rule(Parser *p) if ( (a = expression_rule(p)) // expression && - (b = _loop1_80_rule(p)) // ((',' expression))+ + (b = _loop1_81_rule(p)) // ((',' expression))+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -10669,11 +10738,11 @@ expression_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 644)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 645)) // token='else' && (c = expression_rule(p)) // expression ) @@ -10780,7 +10849,7 @@ yield_expr_rule(Parser *p) if ( (_keyword = _PyPegen_expect_token(p, 573)) // token='yield' && - (_keyword_1 = _PyPegen_expect_token(p, 607)) // token='from' + (_keyword_1 = _PyPegen_expect_token(p, 608)) // token='from' && (a = expression_rule(p)) // expression ) @@ -10888,7 +10957,7 @@ star_expressions_rule(Parser *p) if ( (a = star_expression_rule(p)) // star_expression && - (b = _loop1_81_rule(p)) // ((',' star_expression))+ + (b = _loop1_82_rule(p)) // ((',' star_expression))+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -11089,7 +11158,7 @@ star_named_expressions_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_expr_seq* a; if ( - (a = (asdl_expr_seq*)_gather_82_rule(p)) // ','.star_named_expression+ + (a = (asdl_expr_seq*)_gather_83_rule(p)) // ','.star_named_expression+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -11389,7 +11458,7 @@ disjunction_rule(Parser *p) if ( (a = conjunction_rule(p)) // conjunction && - (b = _loop1_84_rule(p)) // (('or' conjunction))+ + (b = _loop1_85_rule(p)) // (('or' conjunction))+ ) { D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+")); @@ -11478,7 +11547,7 @@ conjunction_rule(Parser *p) if ( (a = inversion_rule(p)) // inversion && - (b = _loop1_85_rule(p)) // (('and' inversion))+ + (b = _loop1_86_rule(p)) // (('and' inversion))+ ) { D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+")); @@ -11652,7 +11721,7 @@ comparison_rule(Parser *p) if ( (a = bitwise_or_rule(p)) // bitwise_or && - (b = _loop1_86_rule(p)) // compare_op_bitwise_or_pair+ + (b = _loop1_87_rule(p)) // compare_op_bitwise_or_pair+ ) { D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+")); @@ -11989,10 +12058,10 @@ noteq_bitwise_or_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or")); - void *_tmp_87_var; + void *_tmp_88_var; expr_ty a; if ( - (_tmp_87_var = _tmp_87_rule(p)) // '!=' + (_tmp_88_var = _tmp_88_rule(p)) // '!=' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -12230,7 +12299,7 @@ notin_bitwise_or_rule(Parser *p) if ( (_keyword = _PyPegen_expect_token(p, 581)) // token='not' && - (_keyword_1 = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 651)) // token='in' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -12277,7 +12346,7 @@ in_bitwise_or_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword = _PyPegen_expect_token(p, 651)) // token='in' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -14027,7 +14096,7 @@ slices_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_expr_seq* a; if ( - (a = (asdl_expr_seq*)_gather_88_rule(p)) // ','.(slice | starred_expression)+ + (a = (asdl_expr_seq*)_gather_89_rule(p)) // ','.(slice | starred_expression)+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -14100,7 +14169,7 @@ slice_rule(Parser *p) && (b = expression_rule(p), !p->error_indicator) // expression? && - (c = _tmp_90_rule(p), !p->error_indicator) // [':' expression?] + (c = _tmp_91_rule(p), !p->error_indicator) // [':' expression?] ) { D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]")); @@ -14160,7 +14229,7 @@ slice_rule(Parser *p) // | 'True' // | 'False' // | 'None' -// | &STRING strings +// | &(STRING | FSTRING_START) strings // | NUMBER // | &'(' (tuple | group | genexp) // | &'[' (list | listcomp) @@ -14215,7 +14284,7 @@ atom_rule(Parser *p) D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 600)) // token='True' + (_keyword = _PyPegen_expect_token(p, 601)) // token='True' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -14248,7 +14317,7 @@ atom_rule(Parser *p) D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 602)) // token='False' + (_keyword = _PyPegen_expect_token(p, 603)) // token='False' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -14281,7 +14350,7 @@ atom_rule(Parser *p) D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 601)) // token='None' + (_keyword = _PyPegen_expect_token(p, 602)) // token='None' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -14306,26 +14375,26 @@ atom_rule(Parser *p) D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'")); } - { // &STRING strings + { // &(STRING | FSTRING_START) strings if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&STRING strings")); + D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START) strings")); expr_ty strings_var; if ( - _PyPegen_lookahead(1, _PyPegen_string_token, p) + _PyPegen_lookahead(1, _tmp_92_rule, p) && (strings_var = strings_rule(p)) // strings ) { - D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&STRING strings")); + D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START) strings")); _res = strings_var; goto done; } p->mark = _mark; D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&STRING strings")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START) strings")); } { // NUMBER if (p->error_indicator) { @@ -14352,15 +14421,15 @@ atom_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)")); - void *_tmp_91_var; + void *_tmp_93_var; if ( _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='(' && - (_tmp_91_var = _tmp_91_rule(p)) // tuple | group | genexp + (_tmp_93_var = _tmp_93_rule(p)) // tuple | group | genexp ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)")); - _res = _tmp_91_var; + _res = _tmp_93_var; goto done; } p->mark = _mark; @@ -14373,15 +14442,15 @@ atom_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)")); - void *_tmp_92_var; + void *_tmp_94_var; if ( _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='[' && - (_tmp_92_var = _tmp_92_rule(p)) // list | listcomp + (_tmp_94_var = _tmp_94_rule(p)) // list | listcomp ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)")); - _res = _tmp_92_var; + _res = _tmp_94_var; goto done; } p->mark = _mark; @@ -14394,15 +14463,15 @@ atom_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)")); - void *_tmp_93_var; + void *_tmp_95_var; if ( _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{' && - (_tmp_93_var = _tmp_93_rule(p)) // dict | set | dictcomp | setcomp + (_tmp_95_var = _tmp_95_rule(p)) // dict | set | dictcomp | setcomp ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)")); - _res = _tmp_93_var; + _res = _tmp_95_var; goto done; } p->mark = _mark; @@ -14474,7 +14543,7 @@ group_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = _tmp_94_rule(p)) // yield_expr | named_expression + (a = _tmp_96_rule(p)) // yield_expr | named_expression && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) @@ -14551,7 +14620,7 @@ lambdef_rule(Parser *p) void *a; expr_ty b; if ( - (_keyword = _PyPegen_expect_token(p, 586)) // token='lambda' + (_keyword = _PyPegen_expect_token(p, 600)) // token='lambda' && (a = lambda_params_rule(p), !p->error_indicator) // lambda_params? && @@ -14678,9 +14747,9 @@ lambda_parameters_rule(Parser *p) if ( (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default && - (b = (asdl_arg_seq*)_loop0_95_rule(p)) // lambda_param_no_default* + (b = (asdl_arg_seq*)_loop0_97_rule(p)) // lambda_param_no_default* && - (c = _loop0_96_rule(p)) // lambda_param_with_default* + (c = _loop0_98_rule(p)) // lambda_param_with_default* && (d = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc? ) @@ -14710,7 +14779,7 @@ lambda_parameters_rule(Parser *p) if ( (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default && - (b = _loop0_97_rule(p)) // lambda_param_with_default* + (b = _loop0_99_rule(p)) // lambda_param_with_default* && (c = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc? ) @@ -14738,9 +14807,9 @@ lambda_parameters_rule(Parser *p) asdl_seq * b; void *c; if ( - (a = (asdl_arg_seq*)_loop1_98_rule(p)) // lambda_param_no_default+ + (a = (asdl_arg_seq*)_loop1_100_rule(p)) // lambda_param_no_default+ && - (b = _loop0_99_rule(p)) // lambda_param_with_default* + (b = _loop0_101_rule(p)) // lambda_param_with_default* && (c = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc? ) @@ -14767,7 +14836,7 @@ lambda_parameters_rule(Parser *p) asdl_seq * a; void *b; if ( - (a = _loop1_100_rule(p)) // lambda_param_with_default+ + (a = _loop1_102_rule(p)) // lambda_param_with_default+ && (b = lambda_star_etc_rule(p), !p->error_indicator) // lambda_star_etc? ) @@ -14841,7 +14910,7 @@ lambda_slash_no_default_rule(Parser *p) Token * _literal_1; asdl_arg_seq* a; if ( - (a = (asdl_arg_seq*)_loop1_101_rule(p)) // lambda_param_no_default+ + (a = (asdl_arg_seq*)_loop1_103_rule(p)) // lambda_param_no_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -14870,7 +14939,7 @@ lambda_slash_no_default_rule(Parser *p) Token * _literal; asdl_arg_seq* a; if ( - (a = (asdl_arg_seq*)_loop1_102_rule(p)) // lambda_param_no_default+ + (a = (asdl_arg_seq*)_loop1_104_rule(p)) // lambda_param_no_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -14923,9 +14992,9 @@ lambda_slash_with_default_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _loop0_103_rule(p)) // lambda_param_no_default* + (a = _loop0_105_rule(p)) // lambda_param_no_default* && - (b = _loop1_104_rule(p)) // lambda_param_with_default+ + (b = _loop1_106_rule(p)) // lambda_param_with_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -14955,9 +15024,9 @@ lambda_slash_with_default_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _loop0_105_rule(p)) // lambda_param_no_default* + (a = _loop0_107_rule(p)) // lambda_param_no_default* && - (b = _loop1_106_rule(p)) // lambda_param_with_default+ + (b = _loop1_108_rule(p)) // lambda_param_with_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -15035,7 +15104,7 @@ lambda_star_etc_rule(Parser *p) && (a = lambda_param_no_default_rule(p)) // lambda_param_no_default && - (b = _loop0_107_rule(p)) // lambda_param_maybe_default* + (b = _loop0_109_rule(p)) // lambda_param_maybe_default* && (c = lambda_kwds_rule(p), !p->error_indicator) // lambda_kwds? ) @@ -15068,7 +15137,7 @@ lambda_star_etc_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 12)) // token=',' && - (b = _loop1_108_rule(p)) // lambda_param_maybe_default+ + (b = _loop1_110_rule(p)) // lambda_param_maybe_default+ && (c = lambda_kwds_rule(p), !p->error_indicator) // lambda_kwds? ) @@ -15475,7 +15544,387 @@ lambda_param_rule(Parser *p) return _res; } -// strings: STRING+ +// fstring_middle: fstring_replacement_field | FSTRING_MIDDLE +static expr_ty +fstring_middle_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + expr_ty _res = NULL; + int _mark = p->mark; + { // fstring_replacement_field + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field")); + expr_ty fstring_replacement_field_var; + if ( + (fstring_replacement_field_var = fstring_replacement_field_rule(p)) // fstring_replacement_field + ) + { + D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field")); + _res = fstring_replacement_field_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field")); + } + { // FSTRING_MIDDLE + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE")); + Token * t; + if ( + (t = _PyPegen_expect_token(p, FSTRING_MIDDLE)) // token='FSTRING_MIDDLE' + ) + { + D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE")); + _res = _PyPegen_constant_from_token ( p , t ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// fstring_replacement_field: +// | '{' (yield_expr | star_expressions) "="? fstring_conversion? fstring_full_format_spec? '}' +// | invalid_replacement_field +static expr_ty +fstring_replacement_field_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + expr_ty _res = NULL; + int _mark = p->mark; + if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { + p->error_indicator = 1; + p->level--; + return NULL; + } + int _start_lineno = p->tokens[_mark]->lineno; + UNUSED(_start_lineno); // Only used by EXTRA macro + int _start_col_offset = p->tokens[_mark]->col_offset; + UNUSED(_start_col_offset); // Only used by EXTRA macro + { // '{' (yield_expr | star_expressions) "="? fstring_conversion? fstring_full_format_spec? '}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) \"=\"? fstring_conversion? fstring_full_format_spec? '}'")); + Token * _literal; + Token * _literal_1; + void *a; + void *conversion; + void *debug_expr; + void *format; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (a = _tmp_111_rule(p)) // yield_expr | star_expressions + && + (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator) // "="? + && + (conversion = fstring_conversion_rule(p), !p->error_indicator) // fstring_conversion? + && + (format = fstring_full_format_spec_rule(p), !p->error_indicator) // fstring_full_format_spec? + && + (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}' + ) + { + D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) \"=\"? fstring_conversion? fstring_full_format_spec? '}'")); + Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); + if (_token == NULL) { + p->level--; + return NULL; + } + int _end_lineno = _token->end_lineno; + UNUSED(_end_lineno); // Only used by EXTRA macro + int _end_col_offset = _token->end_col_offset; + UNUSED(_end_col_offset); // Only used by EXTRA macro + _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , EXTRA ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' (yield_expr | star_expressions) \"=\"? fstring_conversion? fstring_full_format_spec? '}'")); + } + if (p->call_invalid_rules) { // invalid_replacement_field + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_replacement_field")); + void *invalid_replacement_field_var; + if ( + (invalid_replacement_field_var = invalid_replacement_field_rule(p)) // invalid_replacement_field + ) + { + D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_replacement_field")); + _res = invalid_replacement_field_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_replacement_field")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// fstring_conversion: "!" NAME +static expr_ty +fstring_conversion_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + expr_ty _res = NULL; + int _mark = p->mark; + { // "!" NAME + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_conversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"!\" NAME")); + expr_ty conv; + Token * conv_token; + if ( + (conv_token = _PyPegen_expect_token(p, 54)) // token='!' + && + (conv = _PyPegen_name_token(p)) // NAME + ) + { + D(fprintf(stderr, "%*c+ fstring_conversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"!\" NAME")); + _res = _PyPegen_check_fstring_conversion ( p , conv_token , conv ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_conversion[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"!\" NAME")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// fstring_full_format_spec: ':' fstring_format_spec* +static expr_ty +fstring_full_format_spec_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + expr_ty _res = NULL; + int _mark = p->mark; + if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { + p->error_indicator = 1; + p->level--; + return NULL; + } + int _start_lineno = p->tokens[_mark]->lineno; + UNUSED(_start_lineno); // Only used by EXTRA macro + int _start_col_offset = p->tokens[_mark]->col_offset; + UNUSED(_start_col_offset); // Only used by EXTRA macro + { // ':' fstring_format_spec* + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*")); + Token * _literal; + asdl_seq * spec; + if ( + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + && + (spec = _loop0_112_rule(p)) // fstring_format_spec* + ) + { + D(fprintf(stderr, "%*c+ fstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*")); + Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); + if (_token == NULL) { + p->level--; + return NULL; + } + int _end_lineno = _token->end_lineno; + UNUSED(_end_lineno); // Only used by EXTRA macro + int _end_col_offset = _token->end_col_offset; + UNUSED(_end_col_offset); // Only used by EXTRA macro + _res = spec ? _PyAST_JoinedStr ( ( asdl_expr_seq* ) spec , EXTRA ) : NULL; + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' fstring_format_spec*")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// fstring_format_spec: FSTRING_MIDDLE | fstring_replacement_field +static expr_ty +fstring_format_spec_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + expr_ty _res = NULL; + int _mark = p->mark; + { // FSTRING_MIDDLE + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE")); + Token * t; + if ( + (t = _PyPegen_expect_token(p, FSTRING_MIDDLE)) // token='FSTRING_MIDDLE' + ) + { + D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE")); + _res = _PyPegen_constant_from_token ( p , t ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE")); + } + { // fstring_replacement_field + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field")); + expr_ty fstring_replacement_field_var; + if ( + (fstring_replacement_field_var = fstring_replacement_field_rule(p)) // fstring_replacement_field + ) + { + D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field")); + _res = fstring_replacement_field_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// string: STRING +static expr_ty +string_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + expr_ty _res = NULL; + int _mark = p->mark; + { // STRING + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> string[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING")); + Token* s; + if ( + (s = (Token*)_PyPegen_string_token(p)) // STRING + ) + { + D(fprintf(stderr, "%*c+ string[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING")); + _res = _PyPegen_constant_from_string ( p , s ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s string[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// strings: ((fstring | string))+ static expr_ty strings_rule(Parser *p) { @@ -15493,19 +15942,37 @@ strings_rule(Parser *p) return _res; } int _mark = p->mark; - { // STRING+ + if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { + p->error_indicator = 1; + p->level--; + return NULL; + } + int _start_lineno = p->tokens[_mark]->lineno; + UNUSED(_start_lineno); // Only used by EXTRA macro + int _start_col_offset = p->tokens[_mark]->col_offset; + UNUSED(_start_col_offset); // Only used by EXTRA macro + { // ((fstring | string))+ if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+")); - asdl_seq * a; + D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string))+")); + asdl_expr_seq* a; if ( - (a = _loop1_109_rule(p)) // STRING+ + (a = (asdl_expr_seq*)_loop1_113_rule(p)) // ((fstring | string))+ ) { - D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+")); - _res = _PyPegen_concatenate_strings ( p , a ); + D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string))+")); + Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); + if (_token == NULL) { + p->level--; + return NULL; + } + int _end_lineno = _token->end_lineno; + UNUSED(_end_lineno); // Only used by EXTRA macro + int _end_col_offset = _token->end_col_offset; + UNUSED(_end_col_offset); // Only used by EXTRA macro + _res = _PyPegen_concatenate_strings ( p , a , EXTRA ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; p->level--; @@ -15515,7 +15982,7 @@ strings_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING+")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string))+")); } _res = NULL; done: @@ -15627,7 +16094,7 @@ tuple_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = _tmp_110_rule(p), !p->error_indicator) // [star_named_expression ',' star_named_expressions?] + (a = _tmp_114_rule(p), !p->error_indicator) // [star_named_expression ',' star_named_expressions?] && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) @@ -15845,7 +16312,7 @@ double_starred_kvpairs_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_seq * a; if ( - (a = _gather_111_rule(p)) // ','.double_starred_kvpair+ + (a = _gather_115_rule(p)) // ','.double_starred_kvpair+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -16007,7 +16474,7 @@ for_if_clauses_rule(Parser *p) D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+")); asdl_comprehension_seq* a; if ( - (a = (asdl_comprehension_seq*)_loop1_113_rule(p)) // for_if_clause+ + (a = (asdl_comprehension_seq*)_loop1_117_rule(p)) // for_if_clause+ ) { D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+")); @@ -16062,17 +16529,17 @@ for_if_clause_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 649)) // token='for' + (_keyword = _PyPegen_expect_token(p, 650)) // token='for' && (a = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 651)) // token='in' && (_cut_var = 1) && (b = disjunction_rule(p)) // disjunction && - (c = (asdl_expr_seq*)_loop0_114_rule(p)) // (('if' disjunction))* + (c = (asdl_expr_seq*)_loop0_118_rule(p)) // (('if' disjunction))* ) { D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*")); @@ -16105,17 +16572,17 @@ for_if_clause_rule(Parser *p) expr_ty b; asdl_expr_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='for' + (_keyword = _PyPegen_expect_token(p, 650)) // token='for' && (a = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 651)) // token='in' && (_cut_var = 1) && (b = disjunction_rule(p)) // disjunction && - (c = (asdl_expr_seq*)_loop0_115_rule(p)) // (('if' disjunction))* + (c = (asdl_expr_seq*)_loop0_119_rule(p)) // (('if' disjunction))* ) { D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*")); @@ -16378,7 +16845,7 @@ genexp_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (a = _tmp_116_rule(p)) // assignment_expression | expression !':=' + (a = _tmp_120_rule(p)) // assignment_expression | expression !':=' && (b = for_if_clauses_rule(p)) // for_if_clauses && @@ -16630,9 +17097,9 @@ args_rule(Parser *p) asdl_expr_seq* a; void *b; if ( - (a = (asdl_expr_seq*)_gather_117_rule(p)) // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ + (a = (asdl_expr_seq*)_gather_121_rule(p)) // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ && - (b = _tmp_119_rule(p), !p->error_indicator) // [',' kwargs] + (b = _tmp_123_rule(p), !p->error_indicator) // [',' kwargs] ) { D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]")); @@ -16723,11 +17190,11 @@ kwargs_rule(Parser *p) asdl_seq * a; asdl_seq * b; if ( - (a = _gather_120_rule(p)) // ','.kwarg_or_starred+ + (a = _gather_124_rule(p)) // ','.kwarg_or_starred+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (b = _gather_122_rule(p)) // ','.kwarg_or_double_starred+ + (b = _gather_126_rule(p)) // ','.kwarg_or_double_starred+ ) { D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+")); @@ -16749,13 +17216,13 @@ kwargs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+")); - asdl_seq * _gather_124_var; + asdl_seq * _gather_128_var; if ( - (_gather_124_var = _gather_124_rule(p)) // ','.kwarg_or_starred+ + (_gather_128_var = _gather_128_rule(p)) // ','.kwarg_or_starred+ ) { D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+")); - _res = _gather_124_var; + _res = _gather_128_var; goto done; } p->mark = _mark; @@ -16768,13 +17235,13 @@ kwargs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+")); - asdl_seq * _gather_126_var; + asdl_seq * _gather_130_var; if ( - (_gather_126_var = _gather_126_rule(p)) // ','.kwarg_or_double_starred+ + (_gather_130_var = _gather_130_rule(p)) // ','.kwarg_or_double_starred+ ) { D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+")); - _res = _gather_126_var; + _res = _gather_130_var; goto done; } p->mark = _mark; @@ -17167,7 +17634,7 @@ star_targets_rule(Parser *p) if ( (a = star_target_rule(p)) // star_target && - (b = _loop0_128_rule(p)) // ((',' star_target))* + (b = _loop0_132_rule(p)) // ((',' star_target))* && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -17224,7 +17691,7 @@ star_targets_list_seq_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_expr_seq* a; if ( - (a = (asdl_expr_seq*)_gather_129_rule(p)) // ','.star_target+ + (a = (asdl_expr_seq*)_gather_133_rule(p)) // ','.star_target+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -17275,7 +17742,7 @@ star_targets_tuple_seq_rule(Parser *p) if ( (a = star_target_rule(p)) // star_target && - (b = _loop1_131_rule(p)) // ((',' star_target))+ + (b = _loop1_135_rule(p)) // ((',' star_target))+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -17364,7 +17831,7 @@ star_target_rule(Parser *p) if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (a = _tmp_132_rule(p)) // !'*' star_target + (a = _tmp_136_rule(p)) // !'*' star_target ) { D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)")); @@ -18295,7 +18762,7 @@ del_targets_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings asdl_expr_seq* a; if ( - (a = (asdl_expr_seq*)_gather_133_rule(p)) // ','.del_target+ + (a = (asdl_expr_seq*)_gather_137_rule(p)) // ','.del_target+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? ) @@ -18656,7 +19123,7 @@ type_expressions_rule(Parser *p) expr_ty b; expr_ty c; if ( - (a = _gather_135_rule(p)) // ','.expression+ + (a = _gather_139_rule(p)) // ','.expression+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -18695,7 +19162,7 @@ type_expressions_rule(Parser *p) asdl_seq * a; expr_ty b; if ( - (a = _gather_137_rule(p)) // ','.expression+ + (a = _gather_141_rule(p)) // ','.expression+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -18728,7 +19195,7 @@ type_expressions_rule(Parser *p) asdl_seq * a; expr_ty b; if ( - (a = _gather_139_rule(p)) // ','.expression+ + (a = _gather_143_rule(p)) // ','.expression+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -18848,7 +19315,7 @@ type_expressions_rule(Parser *p) D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+")); asdl_expr_seq* a; if ( - (a = (asdl_expr_seq*)_gather_141_rule(p)) // ','.expression+ + (a = (asdl_expr_seq*)_gather_145_rule(p)) // ','.expression+ ) { D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+")); @@ -18900,7 +19367,7 @@ func_type_comment_rule(Parser *p) && (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT' && - _PyPegen_lookahead(1, _tmp_143_rule, p) + _PyPegen_lookahead(1, _tmp_147_rule, p) ) { D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)")); @@ -19029,7 +19496,7 @@ invalid_arguments_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_opt_var = _tmp_144_rule(p), !p->error_indicator) // [args | expression for_if_clauses] + (_opt_var = _tmp_148_rule(p), !p->error_indicator) // [args | expression for_if_clauses] ) { D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]")); @@ -19089,13 +19556,13 @@ invalid_arguments_rule(Parser *p) expr_ty a; Token * b; if ( - (_opt_var = _tmp_145_rule(p), !p->error_indicator) // [(args ',')] + (_opt_var = _tmp_149_rule(p), !p->error_indicator) // [(args ',')] && (a = _PyPegen_name_token(p)) // NAME && (b = _PyPegen_expect_token(p, 22)) // token='=' && - _PyPegen_lookahead(1, _tmp_146_rule, p) + _PyPegen_lookahead(1, _tmp_150_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')")); @@ -19234,7 +19701,7 @@ invalid_kwarg_rule(Parser *p) Token* a; Token * b; if ( - (a = (Token*)_tmp_147_rule(p)) // 'True' | 'False' | 'None' + (a = (Token*)_tmp_151_rule(p)) // 'True' | 'False' | 'None' && (b = _PyPegen_expect_token(p, 22)) // token='=' ) @@ -19294,7 +19761,7 @@ invalid_kwarg_rule(Parser *p) expr_ty a; Token * b; if ( - _PyPegen_lookahead(0, _tmp_148_rule, p) + _PyPegen_lookahead(0, _tmp_152_rule, p) && (a = expression_rule(p)) // expression && @@ -19398,11 +19865,11 @@ expression_without_invalid_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 644)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 645)) // token='else' && (c = expression_rule(p)) // expression ) @@ -19530,6 +19997,7 @@ invalid_legacy_expression_rule(Parser *p) // invalid_expression: // | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid // | disjunction 'if' disjunction !('else' | ':') +// | 'lambda' lambda_params? ':' &(FSTRING_MIDDLE | fstring_replacement_field) static void * invalid_expression_rule(Parser *p) { @@ -19552,7 +20020,7 @@ invalid_expression_rule(Parser *p) expr_ty a; expr_ty b; if ( - _PyPegen_lookahead(0, _tmp_149_rule, p) + _PyPegen_lookahead(0, _tmp_153_rule, p) && (a = disjunction_rule(p)) // disjunction && @@ -19584,11 +20052,11 @@ invalid_expression_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (b = disjunction_rule(p)) // disjunction && - _PyPegen_lookahead(0, _tmp_150_rule, p) + _PyPegen_lookahead(0, _tmp_154_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')")); @@ -19604,6 +20072,39 @@ invalid_expression_rule(Parser *p) D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')")); } + { // 'lambda' lambda_params? ':' &(FSTRING_MIDDLE | fstring_replacement_field) + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &(FSTRING_MIDDLE | fstring_replacement_field)")); + void *_opt_var; + UNUSED(_opt_var); // Silence compiler warnings + Token * a; + Token * b; + if ( + (a = _PyPegen_expect_token(p, 600)) // token='lambda' + && + (_opt_var = lambda_params_rule(p), !p->error_indicator) // lambda_params? + && + (b = _PyPegen_expect_token(p, 11)) // token=':' + && + _PyPegen_lookahead(1, _tmp_155_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &(FSTRING_MIDDLE | fstring_replacement_field)")); + _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "f-string: lambda expressions are not allowed without parentheses" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &(FSTRING_MIDDLE | fstring_replacement_field)")); + } _res = NULL; done: p->level--; @@ -19677,7 +20178,7 @@ invalid_named_expression_rule(Parser *p) && (b = bitwise_or_rule(p)) // bitwise_or && - _PyPegen_lookahead(0, _tmp_151_rule, p) + _PyPegen_lookahead(0, _tmp_156_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')")); @@ -19703,7 +20204,7 @@ invalid_named_expression_rule(Parser *p) Token * b; expr_ty bitwise_or_var; if ( - _PyPegen_lookahead(0, _tmp_152_rule, p) + _PyPegen_lookahead(0, _tmp_157_rule, p) && (a = bitwise_or_rule(p)) // bitwise_or && @@ -19711,7 +20212,7 @@ invalid_named_expression_rule(Parser *p) && (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or && - _PyPegen_lookahead(0, _tmp_153_rule, p) + _PyPegen_lookahead(0, _tmp_158_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')")); @@ -19792,7 +20293,7 @@ invalid_assignment_rule(Parser *p) D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression")); Token * _literal; Token * _literal_1; - asdl_seq * _loop0_154_var; + asdl_seq * _loop0_159_var; expr_ty a; expr_ty expression_var; if ( @@ -19800,7 +20301,7 @@ invalid_assignment_rule(Parser *p) && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_loop0_154_var = _loop0_154_rule(p)) // star_named_expressions* + (_loop0_159_var = _loop0_159_rule(p)) // star_named_expressions* && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -19857,10 +20358,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='")); Token * _literal; - asdl_seq * _loop0_155_var; + asdl_seq * _loop0_160_var; expr_ty a; if ( - (_loop0_155_var = _loop0_155_rule(p)) // ((star_targets '='))* + (_loop0_160_var = _loop0_160_rule(p)) // ((star_targets '='))* && (a = star_expressions_rule(p)) // star_expressions && @@ -19887,10 +20388,10 @@ invalid_assignment_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='")); Token * _literal; - asdl_seq * _loop0_156_var; + asdl_seq * _loop0_161_var; expr_ty a; if ( - (_loop0_156_var = _loop0_156_rule(p)) // ((star_targets '='))* + (_loop0_161_var = _loop0_161_rule(p)) // ((star_targets '='))* && (a = yield_expr_rule(p)) // yield_expr && @@ -19916,7 +20417,7 @@ invalid_assignment_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); - void *_tmp_157_var; + void *_tmp_162_var; expr_ty a; AugOperator* augassign_var; if ( @@ -19924,7 +20425,7 @@ invalid_assignment_rule(Parser *p) && (augassign_var = augassign_rule(p)) // augassign && - (_tmp_157_var = _tmp_157_rule(p)) // yield_expr | star_expressions + (_tmp_162_var = _tmp_162_rule(p)) // yield_expr | star_expressions ) { D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)")); @@ -20057,7 +20558,7 @@ invalid_del_stmt_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 603)) // token='del' + (_keyword = _PyPegen_expect_token(p, 604)) // token='del' && (a = star_expressions_rule(p)) // star_expressions ) @@ -20150,11 +20651,11 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses")); - void *_tmp_158_var; + void *_tmp_163_var; expr_ty a; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_158_var = _tmp_158_rule(p)) // '[' | '(' | '{' + (_tmp_163_var = _tmp_163_rule(p)) // '[' | '(' | '{' && (a = starred_expression_rule(p)) // starred_expression && @@ -20181,12 +20682,12 @@ invalid_comprehension_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses")); Token * _literal; - void *_tmp_159_var; + void *_tmp_164_var; expr_ty a; asdl_expr_seq* b; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_159_var = _tmp_159_rule(p)) // '[' | '{' + (_tmp_164_var = _tmp_164_rule(p)) // '[' | '{' && (a = star_named_expression_rule(p)) // star_named_expression && @@ -20216,12 +20717,12 @@ invalid_comprehension_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses")); - void *_tmp_160_var; + void *_tmp_165_var; expr_ty a; Token * b; asdl_comprehension_seq* for_if_clauses_var; if ( - (_tmp_160_var = _tmp_160_rule(p)) // '[' | '{' + (_tmp_165_var = _tmp_165_rule(p)) // '[' | '{' && (a = star_named_expression_rule(p)) // star_named_expression && @@ -20358,13 +20859,13 @@ invalid_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'")); - asdl_seq * _loop0_162_var; - void *_tmp_161_var; + asdl_seq * _loop0_167_var; + void *_tmp_166_var; Token * a; if ( - (_tmp_161_var = _tmp_161_rule(p)) // slash_no_default | slash_with_default + (_tmp_166_var = _tmp_166_rule(p)) // slash_no_default | slash_with_default && - (_loop0_162_var = _loop0_162_rule(p)) // param_maybe_default* + (_loop0_167_var = _loop0_167_rule(p)) // param_maybe_default* && (a = _PyPegen_expect_token(p, 17)) // token='/' ) @@ -20388,7 +20889,7 @@ invalid_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default")); - asdl_seq * _loop0_163_var; + asdl_seq * _loop0_168_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings arg_ty a; @@ -20396,7 +20897,7 @@ invalid_parameters_rule(Parser *p) if ( (_opt_var = slash_no_default_rule(p), !p->error_indicator) // slash_no_default? && - (_loop0_163_var = _loop0_163_rule(p)) // param_no_default* + (_loop0_168_var = _loop0_168_rule(p)) // param_no_default* && (invalid_parameters_helper_var = invalid_parameters_helper_rule(p)) // invalid_parameters_helper && @@ -20422,18 +20923,18 @@ invalid_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'")); - asdl_seq * _loop0_164_var; - asdl_seq * _loop1_165_var; + asdl_seq * _loop0_169_var; + asdl_seq * _loop1_170_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings Token * a; Token * b; if ( - (_loop0_164_var = _loop0_164_rule(p)) // param_no_default* + (_loop0_169_var = _loop0_169_rule(p)) // param_no_default* && (a = _PyPegen_expect_token(p, 7)) // token='(' && - (_loop1_165_var = _loop1_165_rule(p)) // param_no_default+ + (_loop1_170_var = _loop1_170_rule(p)) // param_no_default+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? && @@ -20460,22 +20961,22 @@ invalid_parameters_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'")); Token * _literal; - asdl_seq * _loop0_167_var; - asdl_seq * _loop0_169_var; + asdl_seq * _loop0_172_var; + asdl_seq * _loop0_174_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings - void *_tmp_168_var; + void *_tmp_173_var; Token * a; if ( - (_opt_var = _tmp_166_rule(p), !p->error_indicator) // [(slash_no_default | slash_with_default)] + (_opt_var = _tmp_171_rule(p), !p->error_indicator) // [(slash_no_default | slash_with_default)] && - (_loop0_167_var = _loop0_167_rule(p)) // param_maybe_default* + (_loop0_172_var = _loop0_172_rule(p)) // param_maybe_default* && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_168_var = _tmp_168_rule(p)) // ',' | param_no_default + (_tmp_173_var = _tmp_173_rule(p)) // ',' | param_no_default && - (_loop0_169_var = _loop0_169_rule(p)) // param_maybe_default* + (_loop0_174_var = _loop0_174_rule(p)) // param_maybe_default* && (a = _PyPegen_expect_token(p, 17)) // token='/' ) @@ -20500,10 +21001,10 @@ invalid_parameters_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'")); Token * _literal; - asdl_seq * _loop1_170_var; + asdl_seq * _loop1_175_var; Token * a; if ( - (_loop1_170_var = _loop1_170_rule(p)) // param_maybe_default+ + (_loop1_175_var = _loop1_175_rule(p)) // param_maybe_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -20553,7 +21054,7 @@ invalid_default_rule(Parser *p) if ( (a = _PyPegen_expect_token(p, 22)) // token='=' && - _PyPegen_lookahead(1, _tmp_171_rule, p) + _PyPegen_lookahead(1, _tmp_176_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')")); @@ -20599,12 +21100,12 @@ invalid_star_etc_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); - void *_tmp_172_var; + void *_tmp_177_var; Token * a; if ( (a = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_172_var = _tmp_172_rule(p)) // ')' | ',' (')' | '**') + (_tmp_177_var = _tmp_177_rule(p)) // ')' | ',' (')' | '**') ) { D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))")); @@ -20687,20 +21188,20 @@ invalid_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')")); Token * _literal; - asdl_seq * _loop0_174_var; - void *_tmp_173_var; - void *_tmp_175_var; + asdl_seq * _loop0_179_var; + void *_tmp_178_var; + void *_tmp_180_var; Token * a; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_173_var = _tmp_173_rule(p)) // param_no_default | ',' + (_tmp_178_var = _tmp_178_rule(p)) // param_no_default | ',' && - (_loop0_174_var = _loop0_174_rule(p)) // param_maybe_default* + (_loop0_179_var = _loop0_179_rule(p)) // param_maybe_default* && (a = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_175_var = _tmp_175_rule(p)) // param_no_default | ',' + (_tmp_180_var = _tmp_180_rule(p)) // param_no_default | ',' ) { D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')")); @@ -20816,7 +21317,7 @@ invalid_kwds_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 12)) // token=',' && - (a = (Token*)_tmp_176_rule(p)) // '*' | '**' | '/' + (a = (Token*)_tmp_181_rule(p)) // '*' | '**' | '/' ) { D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')")); @@ -20882,13 +21383,13 @@ invalid_parameters_helper_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - asdl_seq * _loop1_177_var; + asdl_seq * _loop1_182_var; if ( - (_loop1_177_var = _loop1_177_rule(p)) // param_with_default+ + (_loop1_182_var = _loop1_182_rule(p)) // param_with_default+ ) { D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+")); - _res = _loop1_177_var; + _res = _loop1_182_var; goto done; } p->mark = _mark; @@ -20954,13 +21455,13 @@ invalid_lambda_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'")); - asdl_seq * _loop0_179_var; - void *_tmp_178_var; + asdl_seq * _loop0_184_var; + void *_tmp_183_var; Token * a; if ( - (_tmp_178_var = _tmp_178_rule(p)) // lambda_slash_no_default | lambda_slash_with_default + (_tmp_183_var = _tmp_183_rule(p)) // lambda_slash_no_default | lambda_slash_with_default && - (_loop0_179_var = _loop0_179_rule(p)) // lambda_param_maybe_default* + (_loop0_184_var = _loop0_184_rule(p)) // lambda_param_maybe_default* && (a = _PyPegen_expect_token(p, 17)) // token='/' ) @@ -20984,7 +21485,7 @@ invalid_lambda_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default")); - asdl_seq * _loop0_180_var; + asdl_seq * _loop0_185_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings arg_ty a; @@ -20992,7 +21493,7 @@ invalid_lambda_parameters_rule(Parser *p) if ( (_opt_var = lambda_slash_no_default_rule(p), !p->error_indicator) // lambda_slash_no_default? && - (_loop0_180_var = _loop0_180_rule(p)) // lambda_param_no_default* + (_loop0_185_var = _loop0_185_rule(p)) // lambda_param_no_default* && (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p)) // invalid_lambda_parameters_helper && @@ -21018,18 +21519,18 @@ invalid_lambda_parameters_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'")); - asdl_seq * _gather_182_var; - asdl_seq * _loop0_181_var; + asdl_seq * _gather_187_var; + asdl_seq * _loop0_186_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings Token * a; Token * b; if ( - (_loop0_181_var = _loop0_181_rule(p)) // lambda_param_no_default* + (_loop0_186_var = _loop0_186_rule(p)) // lambda_param_no_default* && (a = _PyPegen_expect_token(p, 7)) // token='(' && - (_gather_182_var = _gather_182_rule(p)) // ','.lambda_param+ + (_gather_187_var = _gather_187_rule(p)) // ','.lambda_param+ && (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? && @@ -21056,22 +21557,22 @@ invalid_lambda_parameters_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'")); Token * _literal; - asdl_seq * _loop0_185_var; - asdl_seq * _loop0_187_var; + asdl_seq * _loop0_190_var; + asdl_seq * _loop0_192_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings - void *_tmp_186_var; + void *_tmp_191_var; Token * a; if ( - (_opt_var = _tmp_184_rule(p), !p->error_indicator) // [(lambda_slash_no_default | lambda_slash_with_default)] + (_opt_var = _tmp_189_rule(p), !p->error_indicator) // [(lambda_slash_no_default | lambda_slash_with_default)] && - (_loop0_185_var = _loop0_185_rule(p)) // lambda_param_maybe_default* + (_loop0_190_var = _loop0_190_rule(p)) // lambda_param_maybe_default* && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_186_var = _tmp_186_rule(p)) // ',' | lambda_param_no_default + (_tmp_191_var = _tmp_191_rule(p)) // ',' | lambda_param_no_default && - (_loop0_187_var = _loop0_187_rule(p)) // lambda_param_maybe_default* + (_loop0_192_var = _loop0_192_rule(p)) // lambda_param_maybe_default* && (a = _PyPegen_expect_token(p, 17)) // token='/' ) @@ -21096,10 +21597,10 @@ invalid_lambda_parameters_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'")); Token * _literal; - asdl_seq * _loop1_188_var; + asdl_seq * _loop1_193_var; Token * a; if ( - (_loop1_188_var = _loop1_188_rule(p)) // lambda_param_maybe_default+ + (_loop1_193_var = _loop1_193_rule(p)) // lambda_param_maybe_default+ && (_literal = _PyPegen_expect_token(p, 17)) // token='/' && @@ -21171,13 +21672,13 @@ invalid_lambda_parameters_helper_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - asdl_seq * _loop1_189_var; + asdl_seq * _loop1_194_var; if ( - (_loop1_189_var = _loop1_189_rule(p)) // lambda_param_with_default+ + (_loop1_194_var = _loop1_194_rule(p)) // lambda_param_with_default+ ) { D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+")); - _res = _loop1_189_var; + _res = _loop1_194_var; goto done; } p->mark = _mark; @@ -21214,11 +21715,11 @@ invalid_lambda_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); Token * _literal; - void *_tmp_190_var; + void *_tmp_195_var; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_190_var = _tmp_190_rule(p)) // ':' | ',' (':' | '**') + (_tmp_195_var = _tmp_195_rule(p)) // ':' | ',' (':' | '**') ) { D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))")); @@ -21271,20 +21772,20 @@ invalid_lambda_star_etc_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')")); Token * _literal; - asdl_seq * _loop0_192_var; - void *_tmp_191_var; - void *_tmp_193_var; + asdl_seq * _loop0_197_var; + void *_tmp_196_var; + void *_tmp_198_var; Token * a; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_191_var = _tmp_191_rule(p)) // lambda_param_no_default | ',' + (_tmp_196_var = _tmp_196_rule(p)) // lambda_param_no_default | ',' && - (_loop0_192_var = _loop0_192_rule(p)) // lambda_param_maybe_default* + (_loop0_197_var = _loop0_197_rule(p)) // lambda_param_maybe_default* && (a = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_193_var = _tmp_193_rule(p)) // lambda_param_no_default | ',' + (_tmp_198_var = _tmp_198_rule(p)) // lambda_param_no_default | ',' ) { D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')")); @@ -21403,7 +21904,7 @@ invalid_lambda_kwds_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 12)) // token=',' && - (a = (Token*)_tmp_194_rule(p)) // '*' | '**' | '/' + (a = (Token*)_tmp_199_rule(p)) // '*' | '**' | '/' ) { D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')")); @@ -21507,11 +22008,11 @@ invalid_with_item_rule(Parser *p) if ( (expression_var = expression_rule(p)) // expression && - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (a = expression_rule(p)) // expression && - _PyPegen_lookahead(1, _tmp_195_rule, p) + _PyPegen_lookahead(1, _tmp_200_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')")); @@ -21560,7 +22061,7 @@ invalid_for_target_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (_keyword = _PyPegen_expect_token(p, 649)) // token='for' + (_keyword = _PyPegen_expect_token(p, 650)) // token='for' && (a = star_expressions_rule(p)) // star_expressions ) @@ -21692,11 +22193,11 @@ invalid_import_rule(Parser *p) expr_ty dotted_name_var; expr_ty dotted_name_var_1; if ( - (a = _PyPegen_expect_token(p, 606)) // token='import' + (a = _PyPegen_expect_token(p, 607)) // token='import' && (dotted_name_var = dotted_name_rule(p)) // dotted_name && - (_keyword = _PyPegen_expect_token(p, 607)) // token='from' + (_keyword = _PyPegen_expect_token(p, 608)) // token='from' && (dotted_name_var_1 = dotted_name_rule(p)) // dotted_name ) @@ -21792,7 +22293,7 @@ invalid_with_stmt_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ NEWLINE")); - asdl_seq * _gather_196_var; + asdl_seq * _gather_201_var; Token * _keyword; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings @@ -21800,9 +22301,9 @@ invalid_with_stmt_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (_keyword = _PyPegen_expect_token(p, 614)) // token='with' + (_keyword = _PyPegen_expect_token(p, 615)) // token='with' && - (_gather_196_var = _gather_196_rule(p)) // ','.(expression ['as' star_target])+ + (_gather_201_var = _gather_201_rule(p)) // ','.(expression ['as' star_target])+ && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -21826,7 +22327,7 @@ invalid_with_stmt_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE")); - asdl_seq * _gather_198_var; + asdl_seq * _gather_203_var; Token * _keyword; Token * _literal; Token * _literal_1; @@ -21838,11 +22339,11 @@ invalid_with_stmt_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (_keyword = _PyPegen_expect_token(p, 614)) // token='with' + (_keyword = _PyPegen_expect_token(p, 615)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (_gather_198_var = _gather_198_rule(p)) // ','.(expressions ['as' star_target])+ + (_gather_203_var = _gather_203_rule(p)) // ','.(expressions ['as' star_target])+ && (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? && @@ -21892,7 +22393,7 @@ invalid_with_stmt_indent_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT")); - asdl_seq * _gather_200_var; + asdl_seq * _gather_205_var; Token * _literal; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings @@ -21901,9 +22402,9 @@ invalid_with_stmt_indent_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 614)) // token='with' + (a = _PyPegen_expect_token(p, 615)) // token='with' && - (_gather_200_var = _gather_200_rule(p)) // ','.(expression ['as' star_target])+ + (_gather_205_var = _gather_205_rule(p)) // ','.(expression ['as' star_target])+ && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21931,7 +22432,7 @@ invalid_with_stmt_indent_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_with_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT")); - asdl_seq * _gather_202_var; + asdl_seq * _gather_207_var; Token * _literal; Token * _literal_1; Token * _literal_2; @@ -21944,11 +22445,11 @@ invalid_with_stmt_indent_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 614)) // token='with' + (a = _PyPegen_expect_token(p, 615)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && - (_gather_202_var = _gather_202_rule(p)) // ','.(expressions ['as' star_target])+ + (_gather_207_var = _gather_207_rule(p)) // ','.(expressions ['as' star_target])+ && (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator) // ','? && @@ -22008,7 +22509,7 @@ invalid_try_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 623)) // token='try' + (a = _PyPegen_expect_token(p, 624)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -22040,13 +22541,13 @@ invalid_try_stmt_rule(Parser *p) Token * _literal; asdl_stmt_seq* block_var; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='try' + (_keyword = _PyPegen_expect_token(p, 624)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && (block_var = block_rule(p)) // block && - _PyPegen_lookahead(0, _tmp_204_rule, p) + _PyPegen_lookahead(0, _tmp_209_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')")); @@ -22071,29 +22572,29 @@ invalid_try_stmt_rule(Parser *p) Token * _keyword; Token * _literal; Token * _literal_1; - asdl_seq * _loop0_205_var; - asdl_seq * _loop1_206_var; + asdl_seq * _loop0_210_var; + asdl_seq * _loop1_211_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings Token * a; Token * b; expr_ty expression_var; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='try' + (_keyword = _PyPegen_expect_token(p, 624)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && - (_loop0_205_var = _loop0_205_rule(p)) // block* + (_loop0_210_var = _loop0_210_rule(p)) // block* && - (_loop1_206_var = _loop1_206_rule(p)) // except_block+ + (_loop1_211_var = _loop1_211_rule(p)) // except_block+ && - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && (b = _PyPegen_expect_token(p, 16)) // token='*' && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_207_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var = _tmp_212_rule(p), !p->error_indicator) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -22120,23 +22621,23 @@ invalid_try_stmt_rule(Parser *p) Token * _keyword; Token * _literal; Token * _literal_1; - asdl_seq * _loop0_208_var; - asdl_seq * _loop1_209_var; + asdl_seq * _loop0_213_var; + asdl_seq * _loop1_214_var; void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings Token * a; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='try' + (_keyword = _PyPegen_expect_token(p, 624)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && - (_loop0_208_var = _loop0_208_rule(p)) // block* + (_loop0_213_var = _loop0_213_rule(p)) // block* && - (_loop1_209_var = _loop1_209_rule(p)) // except_star_block+ + (_loop1_214_var = _loop1_214_rule(p)) // except_star_block+ && - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && - (_opt_var = _tmp_210_rule(p), !p->error_indicator) // [expression ['as' NAME]] + (_opt_var = _tmp_215_rule(p), !p->error_indicator) // [expression ['as' NAME]] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -22194,7 +22695,7 @@ invalid_except_stmt_rule(Parser *p) expr_ty a; expr_ty expressions_var; if ( - (_keyword = _PyPegen_expect_token(p, 636)) // token='except' + (_keyword = _PyPegen_expect_token(p, 637)) // token='except' && (_opt_var = _PyPegen_expect_token(p, 16), !p->error_indicator) // '*'? && @@ -22204,7 +22705,7 @@ invalid_except_stmt_rule(Parser *p) && (expressions_var = expressions_rule(p)) // expressions && - (_opt_var_1 = _tmp_211_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var_1 = _tmp_216_rule(p), !p->error_indicator) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -22236,13 +22737,13 @@ invalid_except_stmt_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && (_opt_var = _PyPegen_expect_token(p, 16), !p->error_indicator) // '*'? && (expression_var = expression_rule(p)) // expression && - (_opt_var_1 = _tmp_212_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var_1 = _tmp_217_rule(p), !p->error_indicator) // ['as' NAME] && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -22269,7 +22770,7 @@ invalid_except_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -22294,14 +22795,14 @@ invalid_except_stmt_rule(Parser *p) } D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')")); Token * _literal; - void *_tmp_213_var; + void *_tmp_218_var; Token * a; if ( - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && - (_tmp_213_var = _tmp_213_rule(p)) // NEWLINE | ':' + (_tmp_218_var = _tmp_218_rule(p)) // NEWLINE | ':' ) { D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')")); @@ -22347,7 +22848,7 @@ invalid_finally_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 632)) // token='finally' + (a = _PyPegen_expect_token(p, 633)) // token='finally' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -22404,11 +22905,11 @@ invalid_except_stmt_indent_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_214_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var = _tmp_219_rule(p), !p->error_indicator) // ['as' NAME] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -22440,7 +22941,7 @@ invalid_except_stmt_indent_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -22497,13 +22998,13 @@ invalid_except_star_stmt_indent_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 636)) // token='except' + (a = _PyPegen_expect_token(p, 637)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_215_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var = _tmp_220_rule(p), !p->error_indicator) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -22739,7 +23240,7 @@ invalid_as_pattern_rule(Parser *p) if ( (or_pattern_var = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (a = _PyPegen_expect_soft_keyword(p, "_")) // soft_keyword='"_"' ) @@ -22769,7 +23270,7 @@ invalid_as_pattern_rule(Parser *p) if ( (or_pattern_var = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p) && @@ -22872,7 +23373,7 @@ invalid_class_argument_pattern_rule(Parser *p) asdl_pattern_seq* a; asdl_seq* keyword_patterns_var; if ( - (_opt_var = _tmp_216_rule(p), !p->error_indicator) // [positional_patterns ','] + (_opt_var = _tmp_221_rule(p), !p->error_indicator) // [positional_patterns ','] && (keyword_patterns_var = keyword_patterns_rule(p)) // keyword_patterns && @@ -22926,7 +23427,7 @@ invalid_if_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -22957,7 +23458,7 @@ invalid_if_stmt_rule(Parser *p) expr_ty a_1; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 641)) // token='if' + (a = _PyPegen_expect_token(p, 642)) // token='if' && (a_1 = named_expression_rule(p)) // named_expression && @@ -23013,7 +23514,7 @@ invalid_elif_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 643)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 644)) // token='elif' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -23044,7 +23545,7 @@ invalid_elif_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 643)) // token='elif' + (a = _PyPegen_expect_token(p, 644)) // token='elif' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -23098,7 +23599,7 @@ invalid_else_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 644)) // token='else' + (a = _PyPegen_expect_token(p, 645)) // token='else' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23152,7 +23653,7 @@ invalid_while_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 646)) // token='while' + (_keyword = _PyPegen_expect_token(p, 647)) // token='while' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -23183,7 +23684,7 @@ invalid_while_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 646)) // token='while' + (a = _PyPegen_expect_token(p, 647)) // token='while' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -23245,11 +23746,11 @@ invalid_for_stmt_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (_keyword = _PyPegen_expect_token(p, 649)) // token='for' + (_keyword = _PyPegen_expect_token(p, 650)) // token='for' && (star_targets_var = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 651)) // token='in' && (star_expressions_var = star_expressions_rule(p)) // star_expressions && @@ -23286,11 +23787,11 @@ invalid_for_stmt_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 649)) // token='for' + (a = _PyPegen_expect_token(p, 650)) // token='for' && (star_targets_var = star_targets_rule(p)) // star_targets && - (_keyword = _PyPegen_expect_token(p, 650)) // token='in' + (_keyword = _PyPegen_expect_token(p, 651)) // token='in' && (star_expressions_var = star_expressions_rule(p)) // star_expressions && @@ -23356,7 +23857,7 @@ invalid_def_raw_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 651)) // token='def' + (a = _PyPegen_expect_token(p, 652)) // token='def' && (name_var = _PyPegen_name_token(p)) // NAME && @@ -23366,7 +23867,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_217_rule(p), !p->error_indicator) // ['->' expression] + (_opt_var_2 = _tmp_222_rule(p), !p->error_indicator) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23422,11 +23923,11 @@ invalid_class_def_raw_rule(Parser *p) expr_ty name_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 653)) // token='class' + (_keyword = _PyPegen_expect_token(p, 654)) // token='class' && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_218_rule(p), !p->error_indicator) // ['(' arguments? ')'] + (_opt_var = _tmp_223_rule(p), !p->error_indicator) // ['(' arguments? ')'] && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -23457,11 +23958,11 @@ invalid_class_def_raw_rule(Parser *p) expr_ty name_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 653)) // token='class' + (a = _PyPegen_expect_token(p, 654)) // token='class' && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_219_rule(p), !p->error_indicator) // ['(' arguments? ')'] + (_opt_var = _tmp_224_rule(p), !p->error_indicator) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23512,11 +24013,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_220_var; + asdl_seq * _gather_225_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_220_var = _gather_220_rule(p)) // ','.double_starred_kvpair+ + (_gather_225_var = _gather_225_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -23524,7 +24025,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_220_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_225_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -23577,7 +24078,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_222_rule, p) + _PyPegen_lookahead(1, _tmp_227_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -23688,7 +24189,7 @@ invalid_kvpair_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_223_rule, p) + _PyPegen_lookahead(1, _tmp_228_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -23763,6 +24264,450 @@ invalid_starred_expression_rule(Parser *p) return _res; } +// invalid_replacement_field: +// | '{' '=' +// | '{' '!' +// | '{' ':' +// | '{' '}' +// | '{' !(yield_expr | star_expressions) +// | '{' (yield_expr | star_expressions) !('=' | '!' | ':' | '}') +// | '{' (yield_expr | star_expressions) '=' !('!' | ':' | '}') +// | '{' (yield_expr | star_expressions) '='? invalid_conversion_character +// | '{' (yield_expr | star_expressions) '='? ['!' NAME] !(':' | '}') +// | '{' (yield_expr | star_expressions) '='? ['!' NAME] ':' fstring_format_spec* !'}' +// | '{' (yield_expr | star_expressions) '='? ['!' NAME] !'}' +static void * +invalid_replacement_field_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '{' '=' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='")); + Token * _literal; + Token * a; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (a = _PyPegen_expect_token(p, 22)) // token='=' + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '='" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='")); + } + { // '{' '!' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'")); + Token * _literal; + Token * a; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (a = _PyPegen_expect_token(p, 54)) // token='!' + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '!'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'")); + } + { // '{' ':' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'")); + Token * _literal; + Token * a; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (a = _PyPegen_expect_token(p, 11)) // token=':' + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before ':'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'")); + } + { // '{' '}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'")); + Token * _literal; + Token * a; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (a = _PyPegen_expect_token(p, 26)) // token='}' + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '}'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'")); + } + { // '{' !(yield_expr | star_expressions) + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !(yield_expr | star_expressions)")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + _PyPegen_lookahead(0, _tmp_229_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !(yield_expr | star_expressions)")); + _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting a valid expression after '{'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !(yield_expr | star_expressions)")); + } + { // '{' (yield_expr | star_expressions) !('=' | '!' | ':' | '}') + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) !('=' | '!' | ':' | '}')")); + Token * _literal; + void *_tmp_230_var; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (_tmp_230_var = _tmp_230_rule(p)) // yield_expr | star_expressions + && + _PyPegen_lookahead(0, _tmp_231_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) !('=' | '!' | ':' | '}')")); + _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '=', or '!', or ':', or '}'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' (yield_expr | star_expressions) !('=' | '!' | ':' | '}')")); + } + { // '{' (yield_expr | star_expressions) '=' !('!' | ':' | '}') + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '=' !('!' | ':' | '}')")); + Token * _literal; + Token * _literal_1; + void *_tmp_232_var; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (_tmp_232_var = _tmp_232_rule(p)) // yield_expr | star_expressions + && + (_literal_1 = _PyPegen_expect_token(p, 22)) // token='=' + && + _PyPegen_lookahead(0, _tmp_233_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '=' !('!' | ':' | '}')")); + _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '!', or ':', or '}'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' (yield_expr | star_expressions) '=' !('!' | ':' | '}')")); + } + { // '{' (yield_expr | star_expressions) '='? invalid_conversion_character + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? invalid_conversion_character")); + Token * _literal; + void *_opt_var; + UNUSED(_opt_var); // Silence compiler warnings + void *_tmp_234_var; + void *invalid_conversion_character_var; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (_tmp_234_var = _tmp_234_rule(p)) // yield_expr | star_expressions + && + (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator) // '='? + && + (invalid_conversion_character_var = invalid_conversion_character_rule(p)) // invalid_conversion_character + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? invalid_conversion_character")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_234_var, _opt_var, invalid_conversion_character_var); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' (yield_expr | star_expressions) '='? invalid_conversion_character")); + } + { // '{' (yield_expr | star_expressions) '='? ['!' NAME] !(':' | '}') + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] !(':' | '}')")); + Token * _literal; + void *_opt_var; + UNUSED(_opt_var); // Silence compiler warnings + void *_opt_var_1; + UNUSED(_opt_var_1); // Silence compiler warnings + void *_tmp_235_var; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (_tmp_235_var = _tmp_235_rule(p)) // yield_expr | star_expressions + && + (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator) // '='? + && + (_opt_var_1 = _tmp_236_rule(p), !p->error_indicator) // ['!' NAME] + && + _PyPegen_lookahead(0, _tmp_237_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] !(':' | '}')")); + _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting ':' or '}'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] !(':' | '}')")); + } + { // '{' (yield_expr | star_expressions) '='? ['!' NAME] ':' fstring_format_spec* !'}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] ':' fstring_format_spec* !'}'")); + Token * _literal; + Token * _literal_1; + asdl_seq * _loop0_240_var; + void *_opt_var; + UNUSED(_opt_var); // Silence compiler warnings + void *_opt_var_1; + UNUSED(_opt_var_1); // Silence compiler warnings + void *_tmp_238_var; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (_tmp_238_var = _tmp_238_rule(p)) // yield_expr | star_expressions + && + (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator) // '='? + && + (_opt_var_1 = _tmp_239_rule(p), !p->error_indicator) // ['!' NAME] + && + (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' + && + (_loop0_240_var = _loop0_240_rule(p)) // fstring_format_spec* + && + _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26) // token='}' + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] ':' fstring_format_spec* !'}'")); + _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}', or format specs" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] ':' fstring_format_spec* !'}'")); + } + { // '{' (yield_expr | star_expressions) '='? ['!' NAME] !'}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] !'}'")); + Token * _literal; + void *_opt_var; + UNUSED(_opt_var); // Silence compiler warnings + void *_opt_var_1; + UNUSED(_opt_var_1); // Silence compiler warnings + void *_tmp_241_var; + if ( + (_literal = _PyPegen_expect_token(p, 25)) // token='{' + && + (_tmp_241_var = _tmp_241_rule(p)) // yield_expr | star_expressions + && + (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator) // '='? + && + (_opt_var_1 = _tmp_242_rule(p), !p->error_indicator) // ['!' NAME] + && + _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26) // token='}' + ) + { + D(fprintf(stderr, "%*c+ invalid_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] !'}'")); + _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_replacement_field[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' (yield_expr | star_expressions) '='? ['!' NAME] !'}'")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// invalid_conversion_character: '!' &(':' | '}') | '!' !NAME +static void * +invalid_conversion_character_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '!' &(':' | '}') + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 54)) // token='!' + && + _PyPegen_lookahead(1, _tmp_243_rule, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')")); + _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: missing conversion character" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_conversion_character[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')")); + } + { // '!' !NAME + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 54)) // token='!' + && + _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p) + ) + { + D(fprintf(stderr, "%*c+ invalid_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME")); + _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: invalid conversion character" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_conversion_character[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME")); + } + _res = NULL; + done: + p->level--; + return _res; +} + // _loop0_1: NEWLINE static asdl_seq * _loop0_1_rule(Parser *p) @@ -23899,9 +24844,77 @@ _loop0_2_rule(Parser *p) return _seq; } -// _loop1_3: statement +// _loop0_3: fstring_middle static asdl_seq * -_loop1_3_rule(Parser *p) +_loop0_3_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void *_res = NULL; + int _mark = p->mark; + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // fstring_middle + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _loop0_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_middle")); + expr_ty fstring_middle_var; + while ( + (fstring_middle_var = fstring_middle_rule(p)) // fstring_middle + ) + { + _res = fstring_middle_var; + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + _children = _new_children; + } + _children[_n++] = _res; + _mark = p->mark; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _loop0_3[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_middle")); + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); + p->level--; + return _seq; +} + +// _loop1_4: statement +static asdl_seq * +_loop1_4_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -23927,7 +24940,7 @@ _loop1_3_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement")); + D(fprintf(stderr, "%*c> _loop1_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement")); asdl_stmt_seq* statement_var; while ( (statement_var = statement_rule(p)) // statement @@ -23950,7 +24963,7 @@ _loop1_3_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_3[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_4[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement")); } if (_n == 0 || p->error_indicator) { @@ -23972,9 +24985,9 @@ _loop1_3_rule(Parser *p) return _seq; } -// _loop0_5: ';' simple_stmt +// _loop0_6: ';' simple_stmt static asdl_seq * -_loop0_5_rule(Parser *p) +_loop0_6_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24000,7 +25013,7 @@ _loop0_5_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt")); + D(fprintf(stderr, "%*c> _loop0_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt")); Token * _literal; stmt_ty elem; while ( @@ -24032,7 +25045,7 @@ _loop0_5_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_5[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_6[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -24049,9 +25062,9 @@ _loop0_5_rule(Parser *p) return _seq; } -// _gather_4: simple_stmt _loop0_5 +// _gather_5: simple_stmt _loop0_6 static asdl_seq * -_gather_4_rule(Parser *p) +_gather_5_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24063,27 +25076,27 @@ _gather_4_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // simple_stmt _loop0_5 + { // simple_stmt _loop0_6 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_5")); + D(fprintf(stderr, "%*c> _gather_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_6")); stmt_ty elem; asdl_seq * seq; if ( (elem = simple_stmt_rule(p)) // simple_stmt && - (seq = _loop0_5_rule(p)) // _loop0_5 + (seq = _loop0_6_rule(p)) // _loop0_6 ) { - D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_5")); + D(fprintf(stderr, "%*c+ _gather_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_6")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_5")); + D(fprintf(stderr, "%*c%s _gather_5[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_6")); } _res = NULL; done: @@ -24091,9 +25104,9 @@ _gather_4_rule(Parser *p) return _res; } -// _tmp_6: 'import' | 'from' +// _tmp_7: 'import' | 'from' static void * -_tmp_6_rule(Parser *p) +_tmp_7_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24110,18 +25123,18 @@ _tmp_6_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'")); + D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 606)) // token='import' + (_keyword = _PyPegen_expect_token(p, 607)) // token='import' ) { - D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'")); + D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'")); } { // 'from' @@ -24129,18 +25142,18 @@ _tmp_6_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'")); + D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 607)) // token='from' + (_keyword = _PyPegen_expect_token(p, 608)) // token='from' ) { - D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'")); + D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'")); } _res = NULL; @@ -24149,9 +25162,9 @@ _tmp_6_rule(Parser *p) return _res; } -// _tmp_7: 'def' | '@' | ASYNC +// _tmp_8: 'def' | '@' | ASYNC static void * -_tmp_7_rule(Parser *p) +_tmp_8_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24168,18 +25181,18 @@ _tmp_7_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'")); + D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 651)) // token='def' + (_keyword = _PyPegen_expect_token(p, 652)) // token='def' ) { - D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'")); + D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'")); } { // '@' @@ -24187,18 +25200,18 @@ _tmp_7_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'")); + D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 49)) // token='@' ) { - D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'")); + D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'")); } { // ASYNC @@ -24206,18 +25219,18 @@ _tmp_7_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC")); + D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC")); Token * async_var; if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' ) { - D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC")); + D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC")); _res = async_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC")); } _res = NULL; @@ -24226,9 +25239,9 @@ _tmp_7_rule(Parser *p) return _res; } -// _tmp_8: 'class' | '@' +// _tmp_9: 'class' | '@' static void * -_tmp_8_rule(Parser *p) +_tmp_9_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24245,18 +25258,18 @@ _tmp_8_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'")); + D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 653)) // token='class' + (_keyword = _PyPegen_expect_token(p, 654)) // token='class' ) { - D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'")); + D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'")); } { // '@' @@ -24264,18 +25277,18 @@ _tmp_8_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'")); + D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 49)) // token='@' ) { - D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'")); + D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'")); } _res = NULL; @@ -24284,9 +25297,9 @@ _tmp_8_rule(Parser *p) return _res; } -// _tmp_9: 'with' | ASYNC +// _tmp_10: 'with' | ASYNC static void * -_tmp_9_rule(Parser *p) +_tmp_10_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24303,18 +25316,18 @@ _tmp_9_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'")); + D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 614)) // token='with' + (_keyword = _PyPegen_expect_token(p, 615)) // token='with' ) { - D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'")); + D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'")); } { // ASYNC @@ -24322,18 +25335,18 @@ _tmp_9_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC")); + D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC")); Token * async_var; if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' ) { - D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC")); + D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC")); _res = async_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC")); } _res = NULL; @@ -24342,9 +25355,9 @@ _tmp_9_rule(Parser *p) return _res; } -// _tmp_10: 'for' | ASYNC +// _tmp_11: 'for' | ASYNC static void * -_tmp_10_rule(Parser *p) +_tmp_11_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24361,18 +25374,18 @@ _tmp_10_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'")); + D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='for' + (_keyword = _PyPegen_expect_token(p, 650)) // token='for' ) { - D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'")); + D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'")); } { // ASYNC @@ -24380,18 +25393,18 @@ _tmp_10_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC")); + D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC")); Token * async_var; if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' ) { - D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC")); + D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC")); _res = async_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC")); } _res = NULL; @@ -24400,9 +25413,9 @@ _tmp_10_rule(Parser *p) return _res; } -// _tmp_11: '=' annotated_rhs +// _tmp_12: '=' annotated_rhs static void * -_tmp_11_rule(Parser *p) +_tmp_12_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24419,7 +25432,7 @@ _tmp_11_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); + D(fprintf(stderr, "%*c> _tmp_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); Token * _literal; expr_ty d; if ( @@ -24428,7 +25441,7 @@ _tmp_11_rule(Parser *p) (d = annotated_rhs_rule(p)) // annotated_rhs ) { - D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); + D(fprintf(stderr, "%*c+ _tmp_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); _res = d; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24438,7 +25451,7 @@ _tmp_11_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_12[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs")); } _res = NULL; @@ -24447,9 +25460,9 @@ _tmp_11_rule(Parser *p) return _res; } -// _tmp_12: '(' single_target ')' | single_subscript_attribute_target +// _tmp_13: '(' single_target ')' | single_subscript_attribute_target static void * -_tmp_12_rule(Parser *p) +_tmp_13_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24466,7 +25479,7 @@ _tmp_12_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'")); + D(fprintf(stderr, "%*c> _tmp_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'")); Token * _literal; Token * _literal_1; expr_ty b; @@ -24478,7 +25491,7 @@ _tmp_12_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'")); + D(fprintf(stderr, "%*c+ _tmp_13[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'")); _res = b; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24488,7 +25501,7 @@ _tmp_12_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_12[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_13[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'")); } { // single_subscript_attribute_target @@ -24496,18 +25509,18 @@ _tmp_12_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target")); + D(fprintf(stderr, "%*c> _tmp_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target")); expr_ty single_subscript_attribute_target_var; if ( (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target ) { - D(fprintf(stderr, "%*c+ _tmp_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target")); + D(fprintf(stderr, "%*c+ _tmp_13[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target")); _res = single_subscript_attribute_target_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_12[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_13[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target")); } _res = NULL; @@ -24516,9 +25529,9 @@ _tmp_12_rule(Parser *p) return _res; } -// _tmp_13: '=' annotated_rhs +// _tmp_14: '=' annotated_rhs static void * -_tmp_13_rule(Parser *p) +_tmp_14_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24535,7 +25548,7 @@ _tmp_13_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); + D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); Token * _literal; expr_ty d; if ( @@ -24544,7 +25557,7 @@ _tmp_13_rule(Parser *p) (d = annotated_rhs_rule(p)) // annotated_rhs ) { - D(fprintf(stderr, "%*c+ _tmp_13[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); + D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs")); _res = d; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24554,7 +25567,7 @@ _tmp_13_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_13[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs")); } _res = NULL; @@ -24563,9 +25576,9 @@ _tmp_13_rule(Parser *p) return _res; } -// _loop1_14: (star_targets '=') +// _loop1_15: (star_targets '=') static asdl_seq * -_loop1_14_rule(Parser *p) +_loop1_15_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24591,13 +25604,13 @@ _loop1_14_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_224_var; + D(fprintf(stderr, "%*c> _loop1_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_244_var; while ( - (_tmp_224_var = _tmp_224_rule(p)) // star_targets '=' + (_tmp_244_var = _tmp_244_rule(p)) // star_targets '=' ) { - _res = _tmp_224_var; + _res = _tmp_244_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -24614,7 +25627,7 @@ _loop1_14_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_14[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_15[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } if (_n == 0 || p->error_indicator) { @@ -24636,9 +25649,9 @@ _loop1_14_rule(Parser *p) return _seq; } -// _tmp_15: yield_expr | star_expressions +// _tmp_16: yield_expr | star_expressions static void * -_tmp_15_rule(Parser *p) +_tmp_16_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24655,18 +25668,18 @@ _tmp_15_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // star_expressions @@ -24674,18 +25687,18 @@ _tmp_15_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); expr_ty star_expressions_var; if ( (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); _res = star_expressions_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } _res = NULL; @@ -24694,9 +25707,9 @@ _tmp_15_rule(Parser *p) return _res; } -// _tmp_16: yield_expr | star_expressions +// _tmp_17: yield_expr | star_expressions static void * -_tmp_16_rule(Parser *p) +_tmp_17_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24713,18 +25726,18 @@ _tmp_16_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // star_expressions @@ -24732,18 +25745,18 @@ _tmp_16_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); expr_ty star_expressions_var; if ( (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); _res = star_expressions_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } _res = NULL; @@ -24752,9 +25765,9 @@ _tmp_16_rule(Parser *p) return _res; } -// _tmp_17: 'from' expression +// _tmp_18: 'from' expression static void * -_tmp_17_rule(Parser *p) +_tmp_18_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24771,16 +25784,16 @@ _tmp_17_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression")); + D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 607)) // token='from' + (_keyword = _PyPegen_expect_token(p, 608)) // token='from' && (z = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' expression")); + D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' expression")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -24790,7 +25803,7 @@ _tmp_17_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' expression")); } _res = NULL; @@ -24799,9 +25812,9 @@ _tmp_17_rule(Parser *p) return _res; } -// _loop0_19: ',' NAME +// _loop0_20: ',' NAME static asdl_seq * -_loop0_19_rule(Parser *p) +_loop0_20_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24827,7 +25840,7 @@ _loop0_19_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME")); + D(fprintf(stderr, "%*c> _loop0_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME")); Token * _literal; expr_ty elem; while ( @@ -24859,7 +25872,7 @@ _loop0_19_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_20[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -24876,9 +25889,9 @@ _loop0_19_rule(Parser *p) return _seq; } -// _gather_18: NAME _loop0_19 +// _gather_19: NAME _loop0_20 static asdl_seq * -_gather_18_rule(Parser *p) +_gather_19_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24890,27 +25903,27 @@ _gather_18_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // NAME _loop0_19 + { // NAME _loop0_20 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_19")); + D(fprintf(stderr, "%*c> _gather_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_20")); expr_ty elem; asdl_seq * seq; if ( (elem = _PyPegen_name_token(p)) // NAME && - (seq = _loop0_19_rule(p)) // _loop0_19 + (seq = _loop0_20_rule(p)) // _loop0_20 ) { - D(fprintf(stderr, "%*c+ _gather_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_19")); + D(fprintf(stderr, "%*c+ _gather_19[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_20")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_18[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_19")); + D(fprintf(stderr, "%*c%s _gather_19[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_20")); } _res = NULL; done: @@ -24918,9 +25931,9 @@ _gather_18_rule(Parser *p) return _res; } -// _loop0_21: ',' NAME +// _loop0_22: ',' NAME static asdl_seq * -_loop0_21_rule(Parser *p) +_loop0_22_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -24946,7 +25959,7 @@ _loop0_21_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME")); + D(fprintf(stderr, "%*c> _loop0_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME")); Token * _literal; expr_ty elem; while ( @@ -24978,7 +25991,7 @@ _loop0_21_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_21[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_22[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -24995,9 +26008,9 @@ _loop0_21_rule(Parser *p) return _seq; } -// _gather_20: NAME _loop0_21 +// _gather_21: NAME _loop0_22 static asdl_seq * -_gather_20_rule(Parser *p) +_gather_21_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25009,27 +26022,27 @@ _gather_20_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // NAME _loop0_21 + { // NAME _loop0_22 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_21")); + D(fprintf(stderr, "%*c> _gather_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_22")); expr_ty elem; asdl_seq * seq; if ( (elem = _PyPegen_name_token(p)) // NAME && - (seq = _loop0_21_rule(p)) // _loop0_21 + (seq = _loop0_22_rule(p)) // _loop0_22 ) { - D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_21")); + D(fprintf(stderr, "%*c+ _gather_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_22")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_21")); + D(fprintf(stderr, "%*c%s _gather_21[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_22")); } _res = NULL; done: @@ -25037,9 +26050,9 @@ _gather_20_rule(Parser *p) return _res; } -// _tmp_22: ';' | NEWLINE +// _tmp_23: ';' | NEWLINE static void * -_tmp_22_rule(Parser *p) +_tmp_23_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25056,18 +26069,18 @@ _tmp_22_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'")); + D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 13)) // token=';' ) { - D(fprintf(stderr, "%*c+ _tmp_22[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'")); + D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_22[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'")); } { // NEWLINE @@ -25075,18 +26088,18 @@ _tmp_22_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE")); Token * newline_var; if ( (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_22[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE")); _res = newline_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_22[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE")); } _res = NULL; @@ -25095,9 +26108,9 @@ _tmp_22_rule(Parser *p) return _res; } -// _tmp_23: ',' expression +// _tmp_24: ',' expression static void * -_tmp_23_rule(Parser *p) +_tmp_24_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25114,7 +26127,7 @@ _tmp_23_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty z; if ( @@ -25123,7 +26136,7 @@ _tmp_23_rule(Parser *p) (z = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_24[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -25133,7 +26146,7 @@ _tmp_23_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -25142,9 +26155,9 @@ _tmp_23_rule(Parser *p) return _res; } -// _loop0_24: ('.' | '...') +// _loop0_25: ('.' | '...') static asdl_seq * -_loop0_24_rule(Parser *p) +_loop0_25_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25170,13 +26183,13 @@ _loop0_24_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_225_var; + D(fprintf(stderr, "%*c> _loop0_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); + void *_tmp_245_var; while ( - (_tmp_225_var = _tmp_225_rule(p)) // '.' | '...' + (_tmp_245_var = _tmp_245_rule(p)) // '.' | '...' ) { - _res = _tmp_225_var; + _res = _tmp_245_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -25193,7 +26206,7 @@ _loop0_24_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_24[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_25[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -25210,9 +26223,9 @@ _loop0_24_rule(Parser *p) return _seq; } -// _loop1_25: ('.' | '...') +// _loop1_26: ('.' | '...') static asdl_seq * -_loop1_25_rule(Parser *p) +_loop1_26_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25238,13 +26251,13 @@ _loop1_25_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_226_var; + D(fprintf(stderr, "%*c> _loop1_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); + void *_tmp_246_var; while ( - (_tmp_226_var = _tmp_226_rule(p)) // '.' | '...' + (_tmp_246_var = _tmp_246_rule(p)) // '.' | '...' ) { - _res = _tmp_226_var; + _res = _tmp_246_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -25261,7 +26274,7 @@ _loop1_25_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_25[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_26[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')")); } if (_n == 0 || p->error_indicator) { @@ -25283,9 +26296,9 @@ _loop1_25_rule(Parser *p) return _seq; } -// _loop0_27: ',' import_from_as_name +// _loop0_28: ',' import_from_as_name static asdl_seq * -_loop0_27_rule(Parser *p) +_loop0_28_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25311,7 +26324,7 @@ _loop0_27_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name")); + D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name")); Token * _literal; alias_ty elem; while ( @@ -25343,7 +26356,7 @@ _loop0_27_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -25360,9 +26373,9 @@ _loop0_27_rule(Parser *p) return _seq; } -// _gather_26: import_from_as_name _loop0_27 +// _gather_27: import_from_as_name _loop0_28 static asdl_seq * -_gather_26_rule(Parser *p) +_gather_27_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25374,27 +26387,27 @@ _gather_26_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // import_from_as_name _loop0_27 + { // import_from_as_name _loop0_28 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_27")); + D(fprintf(stderr, "%*c> _gather_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_28")); alias_ty elem; asdl_seq * seq; if ( (elem = import_from_as_name_rule(p)) // import_from_as_name && - (seq = _loop0_27_rule(p)) // _loop0_27 + (seq = _loop0_28_rule(p)) // _loop0_28 ) { - D(fprintf(stderr, "%*c+ _gather_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_27")); + D(fprintf(stderr, "%*c+ _gather_27[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_28")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_26[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_27")); + D(fprintf(stderr, "%*c%s _gather_27[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_28")); } _res = NULL; done: @@ -25402,9 +26415,9 @@ _gather_26_rule(Parser *p) return _res; } -// _tmp_28: 'as' NAME +// _tmp_29: 'as' NAME static void * -_tmp_28_rule(Parser *p) +_tmp_29_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25421,16 +26434,16 @@ _tmp_28_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_28[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -25440,7 +26453,7 @@ _tmp_28_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_28[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_29[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -25449,9 +26462,9 @@ _tmp_28_rule(Parser *p) return _res; } -// _loop0_30: ',' dotted_as_name +// _loop0_31: ',' dotted_as_name static asdl_seq * -_loop0_30_rule(Parser *p) +_loop0_31_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25477,7 +26490,7 @@ _loop0_30_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name")); + D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name")); Token * _literal; alias_ty elem; while ( @@ -25509,7 +26522,7 @@ _loop0_30_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_30[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -25526,9 +26539,9 @@ _loop0_30_rule(Parser *p) return _seq; } -// _gather_29: dotted_as_name _loop0_30 +// _gather_30: dotted_as_name _loop0_31 static asdl_seq * -_gather_29_rule(Parser *p) +_gather_30_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25540,27 +26553,27 @@ _gather_29_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // dotted_as_name _loop0_30 + { // dotted_as_name _loop0_31 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_30")); + D(fprintf(stderr, "%*c> _gather_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_31")); alias_ty elem; asdl_seq * seq; if ( (elem = dotted_as_name_rule(p)) // dotted_as_name && - (seq = _loop0_30_rule(p)) // _loop0_30 + (seq = _loop0_31_rule(p)) // _loop0_31 ) { - D(fprintf(stderr, "%*c+ _gather_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_30")); + D(fprintf(stderr, "%*c+ _gather_30[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_31")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_29[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_30")); + D(fprintf(stderr, "%*c%s _gather_30[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_31")); } _res = NULL; done: @@ -25568,9 +26581,9 @@ _gather_29_rule(Parser *p) return _res; } -// _tmp_31: 'as' NAME +// _tmp_32: 'as' NAME static void * -_tmp_31_rule(Parser *p) +_tmp_32_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25587,16 +26600,16 @@ _tmp_31_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_31[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_32[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -25606,7 +26619,7 @@ _tmp_31_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_31[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_32[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -25615,9 +26628,9 @@ _tmp_31_rule(Parser *p) return _res; } -// _loop1_32: ('@' named_expression NEWLINE) +// _loop1_33: ('@' named_expression NEWLINE) static asdl_seq * -_loop1_32_rule(Parser *p) +_loop1_33_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25643,13 +26656,13 @@ _loop1_32_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_227_var; + D(fprintf(stderr, "%*c> _loop1_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); + void *_tmp_247_var; while ( - (_tmp_227_var = _tmp_227_rule(p)) // '@' named_expression NEWLINE + (_tmp_247_var = _tmp_247_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_227_var; + _res = _tmp_247_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -25666,7 +26679,7 @@ _loop1_32_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_33[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)")); } if (_n == 0 || p->error_indicator) { @@ -25688,9 +26701,9 @@ _loop1_32_rule(Parser *p) return _seq; } -// _tmp_33: '(' arguments? ')' +// _tmp_34: '(' arguments? ')' static void * -_tmp_33_rule(Parser *p) +_tmp_34_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25707,7 +26720,7 @@ _tmp_33_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *z; @@ -25719,7 +26732,7 @@ _tmp_33_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_33[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -25729,7 +26742,7 @@ _tmp_33_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_33[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_34[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -25738,9 +26751,9 @@ _tmp_33_rule(Parser *p) return _res; } -// _tmp_34: '->' expression +// _tmp_35: '->' expression static void * -_tmp_34_rule(Parser *p) +_tmp_35_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25757,7 +26770,7 @@ _tmp_34_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty z; if ( @@ -25766,7 +26779,7 @@ _tmp_34_rule(Parser *p) (z = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -25776,7 +26789,7 @@ _tmp_34_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_34[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -25785,9 +26798,9 @@ _tmp_34_rule(Parser *p) return _res; } -// _tmp_35: '->' expression +// _tmp_36: '->' expression static void * -_tmp_35_rule(Parser *p) +_tmp_36_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25804,7 +26817,7 @@ _tmp_35_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty z; if ( @@ -25813,7 +26826,7 @@ _tmp_35_rule(Parser *p) (z = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_36[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -25823,7 +26836,7 @@ _tmp_35_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_36[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -25832,9 +26845,9 @@ _tmp_35_rule(Parser *p) return _res; } -// _loop0_36: param_no_default +// _loop0_37: param_no_default static asdl_seq * -_loop0_36_rule(Parser *p) +_loop0_37_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25860,7 +26873,7 @@ _loop0_36_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -25883,7 +26896,7 @@ _loop0_36_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_36[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_37[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -25900,9 +26913,9 @@ _loop0_36_rule(Parser *p) return _seq; } -// _loop0_37: param_with_default +// _loop0_38: param_with_default static asdl_seq * -_loop0_37_rule(Parser *p) +_loop0_38_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25928,7 +26941,7 @@ _loop0_37_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop0_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -25951,7 +26964,7 @@ _loop0_37_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_37[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_38[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -25968,9 +26981,9 @@ _loop0_37_rule(Parser *p) return _seq; } -// _loop0_38: param_with_default +// _loop0_39: param_with_default static asdl_seq * -_loop0_38_rule(Parser *p) +_loop0_39_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -25996,7 +27009,7 @@ _loop0_38_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -26019,7 +27032,7 @@ _loop0_38_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_38[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -26036,9 +27049,9 @@ _loop0_38_rule(Parser *p) return _seq; } -// _loop1_39: param_no_default +// _loop1_40: param_no_default static asdl_seq * -_loop1_39_rule(Parser *p) +_loop1_40_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26064,7 +27077,7 @@ _loop1_39_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop1_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -26087,7 +27100,7 @@ _loop1_39_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_39[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_40[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } if (_n == 0 || p->error_indicator) { @@ -26109,9 +27122,9 @@ _loop1_39_rule(Parser *p) return _seq; } -// _loop0_40: param_with_default +// _loop0_41: param_with_default static asdl_seq * -_loop0_40_rule(Parser *p) +_loop0_41_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26137,7 +27150,7 @@ _loop0_40_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop0_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -26160,7 +27173,7 @@ _loop0_40_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_40[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_41[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -26177,9 +27190,9 @@ _loop0_40_rule(Parser *p) return _seq; } -// _loop1_41: param_with_default +// _loop1_42: param_with_default static asdl_seq * -_loop1_41_rule(Parser *p) +_loop1_42_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26205,7 +27218,7 @@ _loop1_41_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -26228,7 +27241,7 @@ _loop1_41_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_41[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_42[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -26250,9 +27263,9 @@ _loop1_41_rule(Parser *p) return _seq; } -// _loop1_42: param_no_default +// _loop1_43: param_no_default static asdl_seq * -_loop1_42_rule(Parser *p) +_loop1_43_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26278,7 +27291,7 @@ _loop1_42_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop1_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -26301,7 +27314,7 @@ _loop1_42_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_42[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_43[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } if (_n == 0 || p->error_indicator) { @@ -26323,9 +27336,9 @@ _loop1_42_rule(Parser *p) return _seq; } -// _loop1_43: param_no_default +// _loop1_44: param_no_default static asdl_seq * -_loop1_43_rule(Parser *p) +_loop1_44_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26351,7 +27364,7 @@ _loop1_43_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop1_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -26374,7 +27387,7 @@ _loop1_43_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_43[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_44[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } if (_n == 0 || p->error_indicator) { @@ -26396,9 +27409,9 @@ _loop1_43_rule(Parser *p) return _seq; } -// _loop0_44: param_no_default +// _loop0_45: param_no_default static asdl_seq * -_loop0_44_rule(Parser *p) +_loop0_45_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26424,7 +27437,7 @@ _loop0_44_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -26447,7 +27460,7 @@ _loop0_44_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_45[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -26464,9 +27477,9 @@ _loop0_44_rule(Parser *p) return _seq; } -// _loop1_45: param_with_default +// _loop1_46: param_with_default static asdl_seq * -_loop1_45_rule(Parser *p) +_loop1_46_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26492,7 +27505,7 @@ _loop1_45_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -26515,7 +27528,7 @@ _loop1_45_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_45[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_46[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -26537,9 +27550,9 @@ _loop1_45_rule(Parser *p) return _seq; } -// _loop0_46: param_no_default +// _loop0_47: param_no_default static asdl_seq * -_loop0_46_rule(Parser *p) +_loop0_47_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26565,7 +27578,7 @@ _loop0_46_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -26588,7 +27601,7 @@ _loop0_46_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_47[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -26605,9 +27618,9 @@ _loop0_46_rule(Parser *p) return _seq; } -// _loop1_47: param_with_default +// _loop1_48: param_with_default static asdl_seq * -_loop1_47_rule(Parser *p) +_loop1_48_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26633,7 +27646,7 @@ _loop1_47_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -26656,7 +27669,7 @@ _loop1_47_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_47[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_48[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -26678,9 +27691,9 @@ _loop1_47_rule(Parser *p) return _seq; } -// _loop0_48: param_maybe_default +// _loop0_49: param_maybe_default static asdl_seq * -_loop0_48_rule(Parser *p) +_loop0_49_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26706,7 +27719,7 @@ _loop0_48_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -26729,7 +27742,7 @@ _loop0_48_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_48[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -26746,9 +27759,9 @@ _loop0_48_rule(Parser *p) return _seq; } -// _loop0_49: param_maybe_default +// _loop0_50: param_maybe_default static asdl_seq * -_loop0_49_rule(Parser *p) +_loop0_50_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26774,7 +27787,7 @@ _loop0_49_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -26797,7 +27810,7 @@ _loop0_49_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_50[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -26814,9 +27827,9 @@ _loop0_49_rule(Parser *p) return _seq; } -// _loop1_50: param_maybe_default +// _loop1_51: param_maybe_default static asdl_seq * -_loop1_50_rule(Parser *p) +_loop1_51_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26842,7 +27855,7 @@ _loop1_50_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop1_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -26865,7 +27878,7 @@ _loop1_50_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_50[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_51[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } if (_n == 0 || p->error_indicator) { @@ -26887,9 +27900,9 @@ _loop1_50_rule(Parser *p) return _seq; } -// _loop0_52: ',' with_item +// _loop0_53: ',' with_item static asdl_seq * -_loop0_52_rule(Parser *p) +_loop0_53_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26915,7 +27928,7 @@ _loop0_52_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); + D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); Token * _literal; withitem_ty elem; while ( @@ -26947,7 +27960,7 @@ _loop0_52_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_52[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -26964,9 +27977,9 @@ _loop0_52_rule(Parser *p) return _seq; } -// _gather_51: with_item _loop0_52 +// _gather_52: with_item _loop0_53 static asdl_seq * -_gather_51_rule(Parser *p) +_gather_52_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -26978,27 +27991,27 @@ _gather_51_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // with_item _loop0_52 + { // with_item _loop0_53 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_52")); + D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_53")); withitem_ty elem; asdl_seq * seq; if ( (elem = with_item_rule(p)) // with_item && - (seq = _loop0_52_rule(p)) // _loop0_52 + (seq = _loop0_53_rule(p)) // _loop0_53 ) { - D(fprintf(stderr, "%*c+ _gather_51[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_52")); + D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_53")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_51[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_52")); + D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_53")); } _res = NULL; done: @@ -27006,9 +28019,9 @@ _gather_51_rule(Parser *p) return _res; } -// _loop0_54: ',' with_item +// _loop0_55: ',' with_item static asdl_seq * -_loop0_54_rule(Parser *p) +_loop0_55_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27034,7 +28047,7 @@ _loop0_54_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); + D(fprintf(stderr, "%*c> _loop0_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); Token * _literal; withitem_ty elem; while ( @@ -27066,7 +28079,7 @@ _loop0_54_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_54[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_55[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -27083,9 +28096,9 @@ _loop0_54_rule(Parser *p) return _seq; } -// _gather_53: with_item _loop0_54 +// _gather_54: with_item _loop0_55 static asdl_seq * -_gather_53_rule(Parser *p) +_gather_54_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27097,27 +28110,27 @@ _gather_53_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // with_item _loop0_54 + { // with_item _loop0_55 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_54")); + D(fprintf(stderr, "%*c> _gather_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_55")); withitem_ty elem; asdl_seq * seq; if ( (elem = with_item_rule(p)) // with_item && - (seq = _loop0_54_rule(p)) // _loop0_54 + (seq = _loop0_55_rule(p)) // _loop0_55 ) { - D(fprintf(stderr, "%*c+ _gather_53[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_54")); + D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_55")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_53[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_54")); + D(fprintf(stderr, "%*c%s _gather_54[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_55")); } _res = NULL; done: @@ -27125,9 +28138,9 @@ _gather_53_rule(Parser *p) return _res; } -// _loop0_56: ',' with_item +// _loop0_57: ',' with_item static asdl_seq * -_loop0_56_rule(Parser *p) +_loop0_57_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27153,7 +28166,7 @@ _loop0_56_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); + D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); Token * _literal; withitem_ty elem; while ( @@ -27185,7 +28198,7 @@ _loop0_56_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_56[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -27202,9 +28215,9 @@ _loop0_56_rule(Parser *p) return _seq; } -// _gather_55: with_item _loop0_56 +// _gather_56: with_item _loop0_57 static asdl_seq * -_gather_55_rule(Parser *p) +_gather_56_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27216,27 +28229,27 @@ _gather_55_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // with_item _loop0_56 + { // with_item _loop0_57 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_56")); + D(fprintf(stderr, "%*c> _gather_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_57")); withitem_ty elem; asdl_seq * seq; if ( (elem = with_item_rule(p)) // with_item && - (seq = _loop0_56_rule(p)) // _loop0_56 + (seq = _loop0_57_rule(p)) // _loop0_57 ) { - D(fprintf(stderr, "%*c+ _gather_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_56")); + D(fprintf(stderr, "%*c+ _gather_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_57")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_55[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_56")); + D(fprintf(stderr, "%*c%s _gather_56[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_57")); } _res = NULL; done: @@ -27244,9 +28257,9 @@ _gather_55_rule(Parser *p) return _res; } -// _loop0_58: ',' with_item +// _loop0_59: ',' with_item static asdl_seq * -_loop0_58_rule(Parser *p) +_loop0_59_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27272,7 +28285,7 @@ _loop0_58_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); + D(fprintf(stderr, "%*c> _loop0_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item")); Token * _literal; withitem_ty elem; while ( @@ -27304,7 +28317,7 @@ _loop0_58_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_58[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_59[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -27321,9 +28334,9 @@ _loop0_58_rule(Parser *p) return _seq; } -// _gather_57: with_item _loop0_58 +// _gather_58: with_item _loop0_59 static asdl_seq * -_gather_57_rule(Parser *p) +_gather_58_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27335,27 +28348,27 @@ _gather_57_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // with_item _loop0_58 + { // with_item _loop0_59 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_58")); + D(fprintf(stderr, "%*c> _gather_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_59")); withitem_ty elem; asdl_seq * seq; if ( (elem = with_item_rule(p)) // with_item && - (seq = _loop0_58_rule(p)) // _loop0_58 + (seq = _loop0_59_rule(p)) // _loop0_59 ) { - D(fprintf(stderr, "%*c+ _gather_57[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_58")); + D(fprintf(stderr, "%*c+ _gather_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_59")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_57[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_58")); + D(fprintf(stderr, "%*c%s _gather_58[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_59")); } _res = NULL; done: @@ -27363,9 +28376,9 @@ _gather_57_rule(Parser *p) return _res; } -// _tmp_59: ',' | ')' | ':' +// _tmp_60: ',' | ')' | ':' static void * -_tmp_59_rule(Parser *p) +_tmp_60_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27382,18 +28395,18 @@ _tmp_59_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_60[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_59[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_60[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } { // ')' @@ -27401,18 +28414,18 @@ _tmp_59_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_60[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_59[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_60[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ':' @@ -27420,18 +28433,18 @@ _tmp_59_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_60[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_59[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_60[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } _res = NULL; @@ -27440,9 +28453,9 @@ _tmp_59_rule(Parser *p) return _res; } -// _loop1_60: except_block +// _loop1_61: except_block static asdl_seq * -_loop1_60_rule(Parser *p) +_loop1_61_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27468,7 +28481,7 @@ _loop1_60_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block")); + D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block")); excepthandler_ty except_block_var; while ( (except_block_var = except_block_rule(p)) // except_block @@ -27491,7 +28504,7 @@ _loop1_60_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block")); } if (_n == 0 || p->error_indicator) { @@ -27513,9 +28526,9 @@ _loop1_60_rule(Parser *p) return _seq; } -// _loop1_61: except_star_block +// _loop1_62: except_star_block static asdl_seq * -_loop1_61_rule(Parser *p) +_loop1_62_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27541,7 +28554,7 @@ _loop1_61_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block")); + D(fprintf(stderr, "%*c> _loop1_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block")); excepthandler_ty except_star_block_var; while ( (except_star_block_var = except_star_block_rule(p)) // except_star_block @@ -27564,7 +28577,7 @@ _loop1_61_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_62[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block")); } if (_n == 0 || p->error_indicator) { @@ -27586,9 +28599,9 @@ _loop1_61_rule(Parser *p) return _seq; } -// _tmp_62: 'as' NAME +// _tmp_63: 'as' NAME static void * -_tmp_62_rule(Parser *p) +_tmp_63_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27605,16 +28618,16 @@ _tmp_62_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_63[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -27624,7 +28637,7 @@ _tmp_62_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_63[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -27633,9 +28646,9 @@ _tmp_62_rule(Parser *p) return _res; } -// _tmp_63: 'as' NAME +// _tmp_64: 'as' NAME static void * -_tmp_63_rule(Parser *p) +_tmp_64_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27652,16 +28665,16 @@ _tmp_63_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_63[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -27671,7 +28684,7 @@ _tmp_63_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_63[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_64[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -27680,9 +28693,9 @@ _tmp_63_rule(Parser *p) return _res; } -// _loop1_64: case_block +// _loop1_65: case_block static asdl_seq * -_loop1_64_rule(Parser *p) +_loop1_65_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27708,7 +28721,7 @@ _loop1_64_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block")); + D(fprintf(stderr, "%*c> _loop1_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block")); match_case_ty case_block_var; while ( (case_block_var = case_block_rule(p)) // case_block @@ -27731,7 +28744,7 @@ _loop1_64_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_64[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_65[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block")); } if (_n == 0 || p->error_indicator) { @@ -27753,9 +28766,9 @@ _loop1_64_rule(Parser *p) return _seq; } -// _loop0_66: '|' closed_pattern +// _loop0_67: '|' closed_pattern static asdl_seq * -_loop0_66_rule(Parser *p) +_loop0_67_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27781,7 +28794,7 @@ _loop0_66_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern")); + D(fprintf(stderr, "%*c> _loop0_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern")); Token * _literal; pattern_ty elem; while ( @@ -27813,7 +28826,7 @@ _loop0_66_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_66[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_67[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -27830,9 +28843,9 @@ _loop0_66_rule(Parser *p) return _seq; } -// _gather_65: closed_pattern _loop0_66 +// _gather_66: closed_pattern _loop0_67 static asdl_seq * -_gather_65_rule(Parser *p) +_gather_66_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -27844,85 +28857,27 @@ _gather_65_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // closed_pattern _loop0_66 + { // closed_pattern _loop0_67 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_66")); + D(fprintf(stderr, "%*c> _gather_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_67")); pattern_ty elem; asdl_seq * seq; if ( (elem = closed_pattern_rule(p)) // closed_pattern && - (seq = _loop0_66_rule(p)) // _loop0_66 + (seq = _loop0_67_rule(p)) // _loop0_67 ) { - D(fprintf(stderr, "%*c+ _gather_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_66")); + D(fprintf(stderr, "%*c+ _gather_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_67")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_65[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_66")); - } - _res = NULL; - done: - p->level--; - return _res; -} - -// _tmp_67: '+' | '-' -static void * -_tmp_67_rule(Parser *p) -{ - if (p->level++ == MAXSTACK) { - p->error_indicator = 1; - PyErr_NoMemory(); - } - if (p->error_indicator) { - p->level--; - return NULL; - } - void * _res = NULL; - int _mark = p->mark; - { // '+' - if (p->error_indicator) { - p->level--; - return NULL; - } - D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'")); - Token * _literal; - if ( - (_literal = _PyPegen_expect_token(p, 14)) // token='+' - ) - { - D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'")); - _res = _literal; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'")); - } - { // '-' - if (p->error_indicator) { - p->level--; - return NULL; - } - D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'")); - Token * _literal; - if ( - (_literal = _PyPegen_expect_token(p, 15)) // token='-' - ) - { - D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'")); - _res = _literal; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'")); + D(fprintf(stderr, "%*c%s _gather_66[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_67")); } _res = NULL; done: @@ -27988,7 +28943,7 @@ _tmp_68_rule(Parser *p) return _res; } -// _tmp_69: '.' | '(' | '=' +// _tmp_69: '+' | '-' static void * _tmp_69_rule(Parser *p) { @@ -28002,62 +28957,43 @@ _tmp_69_rule(Parser *p) } void * _res = NULL; int _mark = p->mark; - { // '.' - if (p->error_indicator) { - p->level--; - return NULL; - } - D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); - Token * _literal; - if ( - (_literal = _PyPegen_expect_token(p, 23)) // token='.' - ) - { - D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); - _res = _literal; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); - } - { // '(' + { // '+' if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'")); Token * _literal; if ( - (_literal = _PyPegen_expect_token(p, 7)) // token='(' + (_literal = _PyPegen_expect_token(p, 14)) // token='+' ) { - D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'")); _res = _literal; goto done; } p->mark = _mark; D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'")); } - { // '=' + { // '-' if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'")); Token * _literal; if ( - (_literal = _PyPegen_expect_token(p, 22)) // token='=' + (_literal = _PyPegen_expect_token(p, 15)) // token='-' ) { - D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'")); _res = _literal; goto done; } p->mark = _mark; D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'")); } _res = NULL; done: @@ -28142,9 +29078,86 @@ _tmp_70_rule(Parser *p) return _res; } -// _loop0_72: ',' maybe_star_pattern +// _tmp_71: '.' | '(' | '=' +static void * +_tmp_71_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '.' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 23)) // token='.' + ) + { + D(fprintf(stderr, "%*c+ _tmp_71[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_71[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); + } + { // '(' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 7)) // token='(' + ) + { + D(fprintf(stderr, "%*c+ _tmp_71[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_71[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('")); + } + { // '=' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 22)) // token='=' + ) + { + D(fprintf(stderr, "%*c+ _tmp_71[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_71[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _loop0_73: ',' maybe_star_pattern static asdl_seq * -_loop0_72_rule(Parser *p) +_loop0_73_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28170,7 +29183,7 @@ _loop0_72_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern")); + D(fprintf(stderr, "%*c> _loop0_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern")); Token * _literal; pattern_ty elem; while ( @@ -28202,7 +29215,7 @@ _loop0_72_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_72[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_73[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -28219,9 +29232,9 @@ _loop0_72_rule(Parser *p) return _seq; } -// _gather_71: maybe_star_pattern _loop0_72 +// _gather_72: maybe_star_pattern _loop0_73 static asdl_seq * -_gather_71_rule(Parser *p) +_gather_72_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28233,27 +29246,27 @@ _gather_71_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // maybe_star_pattern _loop0_72 + { // maybe_star_pattern _loop0_73 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_72")); + D(fprintf(stderr, "%*c> _gather_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_73")); pattern_ty elem; asdl_seq * seq; if ( (elem = maybe_star_pattern_rule(p)) // maybe_star_pattern && - (seq = _loop0_72_rule(p)) // _loop0_72 + (seq = _loop0_73_rule(p)) // _loop0_73 ) { - D(fprintf(stderr, "%*c+ _gather_71[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_72")); + D(fprintf(stderr, "%*c+ _gather_72[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_73")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_71[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_72")); + D(fprintf(stderr, "%*c%s _gather_72[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_73")); } _res = NULL; done: @@ -28261,9 +29274,9 @@ _gather_71_rule(Parser *p) return _res; } -// _loop0_74: ',' key_value_pattern +// _loop0_75: ',' key_value_pattern static asdl_seq * -_loop0_74_rule(Parser *p) +_loop0_75_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28289,7 +29302,7 @@ _loop0_74_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern")); + D(fprintf(stderr, "%*c> _loop0_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern")); Token * _literal; KeyPatternPair* elem; while ( @@ -28321,7 +29334,7 @@ _loop0_74_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_75[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -28338,9 +29351,9 @@ _loop0_74_rule(Parser *p) return _seq; } -// _gather_73: key_value_pattern _loop0_74 +// _gather_74: key_value_pattern _loop0_75 static asdl_seq * -_gather_73_rule(Parser *p) +_gather_74_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28352,27 +29365,27 @@ _gather_73_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // key_value_pattern _loop0_74 + { // key_value_pattern _loop0_75 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_74")); + D(fprintf(stderr, "%*c> _gather_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_75")); KeyPatternPair* elem; asdl_seq * seq; if ( (elem = key_value_pattern_rule(p)) // key_value_pattern && - (seq = _loop0_74_rule(p)) // _loop0_74 + (seq = _loop0_75_rule(p)) // _loop0_75 ) { - D(fprintf(stderr, "%*c+ _gather_73[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_74")); + D(fprintf(stderr, "%*c+ _gather_74[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_75")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_73[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_74")); + D(fprintf(stderr, "%*c%s _gather_74[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_75")); } _res = NULL; done: @@ -28380,9 +29393,9 @@ _gather_73_rule(Parser *p) return _res; } -// _tmp_75: literal_expr | attr +// _tmp_76: literal_expr | attr static void * -_tmp_75_rule(Parser *p) +_tmp_76_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28399,18 +29412,18 @@ _tmp_75_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr")); + D(fprintf(stderr, "%*c> _tmp_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr")); expr_ty literal_expr_var; if ( (literal_expr_var = literal_expr_rule(p)) // literal_expr ) { - D(fprintf(stderr, "%*c+ _tmp_75[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr")); + D(fprintf(stderr, "%*c+ _tmp_76[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr")); _res = literal_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_75[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_76[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr")); } { // attr @@ -28418,18 +29431,18 @@ _tmp_75_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr")); + D(fprintf(stderr, "%*c> _tmp_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr")); expr_ty attr_var; if ( (attr_var = attr_rule(p)) // attr ) { - D(fprintf(stderr, "%*c+ _tmp_75[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr")); + D(fprintf(stderr, "%*c+ _tmp_76[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr")); _res = attr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_75[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_76[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr")); } _res = NULL; @@ -28438,9 +29451,9 @@ _tmp_75_rule(Parser *p) return _res; } -// _loop0_77: ',' pattern +// _loop0_78: ',' pattern static asdl_seq * -_loop0_77_rule(Parser *p) +_loop0_78_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28466,7 +29479,7 @@ _loop0_77_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern")); + D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern")); Token * _literal; pattern_ty elem; while ( @@ -28498,7 +29511,7 @@ _loop0_77_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -28515,9 +29528,9 @@ _loop0_77_rule(Parser *p) return _seq; } -// _gather_76: pattern _loop0_77 +// _gather_77: pattern _loop0_78 static asdl_seq * -_gather_76_rule(Parser *p) +_gather_77_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28529,27 +29542,27 @@ _gather_76_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // pattern _loop0_77 + { // pattern _loop0_78 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_77")); + D(fprintf(stderr, "%*c> _gather_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_78")); pattern_ty elem; asdl_seq * seq; if ( (elem = pattern_rule(p)) // pattern && - (seq = _loop0_77_rule(p)) // _loop0_77 + (seq = _loop0_78_rule(p)) // _loop0_78 ) { - D(fprintf(stderr, "%*c+ _gather_76[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_77")); + D(fprintf(stderr, "%*c+ _gather_77[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_78")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_76[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_77")); + D(fprintf(stderr, "%*c%s _gather_77[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_78")); } _res = NULL; done: @@ -28557,9 +29570,9 @@ _gather_76_rule(Parser *p) return _res; } -// _loop0_79: ',' keyword_pattern +// _loop0_80: ',' keyword_pattern static asdl_seq * -_loop0_79_rule(Parser *p) +_loop0_80_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28585,7 +29598,7 @@ _loop0_79_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern")); + D(fprintf(stderr, "%*c> _loop0_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern")); Token * _literal; KeyPatternPair* elem; while ( @@ -28617,7 +29630,7 @@ _loop0_79_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_80[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -28634,9 +29647,9 @@ _loop0_79_rule(Parser *p) return _seq; } -// _gather_78: keyword_pattern _loop0_79 +// _gather_79: keyword_pattern _loop0_80 static asdl_seq * -_gather_78_rule(Parser *p) +_gather_79_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28648,27 +29661,27 @@ _gather_78_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // keyword_pattern _loop0_79 + { // keyword_pattern _loop0_80 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_79")); + D(fprintf(stderr, "%*c> _gather_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_80")); KeyPatternPair* elem; asdl_seq * seq; if ( (elem = keyword_pattern_rule(p)) // keyword_pattern && - (seq = _loop0_79_rule(p)) // _loop0_79 + (seq = _loop0_80_rule(p)) // _loop0_80 ) { - D(fprintf(stderr, "%*c+ _gather_78[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_79")); + D(fprintf(stderr, "%*c+ _gather_79[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_80")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_78[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_79")); + D(fprintf(stderr, "%*c%s _gather_79[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_80")); } _res = NULL; done: @@ -28676,9 +29689,9 @@ _gather_78_rule(Parser *p) return _res; } -// _loop1_80: (',' expression) +// _loop1_81: (',' expression) static asdl_seq * -_loop1_80_rule(Parser *p) +_loop1_81_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28704,13 +29717,13 @@ _loop1_80_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_228_var; + D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); + void *_tmp_248_var; while ( - (_tmp_228_var = _tmp_228_rule(p)) // ',' expression + (_tmp_248_var = _tmp_248_rule(p)) // ',' expression ) { - _res = _tmp_228_var; + _res = _tmp_248_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28727,7 +29740,7 @@ _loop1_80_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)")); } if (_n == 0 || p->error_indicator) { @@ -28749,9 +29762,9 @@ _loop1_80_rule(Parser *p) return _seq; } -// _loop1_81: (',' star_expression) +// _loop1_82: (',' star_expression) static asdl_seq * -_loop1_81_rule(Parser *p) +_loop1_82_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28777,13 +29790,13 @@ _loop1_81_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_229_var; + D(fprintf(stderr, "%*c> _loop1_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); + void *_tmp_249_var; while ( - (_tmp_229_var = _tmp_229_rule(p)) // ',' star_expression + (_tmp_249_var = _tmp_249_rule(p)) // ',' star_expression ) { - _res = _tmp_229_var; + _res = _tmp_249_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28800,7 +29813,7 @@ _loop1_81_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_82[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)")); } if (_n == 0 || p->error_indicator) { @@ -28822,9 +29835,9 @@ _loop1_81_rule(Parser *p) return _seq; } -// _loop0_83: ',' star_named_expression +// _loop0_84: ',' star_named_expression static asdl_seq * -_loop0_83_rule(Parser *p) +_loop0_84_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28850,7 +29863,7 @@ _loop0_83_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression")); + D(fprintf(stderr, "%*c> _loop0_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression")); Token * _literal; expr_ty elem; while ( @@ -28882,7 +29895,7 @@ _loop0_83_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_83[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_84[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -28899,9 +29912,9 @@ _loop0_83_rule(Parser *p) return _seq; } -// _gather_82: star_named_expression _loop0_83 +// _gather_83: star_named_expression _loop0_84 static asdl_seq * -_gather_82_rule(Parser *p) +_gather_83_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28913,27 +29926,27 @@ _gather_82_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // star_named_expression _loop0_83 + { // star_named_expression _loop0_84 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_83")); + D(fprintf(stderr, "%*c> _gather_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_84")); expr_ty elem; asdl_seq * seq; if ( (elem = star_named_expression_rule(p)) // star_named_expression && - (seq = _loop0_83_rule(p)) // _loop0_83 + (seq = _loop0_84_rule(p)) // _loop0_84 ) { - D(fprintf(stderr, "%*c+ _gather_82[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_83")); + D(fprintf(stderr, "%*c+ _gather_83[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_84")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_82[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_83")); + D(fprintf(stderr, "%*c%s _gather_83[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_84")); } _res = NULL; done: @@ -28941,9 +29954,9 @@ _gather_82_rule(Parser *p) return _res; } -// _loop1_84: ('or' conjunction) +// _loop1_85: ('or' conjunction) static asdl_seq * -_loop1_84_rule(Parser *p) +_loop1_85_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -28969,13 +29982,13 @@ _loop1_84_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_230_var; + D(fprintf(stderr, "%*c> _loop1_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); + void *_tmp_250_var; while ( - (_tmp_230_var = _tmp_230_rule(p)) // 'or' conjunction + (_tmp_250_var = _tmp_250_rule(p)) // 'or' conjunction ) { - _res = _tmp_230_var; + _res = _tmp_250_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28992,7 +30005,7 @@ _loop1_84_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_85[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)")); } if (_n == 0 || p->error_indicator) { @@ -29014,9 +30027,9 @@ _loop1_84_rule(Parser *p) return _seq; } -// _loop1_85: ('and' inversion) +// _loop1_86: ('and' inversion) static asdl_seq * -_loop1_85_rule(Parser *p) +_loop1_86_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29042,13 +30055,13 @@ _loop1_85_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_231_var; + D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); + void *_tmp_251_var; while ( - (_tmp_231_var = _tmp_231_rule(p)) // 'and' inversion + (_tmp_251_var = _tmp_251_rule(p)) // 'and' inversion ) { - _res = _tmp_231_var; + _res = _tmp_251_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29065,7 +30078,7 @@ _loop1_85_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_85[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_86[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)")); } if (_n == 0 || p->error_indicator) { @@ -29087,9 +30100,9 @@ _loop1_85_rule(Parser *p) return _seq; } -// _loop1_86: compare_op_bitwise_or_pair +// _loop1_87: compare_op_bitwise_or_pair static asdl_seq * -_loop1_86_rule(Parser *p) +_loop1_87_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29115,7 +30128,7 @@ _loop1_86_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair")); + D(fprintf(stderr, "%*c> _loop1_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair")); CmpopExprPair* compare_op_bitwise_or_pair_var; while ( (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p)) // compare_op_bitwise_or_pair @@ -29138,7 +30151,7 @@ _loop1_86_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_86[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_87[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair")); } if (_n == 0 || p->error_indicator) { @@ -29160,9 +30173,9 @@ _loop1_86_rule(Parser *p) return _seq; } -// _tmp_87: '!=' +// _tmp_88: '!=' static void * -_tmp_87_rule(Parser *p) +_tmp_88_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29179,13 +30192,13 @@ _tmp_87_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='")); + D(fprintf(stderr, "%*c> _tmp_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='")); Token * tok; if ( (tok = _PyPegen_expect_token(p, 28)) // token='!=' ) { - D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='")); + D(fprintf(stderr, "%*c+ _tmp_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='")); _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -29195,7 +30208,7 @@ _tmp_87_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_87[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_88[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='")); } _res = NULL; @@ -29204,9 +30217,9 @@ _tmp_87_rule(Parser *p) return _res; } -// _loop0_89: ',' (slice | starred_expression) +// _loop0_90: ',' (slice | starred_expression) static asdl_seq * -_loop0_89_rule(Parser *p) +_loop0_90_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29232,13 +30245,13 @@ _loop0_89_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)")); + D(fprintf(stderr, "%*c> _loop0_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_232_rule(p)) // slice | starred_expression + (elem = _tmp_252_rule(p)) // slice | starred_expression ) { _res = elem; @@ -29264,7 +30277,7 @@ _loop0_89_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_89[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_90[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -29281,9 +30294,9 @@ _loop0_89_rule(Parser *p) return _seq; } -// _gather_88: (slice | starred_expression) _loop0_89 +// _gather_89: (slice | starred_expression) _loop0_90 static asdl_seq * -_gather_88_rule(Parser *p) +_gather_89_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29295,27 +30308,27 @@ _gather_88_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (slice | starred_expression) _loop0_89 + { // (slice | starred_expression) _loop0_90 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_89")); + D(fprintf(stderr, "%*c> _gather_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_90")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_232_rule(p)) // slice | starred_expression + (elem = _tmp_252_rule(p)) // slice | starred_expression && - (seq = _loop0_89_rule(p)) // _loop0_89 + (seq = _loop0_90_rule(p)) // _loop0_90 ) { - D(fprintf(stderr, "%*c+ _gather_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_89")); + D(fprintf(stderr, "%*c+ _gather_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_90")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_88[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_89")); + D(fprintf(stderr, "%*c%s _gather_89[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_90")); } _res = NULL; done: @@ -29323,9 +30336,9 @@ _gather_88_rule(Parser *p) return _res; } -// _tmp_90: ':' expression? +// _tmp_91: ':' expression? static void * -_tmp_90_rule(Parser *p) +_tmp_91_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29342,7 +30355,7 @@ _tmp_90_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?")); + D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?")); Token * _literal; void *d; if ( @@ -29351,7 +30364,7 @@ _tmp_90_rule(Parser *p) (d = expression_rule(p), !p->error_indicator) // expression? ) { - D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?")); + D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?")); _res = d; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -29361,7 +30374,7 @@ _tmp_90_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?")); } _res = NULL; @@ -29370,9 +30383,67 @@ _tmp_90_rule(Parser *p) return _res; } -// _tmp_91: tuple | group | genexp +// _tmp_92: STRING | FSTRING_START static void * -_tmp_91_rule(Parser *p) +_tmp_92_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // STRING + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING")); + expr_ty string_var; + if ( + (string_var = _PyPegen_string_token(p)) // STRING + ) + { + D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING")); + _res = string_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING")); + } + { // FSTRING_START + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START")); + Token * fstring_start_var; + if ( + (fstring_start_var = _PyPegen_expect_token(p, FSTRING_START)) // token='FSTRING_START' + ) + { + D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START")); + _res = fstring_start_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_93: tuple | group | genexp +static void * +_tmp_93_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29389,18 +30460,18 @@ _tmp_91_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); expr_ty tuple_var; if ( (tuple_var = tuple_rule(p)) // tuple ) { - D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); _res = tuple_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple")); } { // group @@ -29408,18 +30479,18 @@ _tmp_91_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group")); + D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group")); expr_ty group_var; if ( (group_var = group_rule(p)) // group ) { - D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group")); + D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group")); _res = group_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group")); } { // genexp @@ -29427,18 +30498,18 @@ _tmp_91_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); expr_ty genexp_var; if ( (genexp_var = genexp_rule(p)) // genexp ) { - D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); _res = genexp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp")); } _res = NULL; @@ -29447,9 +30518,9 @@ _tmp_91_rule(Parser *p) return _res; } -// _tmp_92: list | listcomp +// _tmp_94: list | listcomp static void * -_tmp_92_rule(Parser *p) +_tmp_94_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29466,18 +30537,18 @@ _tmp_92_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c> _tmp_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); expr_ty list_var; if ( (list_var = list_rule(p)) // list ) { - D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c+ _tmp_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); _res = list_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_94[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list")); } { // listcomp @@ -29485,18 +30556,18 @@ _tmp_92_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp")); + D(fprintf(stderr, "%*c> _tmp_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp")); expr_ty listcomp_var; if ( (listcomp_var = listcomp_rule(p)) // listcomp ) { - D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp")); + D(fprintf(stderr, "%*c+ _tmp_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp")); _res = listcomp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_94[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp")); } _res = NULL; @@ -29505,9 +30576,9 @@ _tmp_92_rule(Parser *p) return _res; } -// _tmp_93: dict | set | dictcomp | setcomp +// _tmp_95: dict | set | dictcomp | setcomp static void * -_tmp_93_rule(Parser *p) +_tmp_95_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29524,18 +30595,18 @@ _tmp_93_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict")); + D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict")); expr_ty dict_var; if ( (dict_var = dict_rule(p)) // dict ) { - D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict")); + D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict")); _res = dict_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict")); } { // set @@ -29543,18 +30614,18 @@ _tmp_93_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set")); + D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set")); expr_ty set_var; if ( (set_var = set_rule(p)) // set ) { - D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set")); + D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set")); _res = set_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set")); } { // dictcomp @@ -29562,18 +30633,18 @@ _tmp_93_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp")); + D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp")); expr_ty dictcomp_var; if ( (dictcomp_var = dictcomp_rule(p)) // dictcomp ) { - D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp")); + D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp")); _res = dictcomp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp")); } { // setcomp @@ -29581,18 +30652,18 @@ _tmp_93_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp")); + D(fprintf(stderr, "%*c> _tmp_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp")); expr_ty setcomp_var; if ( (setcomp_var = setcomp_rule(p)) // setcomp ) { - D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp")); + D(fprintf(stderr, "%*c+ _tmp_95[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp")); _res = setcomp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_95[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp")); } _res = NULL; @@ -29601,9 +30672,9 @@ _tmp_93_rule(Parser *p) return _res; } -// _tmp_94: yield_expr | named_expression +// _tmp_96: yield_expr | named_expression static void * -_tmp_94_rule(Parser *p) +_tmp_96_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29620,18 +30691,18 @@ _tmp_94_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_94[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // named_expression @@ -29639,18 +30710,18 @@ _tmp_94_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression")); + D(fprintf(stderr, "%*c> _tmp_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression")); expr_ty named_expression_var; if ( (named_expression_var = named_expression_rule(p)) // named_expression ) { - D(fprintf(stderr, "%*c+ _tmp_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression")); + D(fprintf(stderr, "%*c+ _tmp_96[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression")); _res = named_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_94[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_96[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression")); } _res = NULL; @@ -29659,143 +30730,7 @@ _tmp_94_rule(Parser *p) return _res; } -// _loop0_95: lambda_param_no_default -static asdl_seq * -_loop0_95_rule(Parser *p) -{ - if (p->level++ == MAXSTACK) { - p->error_indicator = 1; - PyErr_NoMemory(); - } - if (p->error_indicator) { - p->level--; - return NULL; - } - void *_res = NULL; - int _mark = p->mark; - void **_children = PyMem_Malloc(sizeof(void *)); - if (!_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; - } - Py_ssize_t _children_capacity = 1; - Py_ssize_t _n = 0; - { // lambda_param_no_default - if (p->error_indicator) { - p->level--; - return NULL; - } - D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); - arg_ty lambda_param_no_default_var; - while ( - (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default - ) - { - _res = lambda_param_no_default_var; - if (_n == _children_capacity) { - _children_capacity *= 2; - void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); - if (!_new_children) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; - } - _children = _new_children; - } - _children[_n++] = _res; - _mark = p->mark; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); - } - asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); - if (!_seq) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; - } - for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); - PyMem_Free(_children); - p->level--; - return _seq; -} - -// _loop0_96: lambda_param_with_default -static asdl_seq * -_loop0_96_rule(Parser *p) -{ - if (p->level++ == MAXSTACK) { - p->error_indicator = 1; - PyErr_NoMemory(); - } - if (p->error_indicator) { - p->level--; - return NULL; - } - void *_res = NULL; - int _mark = p->mark; - void **_children = PyMem_Malloc(sizeof(void *)); - if (!_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; - } - Py_ssize_t _children_capacity = 1; - Py_ssize_t _n = 0; - { // lambda_param_with_default - if (p->error_indicator) { - p->level--; - return NULL; - } - D(fprintf(stderr, "%*c> _loop0_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); - NameDefaultPair* lambda_param_with_default_var; - while ( - (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default - ) - { - _res = lambda_param_with_default_var; - if (_n == _children_capacity) { - _children_capacity *= 2; - void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); - if (!_new_children) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; - } - _children = _new_children; - } - _children[_n++] = _res; - _mark = p->mark; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_96[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); - } - asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); - if (!_seq) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; - } - for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); - PyMem_Free(_children); - p->level--; - return _seq; -} - -// _loop0_97: lambda_param_with_default +// _loop0_97: lambda_param_no_default static asdl_seq * _loop0_97_rule(Parser *p) { @@ -29818,18 +30753,18 @@ _loop0_97_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_with_default + { // lambda_param_no_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); - NameDefaultPair* lambda_param_with_default_var; + D(fprintf(stderr, "%*c> _loop0_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + arg_ty lambda_param_no_default_var; while ( - (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default + (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) { - _res = lambda_param_with_default_var; + _res = lambda_param_no_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29847,7 +30782,7 @@ _loop0_97_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s _loop0_97[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -29863,9 +30798,9 @@ _loop0_97_rule(Parser *p) return _seq; } -// _loop1_98: lambda_param_no_default +// _loop0_98: lambda_param_with_default static asdl_seq * -_loop1_98_rule(Parser *p) +_loop0_98_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -29886,18 +30821,18 @@ _loop1_98_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_no_default + { // lambda_param_with_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); - arg_ty lambda_param_no_default_var; + D(fprintf(stderr, "%*c> _loop0_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + NameDefaultPair* lambda_param_with_default_var; while ( - (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default + (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default ) { - _res = lambda_param_no_default_var; + _res = lambda_param_with_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29914,13 +30849,8 @@ _loop1_98_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_98[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); - } - if (_n == 0 || p->error_indicator) { - PyMem_Free(_children); - p->level--; - return NULL; + D(fprintf(stderr, "%*c%s _loop0_98[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -30004,7 +30934,7 @@ _loop0_99_rule(Parser *p) return _seq; } -// _loop1_100: lambda_param_with_default +// _loop1_100: lambda_param_no_default static asdl_seq * _loop1_100_rule(Parser *p) { @@ -30027,18 +30957,18 @@ _loop1_100_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_with_default + { // lambda_param_no_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); - NameDefaultPair* lambda_param_with_default_var; + D(fprintf(stderr, "%*c> _loop1_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + arg_ty lambda_param_no_default_var; while ( - (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default + (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) { - _res = lambda_param_with_default_var; + _res = lambda_param_no_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30056,7 +30986,7 @@ _loop1_100_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s _loop1_100[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } if (_n == 0 || p->error_indicator) { PyMem_Free(_children); @@ -30077,9 +31007,9 @@ _loop1_100_rule(Parser *p) return _seq; } -// _loop1_101: lambda_param_no_default +// _loop0_101: lambda_param_with_default static asdl_seq * -_loop1_101_rule(Parser *p) +_loop0_101_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -30100,18 +31030,18 @@ _loop1_101_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_no_default + { // lambda_param_with_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); - arg_ty lambda_param_no_default_var; + D(fprintf(stderr, "%*c> _loop0_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + NameDefaultPair* lambda_param_with_default_var; while ( - (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default + (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default ) { - _res = lambda_param_no_default_var; + _res = lambda_param_with_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30128,13 +31058,8 @@ _loop1_101_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_101[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); - } - if (_n == 0 || p->error_indicator) { - PyMem_Free(_children); - p->level--; - return NULL; + D(fprintf(stderr, "%*c%s _loop0_101[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -30150,7 +31075,7 @@ _loop1_101_rule(Parser *p) return _seq; } -// _loop1_102: lambda_param_no_default +// _loop1_102: lambda_param_with_default static asdl_seq * _loop1_102_rule(Parser *p) { @@ -30173,18 +31098,18 @@ _loop1_102_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_no_default + { // lambda_param_with_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); - arg_ty lambda_param_no_default_var; + D(fprintf(stderr, "%*c> _loop1_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + NameDefaultPair* lambda_param_with_default_var; while ( - (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default + (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default ) { - _res = lambda_param_no_default_var; + _res = lambda_param_with_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30202,7 +31127,7 @@ _loop1_102_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s _loop1_102[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { PyMem_Free(_children); @@ -30223,9 +31148,9 @@ _loop1_102_rule(Parser *p) return _seq; } -// _loop0_103: lambda_param_no_default +// _loop1_103: lambda_param_no_default static asdl_seq * -_loop0_103_rule(Parser *p) +_loop1_103_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -30251,7 +31176,7 @@ _loop0_103_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop1_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -30274,9 +31199,14 @@ _loop0_103_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_103[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_103[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } + if (_n == 0 || p->error_indicator) { + PyMem_Free(_children); + p->level--; + return NULL; + } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { PyMem_Free(_children); @@ -30291,7 +31221,7 @@ _loop0_103_rule(Parser *p) return _seq; } -// _loop1_104: lambda_param_with_default +// _loop1_104: lambda_param_no_default static asdl_seq * _loop1_104_rule(Parser *p) { @@ -30314,18 +31244,18 @@ _loop1_104_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_with_default + { // lambda_param_no_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); - NameDefaultPair* lambda_param_with_default_var; + D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + arg_ty lambda_param_no_default_var; while ( - (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default + (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) { - _res = lambda_param_with_default_var; + _res = lambda_param_no_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30343,7 +31273,7 @@ _loop1_104_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s _loop1_104[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } if (_n == 0 || p->error_indicator) { PyMem_Free(_children); @@ -30505,7 +31435,7 @@ _loop1_106_rule(Parser *p) return _seq; } -// _loop0_107: lambda_param_maybe_default +// _loop0_107: lambda_param_no_default static asdl_seq * _loop0_107_rule(Parser *p) { @@ -30528,18 +31458,18 @@ _loop0_107_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_maybe_default + { // lambda_param_no_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); - NameDefaultPair* lambda_param_maybe_default_var; + D(fprintf(stderr, "%*c> _loop0_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + arg_ty lambda_param_no_default_var; while ( - (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default + (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) { - _res = lambda_param_maybe_default_var; + _res = lambda_param_no_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30557,7 +31487,7 @@ _loop0_107_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s _loop0_107[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -30573,7 +31503,7 @@ _loop0_107_rule(Parser *p) return _seq; } -// _loop1_108: lambda_param_maybe_default +// _loop1_108: lambda_param_with_default static asdl_seq * _loop1_108_rule(Parser *p) { @@ -30596,18 +31526,18 @@ _loop1_108_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // lambda_param_maybe_default + { // lambda_param_with_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); - NameDefaultPair* lambda_param_maybe_default_var; + D(fprintf(stderr, "%*c> _loop1_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + NameDefaultPair* lambda_param_with_default_var; while ( - (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default + (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default ) { - _res = lambda_param_maybe_default_var; + _res = lambda_param_with_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30625,7 +31555,7 @@ _loop1_108_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s _loop1_108[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { PyMem_Free(_children); @@ -30646,9 +31576,9 @@ _loop1_108_rule(Parser *p) return _seq; } -// _loop1_109: STRING +// _loop0_109: lambda_param_maybe_default static asdl_seq * -_loop1_109_rule(Parser *p) +_loop0_109_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -30669,18 +31599,18 @@ _loop1_109_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // STRING + { // lambda_param_maybe_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING")); - expr_ty string_var; + D(fprintf(stderr, "%*c> _loop0_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + NameDefaultPair* lambda_param_maybe_default_var; while ( - (string_var = _PyPegen_string_token(p)) // STRING + (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default ) { - _res = string_var; + _res = lambda_param_maybe_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30697,13 +31627,8 @@ _loop1_109_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_109[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING")); - } - if (_n == 0 || p->error_indicator) { - PyMem_Free(_children); - p->level--; - return NULL; + D(fprintf(stderr, "%*c%s _loop0_109[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -30719,59 +31644,9 @@ _loop1_109_rule(Parser *p) return _seq; } -// _tmp_110: star_named_expression ',' star_named_expressions? -static void * -_tmp_110_rule(Parser *p) -{ - if (p->level++ == MAXSTACK) { - p->error_indicator = 1; - PyErr_NoMemory(); - } - if (p->error_indicator) { - p->level--; - return NULL; - } - void * _res = NULL; - int _mark = p->mark; - { // star_named_expression ',' star_named_expressions? - if (p->error_indicator) { - p->level--; - return NULL; - } - D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); - Token * _literal; - expr_ty y; - void *z; - if ( - (y = star_named_expression_rule(p)) // star_named_expression - && - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (z = star_named_expressions_rule(p), !p->error_indicator) // star_named_expressions? - ) - { - D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); - _res = _PyPegen_seq_insert_in_front ( p , y , z ); - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - p->level--; - return NULL; - } - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?")); - } - _res = NULL; - done: - p->level--; - return _res; -} - -// _loop0_112: ',' double_starred_kvpair +// _loop1_110: lambda_param_maybe_default static asdl_seq * -_loop0_112_rule(Parser *p) +_loop1_110_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -30792,27 +31667,18 @@ _loop0_112_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // ',' double_starred_kvpair + { // lambda_param_maybe_default if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); - Token * _literal; - KeyValuePair* elem; + D(fprintf(stderr, "%*c> _loop1_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + NameDefaultPair* lambda_param_maybe_default_var; while ( - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair + (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default ) { - _res = elem; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - PyMem_Free(_children); - p->level--; - return NULL; - } + _res = lambda_param_maybe_default_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30829,8 +31695,13 @@ _loop0_112_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c%s _loop1_110[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); + } + if (_n == 0 || p->error_indicator) { + PyMem_Free(_children); + p->level--; + return NULL; } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -30846,9 +31717,9 @@ _loop0_112_rule(Parser *p) return _seq; } -// _gather_111: double_starred_kvpair _loop0_112 -static asdl_seq * -_gather_111_rule(Parser *p) +// _tmp_111: yield_expr | star_expressions +static void * +_tmp_111_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -30858,112 +31729,55 @@ _gather_111_rule(Parser *p) p->level--; return NULL; } - asdl_seq * _res = NULL; + void * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_112 + { // yield_expr if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_112")); - KeyValuePair* elem; - asdl_seq * seq; + D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; if ( - (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair - && - (seq = _loop0_112_rule(p)) // _loop0_112 + (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _gather_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_112")); - _res = _PyPegen_seq_insert_in_front(p, elem, seq); + D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_111[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_112")); - } - _res = NULL; - done: - p->level--; - return _res; -} - -// _loop1_113: for_if_clause -static asdl_seq * -_loop1_113_rule(Parser *p) -{ - if (p->level++ == MAXSTACK) { - p->error_indicator = 1; - PyErr_NoMemory(); - } - if (p->error_indicator) { - p->level--; - return NULL; - } - void *_res = NULL; - int _mark = p->mark; - void **_children = PyMem_Malloc(sizeof(void *)); - if (!_children) { - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; + D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } - Py_ssize_t _children_capacity = 1; - Py_ssize_t _n = 0; - { // for_if_clause + { // star_expressions if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause")); - comprehension_ty for_if_clause_var; - while ( - (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause + D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - _res = for_if_clause_var; - if (_n == _children_capacity) { - _children_capacity *= 2; - void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); - if (!_new_children) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; - } - _children = _new_children; - } - _children[_n++] = _res; - _mark = p->mark; + D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_113[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause")); - } - if (_n == 0 || p->error_indicator) { - PyMem_Free(_children); - p->level--; - return NULL; - } - asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); - if (!_seq) { - PyMem_Free(_children); - p->error_indicator = 1; - PyErr_NoMemory(); - p->level--; - return NULL; + D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } - for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); - PyMem_Free(_children); + _res = NULL; + done: p->level--; - return _seq; + return _res; } -// _loop0_114: ('if' disjunction) +// _loop0_112: fstring_format_spec static asdl_seq * -_loop0_114_rule(Parser *p) +_loop0_112_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -30984,18 +31798,18 @@ _loop0_114_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // ('if' disjunction) + { // fstring_format_spec if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_233_var; + D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec")); + expr_ty fstring_format_spec_var; while ( - (_tmp_233_var = _tmp_233_rule(p)) // 'if' disjunction + (fstring_format_spec_var = fstring_format_spec_rule(p)) // fstring_format_spec ) { - _res = _tmp_233_var; + _res = fstring_format_spec_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -31012,8 +31826,8 @@ _loop0_114_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_114[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)")); + D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -31029,9 +31843,9 @@ _loop0_114_rule(Parser *p) return _seq; } -// _loop0_115: ('if' disjunction) +// _loop1_113: (fstring | string) static asdl_seq * -_loop0_115_rule(Parser *p) +_loop1_113_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31052,18 +31866,18 @@ _loop0_115_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // ('if' disjunction) + { // (fstring | string) if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_234_var; + D(fprintf(stderr, "%*c> _loop1_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(fstring | string)")); + void *_tmp_253_var; while ( - (_tmp_234_var = _tmp_234_rule(p)) // 'if' disjunction + (_tmp_253_var = _tmp_253_rule(p)) // fstring | string ) { - _res = _tmp_234_var; + _res = _tmp_253_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -31080,8 +31894,13 @@ _loop0_115_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_115[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)")); + D(fprintf(stderr, "%*c%s _loop1_113[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(fstring | string)")); + } + if (_n == 0 || p->error_indicator) { + PyMem_Free(_children); + p->level--; + return NULL; } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -31097,9 +31916,9 @@ _loop0_115_rule(Parser *p) return _seq; } -// _tmp_116: assignment_expression | expression !':=' +// _tmp_114: star_named_expression ',' star_named_expressions? static void * -_tmp_116_rule(Parser *p) +_tmp_114_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31111,45 +31930,35 @@ _tmp_116_rule(Parser *p) } void * _res = NULL; int _mark = p->mark; - { // assignment_expression - if (p->error_indicator) { - p->level--; - return NULL; - } - D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression")); - expr_ty assignment_expression_var; - if ( - (assignment_expression_var = assignment_expression_rule(p)) // assignment_expression - ) - { - D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression")); - _res = assignment_expression_var; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression")); - } - { // expression !':=' + { // star_named_expression ',' star_named_expressions? if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); - expr_ty expression_var; + D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); + Token * _literal; + expr_ty y; + void *z; if ( - (expression_var = expression_rule(p)) // expression + (y = star_named_expression_rule(p)) // star_named_expression && - _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + && + (z = star_named_expressions_rule(p), !p->error_indicator) // star_named_expressions? ) { - D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); - _res = expression_var; + D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?")); + _res = _PyPegen_seq_insert_in_front ( p , y , z ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?")); } _res = NULL; done: @@ -31157,9 +31966,9 @@ _tmp_116_rule(Parser *p) return _res; } -// _loop0_118: ',' (starred_expression | (assignment_expression | expression !':=') !'=') +// _loop0_116: ',' double_starred_kvpair static asdl_seq * -_loop0_118_rule(Parser *p) +_loop0_116_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31180,18 +31989,18 @@ _loop0_118_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // ',' (starred_expression | (assignment_expression | expression !':=') !'=') + { // ',' double_starred_kvpair if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')")); + D(fprintf(stderr, "%*c> _loop0_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; - void *elem; + KeyValuePair* elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_235_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' + (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair ) { _res = elem; @@ -31217,8 +32026,8 @@ _loop0_118_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')")); + D(fprintf(stderr, "%*c%s _loop0_116[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -31234,10 +32043,9 @@ _loop0_118_rule(Parser *p) return _seq; } -// _gather_117: -// | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118 +// _gather_115: double_starred_kvpair _loop0_116 static asdl_seq * -_gather_117_rule(Parser *p) +_gather_115_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31249,27 +32057,27 @@ _gather_117_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118 + { // double_starred_kvpair _loop0_116 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118")); - void *elem; + D(fprintf(stderr, "%*c> _gather_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_116")); + KeyValuePair* elem; asdl_seq * seq; if ( - (elem = _tmp_235_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' + (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_118_rule(p)) // _loop0_118 + (seq = _loop0_116_rule(p)) // _loop0_116 ) { - D(fprintf(stderr, "%*c+ _gather_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118")); + D(fprintf(stderr, "%*c+ _gather_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_116")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_117[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118")); + D(fprintf(stderr, "%*c%s _gather_115[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_116")); } _res = NULL; done: @@ -31277,9 +32085,9 @@ _gather_117_rule(Parser *p) return _res; } -// _tmp_119: ',' kwargs -static void * -_tmp_119_rule(Parser *p) +// _loop1_117: for_if_clause +static asdl_seq * +_loop1_117_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31289,44 +32097,70 @@ _tmp_119_rule(Parser *p) p->level--; return NULL; } - void * _res = NULL; + void *_res = NULL; int _mark = p->mark; - { // ',' kwargs + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // for_if_clause if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs")); - Token * _literal; - asdl_seq* k; - if ( - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (k = kwargs_rule(p)) // kwargs + D(fprintf(stderr, "%*c> _loop1_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause")); + comprehension_ty for_if_clause_var; + while ( + (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause ) { - D(fprintf(stderr, "%*c+ _tmp_119[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs")); - _res = k; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - p->level--; - return NULL; + _res = for_if_clause_var; + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + _children = _new_children; } - goto done; + _children[_n++] = _res; + _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_119[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs")); + D(fprintf(stderr, "%*c%s _loop1_117[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause")); } - _res = NULL; - done: + if (_n == 0 || p->error_indicator) { + PyMem_Free(_children); + p->level--; + return NULL; + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); p->level--; - return _res; + return _seq; } -// _loop0_121: ',' kwarg_or_starred +// _loop0_118: ('if' disjunction) static asdl_seq * -_loop0_121_rule(Parser *p) +_loop0_118_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31347,27 +32181,18 @@ _loop0_121_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // ',' kwarg_or_starred + { // ('if' disjunction) if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred")); - Token * _literal; - KeywordOrStarred* elem; + D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); + void *_tmp_254_var; while ( - (_literal = _PyPegen_expect_token(p, 12)) // token=',' - && - (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred + (_tmp_254_var = _tmp_254_rule(p)) // 'if' disjunction ) { - _res = elem; - if (_res == NULL && PyErr_Occurred()) { - p->error_indicator = 1; - PyMem_Free(_children); - p->level--; - return NULL; - } + _res = _tmp_254_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -31384,8 +32209,8 @@ _loop0_121_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_121[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred")); + D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -31401,9 +32226,9 @@ _loop0_121_rule(Parser *p) return _seq; } -// _gather_120: kwarg_or_starred _loop0_121 +// _loop0_119: ('if' disjunction) static asdl_seq * -_gather_120_rule(Parser *p) +_loop0_119_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31413,29 +32238,115 @@ _gather_120_rule(Parser *p) p->level--; return NULL; } - asdl_seq * _res = NULL; + void *_res = NULL; int _mark = p->mark; - { // kwarg_or_starred _loop0_121 + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // ('if' disjunction) if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_121")); - KeywordOrStarred* elem; - asdl_seq * seq; + D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); + void *_tmp_255_var; + while ( + (_tmp_255_var = _tmp_255_rule(p)) // 'if' disjunction + ) + { + _res = _tmp_255_var; + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + _children = _new_children; + } + _children[_n++] = _res; + _mark = p->mark; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)")); + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); + p->level--; + return _seq; +} + +// _tmp_120: assignment_expression | expression !':=' +static void * +_tmp_120_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // assignment_expression + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression")); + expr_ty assignment_expression_var; if ( - (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred + (assignment_expression_var = assignment_expression_rule(p)) // assignment_expression + ) + { + D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression")); + _res = assignment_expression_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression")); + } + { // expression !':=' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + expr_ty expression_var; + if ( + (expression_var = expression_rule(p)) // expression && - (seq = _loop0_121_rule(p)) // _loop0_121 + _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _gather_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_121")); - _res = _PyPegen_seq_insert_in_front(p, elem, seq); + D(fprintf(stderr, "%*c+ _tmp_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_120[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_121")); + D(fprintf(stderr, "%*c%s _tmp_120[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; done: @@ -31443,9 +32354,9 @@ _gather_120_rule(Parser *p) return _res; } -// _loop0_123: ',' kwarg_or_double_starred +// _loop0_122: ',' (starred_expression | (assignment_expression | expression !':=') !'=') static asdl_seq * -_loop0_123_rule(Parser *p) +_loop0_122_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31466,18 +32377,18 @@ _loop0_123_rule(Parser *p) } Py_ssize_t _children_capacity = 1; Py_ssize_t _n = 0; - { // ',' kwarg_or_double_starred + { // ',' (starred_expression | (assignment_expression | expression !':=') !'=') if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred")); + D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')")); Token * _literal; - KeywordOrStarred* elem; + void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred + (elem = _tmp_256_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' ) { _res = elem; @@ -31503,8 +32414,8 @@ _loop0_123_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_123[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred")); + D(fprintf(stderr, "%*c%s _loop0_122[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); if (!_seq) { @@ -31520,9 +32431,10 @@ _loop0_123_rule(Parser *p) return _seq; } -// _gather_122: kwarg_or_double_starred _loop0_123 +// _gather_121: +// | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_122 static asdl_seq * -_gather_122_rule(Parser *p) +_gather_121_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31534,27 +32446,74 @@ _gather_122_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // kwarg_or_double_starred _loop0_123 + { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_122 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_123")); - KeywordOrStarred* elem; + D(fprintf(stderr, "%*c> _gather_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_122")); + void *elem; asdl_seq * seq; if ( - (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred + (elem = _tmp_256_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' && - (seq = _loop0_123_rule(p)) // _loop0_123 + (seq = _loop0_122_rule(p)) // _loop0_122 ) { - D(fprintf(stderr, "%*c+ _gather_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_123")); + D(fprintf(stderr, "%*c+ _gather_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_122")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_122[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_123")); + D(fprintf(stderr, "%*c%s _gather_121[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_122")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_123: ',' kwargs +static void * +_tmp_123_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // ',' kwargs + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs")); + Token * _literal; + asdl_seq* k; + if ( + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + && + (k = kwargs_rule(p)) // kwargs + ) + { + D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs")); + _res = k; + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs")); } _res = NULL; done: @@ -31800,9 +32759,247 @@ _gather_126_rule(Parser *p) return _res; } -// _loop0_128: (',' star_target) +// _loop0_129: ',' kwarg_or_starred static asdl_seq * -_loop0_128_rule(Parser *p) +_loop0_129_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void *_res = NULL; + int _mark = p->mark; + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // ',' kwarg_or_starred + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred")); + Token * _literal; + KeywordOrStarred* elem; + while ( + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + && + (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred + ) + { + _res = elem; + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + PyMem_Free(_children); + p->level--; + return NULL; + } + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + _children = _new_children; + } + _children[_n++] = _res; + _mark = p->mark; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _loop0_129[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred")); + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); + p->level--; + return _seq; +} + +// _gather_128: kwarg_or_starred _loop0_129 +static asdl_seq * +_gather_128_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + asdl_seq * _res = NULL; + int _mark = p->mark; + { // kwarg_or_starred _loop0_129 + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _gather_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_129")); + KeywordOrStarred* elem; + asdl_seq * seq; + if ( + (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred + && + (seq = _loop0_129_rule(p)) // _loop0_129 + ) + { + D(fprintf(stderr, "%*c+ _gather_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_129")); + _res = _PyPegen_seq_insert_in_front(p, elem, seq); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _gather_128[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_129")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _loop0_131: ',' kwarg_or_double_starred +static asdl_seq * +_loop0_131_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void *_res = NULL; + int _mark = p->mark; + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // ',' kwarg_or_double_starred + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _loop0_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred")); + Token * _literal; + KeywordOrStarred* elem; + while ( + (_literal = _PyPegen_expect_token(p, 12)) // token=',' + && + (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred + ) + { + _res = elem; + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + PyMem_Free(_children); + p->level--; + return NULL; + } + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + _children = _new_children; + } + _children[_n++] = _res; + _mark = p->mark; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _loop0_131[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred")); + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); + p->level--; + return _seq; +} + +// _gather_130: kwarg_or_double_starred _loop0_131 +static asdl_seq * +_gather_130_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + asdl_seq * _res = NULL; + int _mark = p->mark; + { // kwarg_or_double_starred _loop0_131 + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _gather_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_131")); + KeywordOrStarred* elem; + asdl_seq * seq; + if ( + (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred + && + (seq = _loop0_131_rule(p)) // _loop0_131 + ) + { + D(fprintf(stderr, "%*c+ _gather_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_131")); + _res = _PyPegen_seq_insert_in_front(p, elem, seq); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _gather_130[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_131")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _loop0_132: (',' star_target) +static asdl_seq * +_loop0_132_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31828,13 +33025,13 @@ _loop0_128_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_236_var; + D(fprintf(stderr, "%*c> _loop0_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); + void *_tmp_257_var; while ( - (_tmp_236_var = _tmp_236_rule(p)) // ',' star_target + (_tmp_257_var = _tmp_257_rule(p)) // ',' star_target ) { - _res = _tmp_236_var; + _res = _tmp_257_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -31851,7 +33048,7 @@ _loop0_128_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_132[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31868,9 +33065,9 @@ _loop0_128_rule(Parser *p) return _seq; } -// _loop0_130: ',' star_target +// _loop0_134: ',' star_target static asdl_seq * -_loop0_130_rule(Parser *p) +_loop0_134_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31896,7 +33093,7 @@ _loop0_130_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty elem; while ( @@ -31928,7 +33125,7 @@ _loop0_130_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_130[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_134[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31945,9 +33142,9 @@ _loop0_130_rule(Parser *p) return _seq; } -// _gather_129: star_target _loop0_130 +// _gather_133: star_target _loop0_134 static asdl_seq * -_gather_129_rule(Parser *p) +_gather_133_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -31959,27 +33156,27 @@ _gather_129_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // star_target _loop0_130 + { // star_target _loop0_134 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_130")); + D(fprintf(stderr, "%*c> _gather_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_134")); expr_ty elem; asdl_seq * seq; if ( (elem = star_target_rule(p)) // star_target && - (seq = _loop0_130_rule(p)) // _loop0_130 + (seq = _loop0_134_rule(p)) // _loop0_134 ) { - D(fprintf(stderr, "%*c+ _gather_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_130")); + D(fprintf(stderr, "%*c+ _gather_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_134")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_129[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_130")); + D(fprintf(stderr, "%*c%s _gather_133[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_134")); } _res = NULL; done: @@ -31987,9 +33184,9 @@ _gather_129_rule(Parser *p) return _res; } -// _loop1_131: (',' star_target) +// _loop1_135: (',' star_target) static asdl_seq * -_loop1_131_rule(Parser *p) +_loop1_135_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32015,13 +33212,13 @@ _loop1_131_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_237_var; + D(fprintf(stderr, "%*c> _loop1_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); + void *_tmp_258_var; while ( - (_tmp_237_var = _tmp_237_rule(p)) // ',' star_target + (_tmp_258_var = _tmp_258_rule(p)) // ',' star_target ) { - _res = _tmp_237_var; + _res = _tmp_258_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -32038,7 +33235,7 @@ _loop1_131_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_131[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_135[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)")); } if (_n == 0 || p->error_indicator) { @@ -32060,9 +33257,9 @@ _loop1_131_rule(Parser *p) return _seq; } -// _tmp_132: !'*' star_target +// _tmp_136: !'*' star_target static void * -_tmp_132_rule(Parser *p) +_tmp_136_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32079,7 +33276,7 @@ _tmp_132_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); + D(fprintf(stderr, "%*c> _tmp_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); expr_ty star_target_var; if ( _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*' @@ -32087,12 +33284,12 @@ _tmp_132_rule(Parser *p) (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); + D(fprintf(stderr, "%*c+ _tmp_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target")); _res = star_target_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_136[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target")); } _res = NULL; @@ -32101,9 +33298,9 @@ _tmp_132_rule(Parser *p) return _res; } -// _loop0_134: ',' del_target +// _loop0_138: ',' del_target static asdl_seq * -_loop0_134_rule(Parser *p) +_loop0_138_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32129,7 +33326,7 @@ _loop0_134_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target")); + D(fprintf(stderr, "%*c> _loop0_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target")); Token * _literal; expr_ty elem; while ( @@ -32161,7 +33358,7 @@ _loop0_134_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_134[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_138[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -32178,9 +33375,9 @@ _loop0_134_rule(Parser *p) return _seq; } -// _gather_133: del_target _loop0_134 +// _gather_137: del_target _loop0_138 static asdl_seq * -_gather_133_rule(Parser *p) +_gather_137_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32192,27 +33389,27 @@ _gather_133_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // del_target _loop0_134 + { // del_target _loop0_138 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_134")); + D(fprintf(stderr, "%*c> _gather_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_138")); expr_ty elem; asdl_seq * seq; if ( (elem = del_target_rule(p)) // del_target && - (seq = _loop0_134_rule(p)) // _loop0_134 + (seq = _loop0_138_rule(p)) // _loop0_138 ) { - D(fprintf(stderr, "%*c+ _gather_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_134")); + D(fprintf(stderr, "%*c+ _gather_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_138")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_133[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_134")); + D(fprintf(stderr, "%*c%s _gather_137[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_138")); } _res = NULL; done: @@ -32220,9 +33417,9 @@ _gather_133_rule(Parser *p) return _res; } -// _loop0_136: ',' expression +// _loop0_140: ',' expression static asdl_seq * -_loop0_136_rule(Parser *p) +_loop0_140_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32248,7 +33445,7 @@ _loop0_136_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty elem; while ( @@ -32280,7 +33477,7 @@ _loop0_136_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_136[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -32297,9 +33494,9 @@ _loop0_136_rule(Parser *p) return _seq; } -// _gather_135: expression _loop0_136 +// _gather_139: expression _loop0_140 static asdl_seq * -_gather_135_rule(Parser *p) +_gather_139_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32311,27 +33508,27 @@ _gather_135_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // expression _loop0_136 + { // expression _loop0_140 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_136")); + D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_140")); expr_ty elem; asdl_seq * seq; if ( (elem = expression_rule(p)) // expression && - (seq = _loop0_136_rule(p)) // _loop0_136 + (seq = _loop0_140_rule(p)) // _loop0_140 ) { - D(fprintf(stderr, "%*c+ _gather_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_136")); + D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_140")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_135[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_136")); + D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_140")); } _res = NULL; done: @@ -32339,9 +33536,9 @@ _gather_135_rule(Parser *p) return _res; } -// _loop0_138: ',' expression +// _loop0_142: ',' expression static asdl_seq * -_loop0_138_rule(Parser *p) +_loop0_142_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32367,7 +33564,7 @@ _loop0_138_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _loop0_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty elem; while ( @@ -32399,7 +33596,7 @@ _loop0_138_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_138[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_142[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -32416,9 +33613,9 @@ _loop0_138_rule(Parser *p) return _seq; } -// _gather_137: expression _loop0_138 +// _gather_141: expression _loop0_142 static asdl_seq * -_gather_137_rule(Parser *p) +_gather_141_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32430,27 +33627,27 @@ _gather_137_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // expression _loop0_138 + { // expression _loop0_142 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_138")); + D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_142")); expr_ty elem; asdl_seq * seq; if ( (elem = expression_rule(p)) // expression && - (seq = _loop0_138_rule(p)) // _loop0_138 + (seq = _loop0_142_rule(p)) // _loop0_142 ) { - D(fprintf(stderr, "%*c+ _gather_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_138")); + D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_142")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_137[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_138")); + D(fprintf(stderr, "%*c%s _gather_141[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_142")); } _res = NULL; done: @@ -32458,9 +33655,9 @@ _gather_137_rule(Parser *p) return _res; } -// _loop0_140: ',' expression +// _loop0_144: ',' expression static asdl_seq * -_loop0_140_rule(Parser *p) +_loop0_144_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32486,7 +33683,7 @@ _loop0_140_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _loop0_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty elem; while ( @@ -32518,7 +33715,7 @@ _loop0_140_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_144[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -32535,9 +33732,9 @@ _loop0_140_rule(Parser *p) return _seq; } -// _gather_139: expression _loop0_140 +// _gather_143: expression _loop0_144 static asdl_seq * -_gather_139_rule(Parser *p) +_gather_143_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32549,27 +33746,27 @@ _gather_139_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // expression _loop0_140 + { // expression _loop0_144 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_140")); + D(fprintf(stderr, "%*c> _gather_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_144")); expr_ty elem; asdl_seq * seq; if ( (elem = expression_rule(p)) // expression && - (seq = _loop0_140_rule(p)) // _loop0_140 + (seq = _loop0_144_rule(p)) // _loop0_144 ) { - D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_140")); + D(fprintf(stderr, "%*c+ _gather_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_144")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_140")); + D(fprintf(stderr, "%*c%s _gather_143[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_144")); } _res = NULL; done: @@ -32577,9 +33774,9 @@ _gather_139_rule(Parser *p) return _res; } -// _loop0_142: ',' expression +// _loop0_146: ',' expression static asdl_seq * -_loop0_142_rule(Parser *p) +_loop0_146_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32605,7 +33802,7 @@ _loop0_142_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _loop0_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty elem; while ( @@ -32637,7 +33834,7 @@ _loop0_142_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_142[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_146[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -32654,9 +33851,9 @@ _loop0_142_rule(Parser *p) return _seq; } -// _gather_141: expression _loop0_142 +// _gather_145: expression _loop0_146 static asdl_seq * -_gather_141_rule(Parser *p) +_gather_145_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32668,27 +33865,27 @@ _gather_141_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // expression _loop0_142 + { // expression _loop0_146 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_142")); + D(fprintf(stderr, "%*c> _gather_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_146")); expr_ty elem; asdl_seq * seq; if ( (elem = expression_rule(p)) // expression && - (seq = _loop0_142_rule(p)) // _loop0_142 + (seq = _loop0_146_rule(p)) // _loop0_146 ) { - D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_142")); + D(fprintf(stderr, "%*c+ _gather_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_146")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_141[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_142")); + D(fprintf(stderr, "%*c%s _gather_145[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_146")); } _res = NULL; done: @@ -32696,9 +33893,9 @@ _gather_141_rule(Parser *p) return _res; } -// _tmp_143: NEWLINE INDENT +// _tmp_147: NEWLINE INDENT static void * -_tmp_143_rule(Parser *p) +_tmp_147_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32715,7 +33912,7 @@ _tmp_143_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT")); + D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT")); Token * indent_var; Token * newline_var; if ( @@ -32724,12 +33921,12 @@ _tmp_143_rule(Parser *p) (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT' ) { - D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT")); + D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT")); _res = _PyPegen_dummy_name(p, newline_var, indent_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT")); } _res = NULL; @@ -32738,9 +33935,9 @@ _tmp_143_rule(Parser *p) return _res; } -// _tmp_144: args | expression for_if_clauses +// _tmp_148: args | expression for_if_clauses static void * -_tmp_144_rule(Parser *p) +_tmp_148_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32757,18 +33954,18 @@ _tmp_144_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args")); expr_ty args_var; if ( (args_var = args_rule(p)) // args ) { - D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); + D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args")); _res = args_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args")); } { // expression for_if_clauses @@ -32776,7 +33973,7 @@ _tmp_144_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); expr_ty expression_var; asdl_comprehension_seq* for_if_clauses_var; if ( @@ -32785,12 +33982,12 @@ _tmp_144_rule(Parser *p) (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses ) { - D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); + D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses")); _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses")); } _res = NULL; @@ -32799,9 +33996,9 @@ _tmp_144_rule(Parser *p) return _res; } -// _tmp_145: args ',' +// _tmp_149: args ',' static void * -_tmp_145_rule(Parser *p) +_tmp_149_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32818,7 +34015,7 @@ _tmp_145_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','")); + D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','")); Token * _literal; expr_ty args_var; if ( @@ -32827,12 +34024,12 @@ _tmp_145_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','")); + D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','")); _res = _PyPegen_dummy_name(p, args_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','")); } _res = NULL; @@ -32841,9 +34038,9 @@ _tmp_145_rule(Parser *p) return _res; } -// _tmp_146: ',' | ')' +// _tmp_150: ',' | ')' static void * -_tmp_146_rule(Parser *p) +_tmp_150_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32860,18 +34057,18 @@ _tmp_146_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } { // ')' @@ -32879,18 +34076,18 @@ _tmp_146_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } _res = NULL; @@ -32899,9 +34096,9 @@ _tmp_146_rule(Parser *p) return _res; } -// _tmp_147: 'True' | 'False' | 'None' +// _tmp_151: 'True' | 'False' | 'None' static void * -_tmp_147_rule(Parser *p) +_tmp_151_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32918,18 +34115,18 @@ _tmp_147_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 600)) // token='True' + (_keyword = _PyPegen_expect_token(p, 601)) // token='True' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'")); } { // 'False' @@ -32937,18 +34134,18 @@ _tmp_147_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 602)) // token='False' + (_keyword = _PyPegen_expect_token(p, 603)) // token='False' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'")); } { // 'None' @@ -32956,18 +34153,18 @@ _tmp_147_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 601)) // token='None' + (_keyword = _PyPegen_expect_token(p, 602)) // token='None' ) { - D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'")); } _res = NULL; @@ -32976,9 +34173,9 @@ _tmp_147_rule(Parser *p) return _res; } -// _tmp_148: NAME '=' +// _tmp_152: NAME '=' static void * -_tmp_148_rule(Parser *p) +_tmp_152_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -32995,7 +34192,7 @@ _tmp_148_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='")); Token * _literal; expr_ty name_var; if ( @@ -33004,12 +34201,12 @@ _tmp_148_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); + D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='")); _res = _PyPegen_dummy_name(p, name_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='")); } _res = NULL; @@ -33018,9 +34215,9 @@ _tmp_148_rule(Parser *p) return _res; } -// _tmp_149: NAME STRING | SOFT_KEYWORD +// _tmp_153: NAME STRING | SOFT_KEYWORD static void * -_tmp_149_rule(Parser *p) +_tmp_153_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33037,7 +34234,7 @@ _tmp_149_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING")); expr_ty name_var; expr_ty string_var; if ( @@ -33046,12 +34243,12 @@ _tmp_149_rule(Parser *p) (string_var = _PyPegen_string_token(p)) // STRING ) { - D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING")); _res = _PyPegen_dummy_name(p, name_var, string_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING")); } { // SOFT_KEYWORD @@ -33059,18 +34256,18 @@ _tmp_149_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); + D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); expr_ty soft_keyword_var; if ( (soft_keyword_var = _PyPegen_soft_keyword_token(p)) // SOFT_KEYWORD ) { - D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); + D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD")); _res = soft_keyword_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD")); } _res = NULL; @@ -33079,9 +34276,9 @@ _tmp_149_rule(Parser *p) return _res; } -// _tmp_150: 'else' | ':' +// _tmp_154: 'else' | ':' static void * -_tmp_150_rule(Parser *p) +_tmp_154_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33098,18 +34295,18 @@ _tmp_150_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'")); + D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 644)) // token='else' + (_keyword = _PyPegen_expect_token(p, 645)) // token='else' ) { - D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'")); + D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'")); } { // ':' @@ -33117,18 +34314,18 @@ _tmp_150_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } _res = NULL; @@ -33137,9 +34334,67 @@ _tmp_150_rule(Parser *p) return _res; } -// _tmp_151: '=' | ':=' +// _tmp_155: FSTRING_MIDDLE | fstring_replacement_field static void * -_tmp_151_rule(Parser *p) +_tmp_155_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // FSTRING_MIDDLE + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE")); + Token * fstring_middle_var; + if ( + (fstring_middle_var = _PyPegen_expect_token(p, FSTRING_MIDDLE)) // token='FSTRING_MIDDLE' + ) + { + D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE")); + _res = fstring_middle_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE")); + } + { // fstring_replacement_field + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field")); + expr_ty fstring_replacement_field_var; + if ( + (fstring_replacement_field_var = fstring_replacement_field_rule(p)) // fstring_replacement_field + ) + { + D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field")); + _res = fstring_replacement_field_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_156: '=' | ':=' +static void * +_tmp_156_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33156,18 +34411,18 @@ _tmp_151_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); } { // ':=' @@ -33175,18 +34430,18 @@ _tmp_151_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 53)) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='")); } _res = NULL; @@ -33195,9 +34450,9 @@ _tmp_151_rule(Parser *p) return _res; } -// _tmp_152: list | tuple | genexp | 'True' | 'None' | 'False' +// _tmp_157: list | tuple | genexp | 'True' | 'None' | 'False' static void * -_tmp_152_rule(Parser *p) +_tmp_157_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33214,18 +34469,18 @@ _tmp_152_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list")); expr_ty list_var; if ( (list_var = list_rule(p)) // list ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); + D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list")); _res = list_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list")); } { // tuple @@ -33233,18 +34488,18 @@ _tmp_152_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple")); expr_ty tuple_var; if ( (tuple_var = tuple_rule(p)) // tuple ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); + D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple")); _res = tuple_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple")); } { // genexp @@ -33252,18 +34507,18 @@ _tmp_152_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp")); expr_ty genexp_var; if ( (genexp_var = genexp_rule(p)) // genexp ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); + D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp")); _res = genexp_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp")); } { // 'True' @@ -33271,18 +34526,18 @@ _tmp_152_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 600)) // token='True' + (_keyword = _PyPegen_expect_token(p, 601)) // token='True' ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); + D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'")); } { // 'None' @@ -33290,18 +34545,18 @@ _tmp_152_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 601)) // token='None' + (_keyword = _PyPegen_expect_token(p, 602)) // token='None' ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); + D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'")); } { // 'False' @@ -33309,18 +34564,18 @@ _tmp_152_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 602)) // token='False' + (_keyword = _PyPegen_expect_token(p, 603)) // token='False' ) { - D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); + D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'")); } _res = NULL; @@ -33329,9 +34584,9 @@ _tmp_152_rule(Parser *p) return _res; } -// _tmp_153: '=' | ':=' +// _tmp_158: '=' | ':=' static void * -_tmp_153_rule(Parser *p) +_tmp_158_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33348,18 +34603,18 @@ _tmp_153_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); } { // ':=' @@ -33367,18 +34622,18 @@ _tmp_153_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 53)) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); + D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='")); } _res = NULL; @@ -33387,9 +34642,9 @@ _tmp_153_rule(Parser *p) return _res; } -// _loop0_154: star_named_expressions +// _loop0_159: star_named_expressions static asdl_seq * -_loop0_154_rule(Parser *p) +_loop0_159_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33415,7 +34670,7 @@ _loop0_154_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); + D(fprintf(stderr, "%*c> _loop0_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions")); asdl_expr_seq* star_named_expressions_var; while ( (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions @@ -33438,7 +34693,7 @@ _loop0_154_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_154[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_159[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -33455,9 +34710,9 @@ _loop0_154_rule(Parser *p) return _seq; } -// _loop0_155: (star_targets '=') +// _loop0_160: (star_targets '=') static asdl_seq * -_loop0_155_rule(Parser *p) +_loop0_160_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33483,13 +34738,13 @@ _loop0_155_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_238_var; + D(fprintf(stderr, "%*c> _loop0_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_259_var; while ( - (_tmp_238_var = _tmp_238_rule(p)) // star_targets '=' + (_tmp_259_var = _tmp_259_rule(p)) // star_targets '=' ) { - _res = _tmp_238_var; + _res = _tmp_259_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -33506,7 +34761,7 @@ _loop0_155_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_155[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_160[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -33523,9 +34778,9 @@ _loop0_155_rule(Parser *p) return _seq; } -// _loop0_156: (star_targets '=') +// _loop0_161: (star_targets '=') static asdl_seq * -_loop0_156_rule(Parser *p) +_loop0_161_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33551,13 +34806,13 @@ _loop0_156_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_239_var; + D(fprintf(stderr, "%*c> _loop0_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); + void *_tmp_260_var; while ( - (_tmp_239_var = _tmp_239_rule(p)) // star_targets '=' + (_tmp_260_var = _tmp_260_rule(p)) // star_targets '=' ) { - _res = _tmp_239_var; + _res = _tmp_260_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -33574,7 +34829,7 @@ _loop0_156_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_161[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -33591,9 +34846,9 @@ _loop0_156_rule(Parser *p) return _seq; } -// _tmp_157: yield_expr | star_expressions +// _tmp_162: yield_expr | star_expressions static void * -_tmp_157_rule(Parser *p) +_tmp_162_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33610,18 +34865,18 @@ _tmp_157_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); expr_ty yield_expr_var; if ( (yield_expr_var = yield_expr_rule(p)) // yield_expr ) { - D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); _res = yield_expr_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); } { // star_expressions @@ -33629,18 +34884,18 @@ _tmp_157_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); expr_ty star_expressions_var; if ( (star_expressions_var = star_expressions_rule(p)) // star_expressions ) { - D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); _res = star_expressions_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); } _res = NULL; @@ -33649,9 +34904,9 @@ _tmp_157_rule(Parser *p) return _res; } -// _tmp_158: '[' | '(' | '{' +// _tmp_163: '[' | '(' | '{' static void * -_tmp_158_rule(Parser *p) +_tmp_163_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33668,18 +34923,18 @@ _tmp_158_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '(' @@ -33687,18 +34942,18 @@ _tmp_158_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 7)) // token='(' ) { - D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); + D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('")); } { // '{' @@ -33706,18 +34961,18 @@ _tmp_158_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -33726,9 +34981,9 @@ _tmp_158_rule(Parser *p) return _res; } -// _tmp_159: '[' | '{' +// _tmp_164: '[' | '{' static void * -_tmp_159_rule(Parser *p) +_tmp_164_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33745,18 +35000,18 @@ _tmp_159_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '{' @@ -33764,18 +35019,18 @@ _tmp_159_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -33784,9 +35039,9 @@ _tmp_159_rule(Parser *p) return _res; } -// _tmp_160: '[' | '{' +// _tmp_165: '[' | '{' static void * -_tmp_160_rule(Parser *p) +_tmp_165_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33803,18 +35058,18 @@ _tmp_160_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 9)) // token='[' ) { - D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); + D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['")); } { // '{' @@ -33822,18 +35077,18 @@ _tmp_160_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 25)) // token='{' ) { - D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); + D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'")); } _res = NULL; @@ -33842,9 +35097,9 @@ _tmp_160_rule(Parser *p) return _res; } -// _tmp_161: slash_no_default | slash_with_default +// _tmp_166: slash_no_default | slash_with_default static void * -_tmp_161_rule(Parser *p) +_tmp_166_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33861,18 +35116,18 @@ _tmp_161_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default")); + D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default")); asdl_arg_seq* slash_no_default_var; if ( (slash_no_default_var = slash_no_default_rule(p)) // slash_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default")); + D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default")); _res = slash_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default")); } { // slash_with_default @@ -33880,18 +35135,18 @@ _tmp_161_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); SlashWithDefault* slash_with_default_var; if ( (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); _res = slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default")); } _res = NULL; @@ -33900,9 +35155,9 @@ _tmp_161_rule(Parser *p) return _res; } -// _loop0_162: param_maybe_default +// _loop0_167: param_maybe_default static asdl_seq * -_loop0_162_rule(Parser *p) +_loop0_167_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33928,7 +35183,7 @@ _loop0_162_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -33951,7 +35206,7 @@ _loop0_162_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_162[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_167[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -33968,9 +35223,9 @@ _loop0_162_rule(Parser *p) return _seq; } -// _loop0_163: param_no_default +// _loop0_168: param_no_default static asdl_seq * -_loop0_163_rule(Parser *p) +_loop0_168_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -33996,7 +35251,7 @@ _loop0_163_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -34019,7 +35274,7 @@ _loop0_163_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_163[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_168[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -34036,9 +35291,9 @@ _loop0_163_rule(Parser *p) return _seq; } -// _loop0_164: param_no_default +// _loop0_169: param_no_default static asdl_seq * -_loop0_164_rule(Parser *p) +_loop0_169_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34064,7 +35319,7 @@ _loop0_164_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop0_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -34087,7 +35342,7 @@ _loop0_164_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_164[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_169[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -34104,9 +35359,9 @@ _loop0_164_rule(Parser *p) return _seq; } -// _loop1_165: param_no_default +// _loop1_170: param_no_default static asdl_seq * -_loop1_165_rule(Parser *p) +_loop1_170_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34132,7 +35387,7 @@ _loop1_165_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _loop1_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; while ( (param_no_default_var = param_no_default_rule(p)) // param_no_default @@ -34155,7 +35410,7 @@ _loop1_165_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_165[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_170[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } if (_n == 0 || p->error_indicator) { @@ -34177,9 +35432,9 @@ _loop1_165_rule(Parser *p) return _seq; } -// _tmp_166: slash_no_default | slash_with_default +// _tmp_171: slash_no_default | slash_with_default static void * -_tmp_166_rule(Parser *p) +_tmp_171_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34196,18 +35451,18 @@ _tmp_166_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default")); + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default")); asdl_arg_seq* slash_no_default_var; if ( (slash_no_default_var = slash_no_default_rule(p)) // slash_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default")); + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default")); _res = slash_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default")); } { // slash_with_default @@ -34215,18 +35470,18 @@ _tmp_166_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default")); SlashWithDefault* slash_with_default_var; if ( (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default")); _res = slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default")); } _res = NULL; @@ -34235,9 +35490,9 @@ _tmp_166_rule(Parser *p) return _res; } -// _loop0_167: param_maybe_default +// _loop0_172: param_maybe_default static asdl_seq * -_loop0_167_rule(Parser *p) +_loop0_172_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34263,7 +35518,7 @@ _loop0_167_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -34286,7 +35541,7 @@ _loop0_167_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_167[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_172[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -34303,9 +35558,9 @@ _loop0_167_rule(Parser *p) return _seq; } -// _tmp_168: ',' | param_no_default +// _tmp_173: ',' | param_no_default static void * -_tmp_168_rule(Parser *p) +_tmp_173_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34322,18 +35577,18 @@ _tmp_168_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } { // param_no_default @@ -34341,18 +35596,18 @@ _tmp_168_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; if ( (param_no_default_var = param_no_default_rule(p)) // param_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default")); _res = param_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } _res = NULL; @@ -34361,9 +35616,9 @@ _tmp_168_rule(Parser *p) return _res; } -// _loop0_169: param_maybe_default +// _loop0_174: param_maybe_default static asdl_seq * -_loop0_169_rule(Parser *p) +_loop0_174_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34389,7 +35644,7 @@ _loop0_169_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -34412,7 +35667,7 @@ _loop0_169_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_169[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_174[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -34429,9 +35684,9 @@ _loop0_169_rule(Parser *p) return _seq; } -// _loop1_170: param_maybe_default +// _loop1_175: param_maybe_default static asdl_seq * -_loop1_170_rule(Parser *p) +_loop1_175_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34457,7 +35712,7 @@ _loop1_170_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop1_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -34480,7 +35735,7 @@ _loop1_170_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_170[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_175[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } if (_n == 0 || p->error_indicator) { @@ -34502,9 +35757,9 @@ _loop1_170_rule(Parser *p) return _seq; } -// _tmp_171: ')' | ',' +// _tmp_176: ')' | ',' static void * -_tmp_171_rule(Parser *p) +_tmp_176_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34521,18 +35776,18 @@ _tmp_171_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ',' @@ -34540,18 +35795,18 @@ _tmp_171_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -34560,9 +35815,9 @@ _tmp_171_rule(Parser *p) return _res; } -// _tmp_172: ')' | ',' (')' | '**') +// _tmp_177: ')' | ',' (')' | '**') static void * -_tmp_172_rule(Parser *p) +_tmp_177_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34579,18 +35834,18 @@ _tmp_172_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ',' (')' | '**') @@ -34598,21 +35853,21 @@ _tmp_172_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_240_var; + void *_tmp_261_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_240_var = _tmp_240_rule(p)) // ')' | '**' + (_tmp_261_var = _tmp_261_rule(p)) // ')' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_240_var); + D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_261_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')")); } _res = NULL; @@ -34621,9 +35876,9 @@ _tmp_172_rule(Parser *p) return _res; } -// _tmp_173: param_no_default | ',' +// _tmp_178: param_no_default | ',' static void * -_tmp_173_rule(Parser *p) +_tmp_178_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34640,18 +35895,18 @@ _tmp_173_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; if ( (param_no_default_var = param_no_default_rule(p)) // param_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default")); _res = param_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } { // ',' @@ -34659,18 +35914,18 @@ _tmp_173_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -34679,9 +35934,9 @@ _tmp_173_rule(Parser *p) return _res; } -// _loop0_174: param_maybe_default +// _loop0_179: param_maybe_default static asdl_seq * -_loop0_174_rule(Parser *p) +_loop0_179_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34707,7 +35962,7 @@ _loop0_174_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default")); NameDefaultPair* param_maybe_default_var; while ( (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default @@ -34730,7 +35985,7 @@ _loop0_174_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -34747,9 +36002,9 @@ _loop0_174_rule(Parser *p) return _seq; } -// _tmp_175: param_no_default | ',' +// _tmp_180: param_no_default | ',' static void * -_tmp_175_rule(Parser *p) +_tmp_180_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34766,18 +36021,18 @@ _tmp_175_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default")); arg_ty param_no_default_var; if ( (param_no_default_var = param_no_default_rule(p)) // param_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default")); _res = param_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default")); } { // ',' @@ -34785,18 +36040,18 @@ _tmp_175_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -34805,9 +36060,9 @@ _tmp_175_rule(Parser *p) return _res; } -// _tmp_176: '*' | '**' | '/' +// _tmp_181: '*' | '**' | '/' static void * -_tmp_176_rule(Parser *p) +_tmp_181_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34824,18 +36079,18 @@ _tmp_176_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' ) { - D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'")); } { // '**' @@ -34843,18 +36098,18 @@ _tmp_176_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } { // '/' @@ -34862,18 +36117,18 @@ _tmp_176_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'")); + D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 17)) // token='/' ) { - D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'")); + D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'")); } _res = NULL; @@ -34882,9 +36137,9 @@ _tmp_176_rule(Parser *p) return _res; } -// _loop1_177: param_with_default +// _loop1_182: param_with_default static asdl_seq * -_loop1_177_rule(Parser *p) +_loop1_182_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34910,7 +36165,7 @@ _loop1_177_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); + D(fprintf(stderr, "%*c> _loop1_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default")); NameDefaultPair* param_with_default_var; while ( (param_with_default_var = param_with_default_rule(p)) // param_with_default @@ -34933,7 +36188,7 @@ _loop1_177_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -34955,9 +36210,9 @@ _loop1_177_rule(Parser *p) return _seq; } -// _tmp_178: lambda_slash_no_default | lambda_slash_with_default +// _tmp_183: lambda_slash_no_default | lambda_slash_with_default static void * -_tmp_178_rule(Parser *p) +_tmp_183_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -34974,18 +36229,18 @@ _tmp_178_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); asdl_arg_seq* lambda_slash_no_default_var; if ( (lambda_slash_no_default_var = lambda_slash_no_default_rule(p)) // lambda_slash_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); _res = lambda_slash_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default")); } { // lambda_slash_with_default @@ -34993,18 +36248,18 @@ _tmp_178_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); SlashWithDefault* lambda_slash_with_default_var; if ( (lambda_slash_with_default_var = lambda_slash_with_default_rule(p)) // lambda_slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); _res = lambda_slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default")); } _res = NULL; @@ -35013,9 +36268,9 @@ _tmp_178_rule(Parser *p) return _res; } -// _loop0_179: lambda_param_maybe_default +// _loop0_184: lambda_param_maybe_default static asdl_seq * -_loop0_179_rule(Parser *p) +_loop0_184_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35041,7 +36296,7 @@ _loop0_179_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); NameDefaultPair* lambda_param_maybe_default_var; while ( (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default @@ -35064,7 +36319,7 @@ _loop0_179_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -35081,9 +36336,9 @@ _loop0_179_rule(Parser *p) return _seq; } -// _loop0_180: lambda_param_no_default +// _loop0_185: lambda_param_no_default static asdl_seq * -_loop0_180_rule(Parser *p) +_loop0_185_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35109,7 +36364,7 @@ _loop0_180_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -35132,7 +36387,7 @@ _loop0_180_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -35149,9 +36404,9 @@ _loop0_180_rule(Parser *p) return _seq; } -// _loop0_181: lambda_param_no_default +// _loop0_186: lambda_param_no_default static asdl_seq * -_loop0_181_rule(Parser *p) +_loop0_186_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35177,7 +36432,7 @@ _loop0_181_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _loop0_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; while ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default @@ -35200,7 +36455,7 @@ _loop0_181_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -35217,9 +36472,9 @@ _loop0_181_rule(Parser *p) return _seq; } -// _loop0_183: ',' lambda_param +// _loop0_188: ',' lambda_param static asdl_seq * -_loop0_183_rule(Parser *p) +_loop0_188_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35245,7 +36500,7 @@ _loop0_183_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param")); + D(fprintf(stderr, "%*c> _loop0_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param")); Token * _literal; arg_ty elem; while ( @@ -35277,7 +36532,7 @@ _loop0_183_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -35294,9 +36549,9 @@ _loop0_183_rule(Parser *p) return _seq; } -// _gather_182: lambda_param _loop0_183 +// _gather_187: lambda_param _loop0_188 static asdl_seq * -_gather_182_rule(Parser *p) +_gather_187_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35308,27 +36563,27 @@ _gather_182_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // lambda_param _loop0_183 + { // lambda_param _loop0_188 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_183")); + D(fprintf(stderr, "%*c> _gather_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_188")); arg_ty elem; asdl_seq * seq; if ( (elem = lambda_param_rule(p)) // lambda_param && - (seq = _loop0_183_rule(p)) // _loop0_183 + (seq = _loop0_188_rule(p)) // _loop0_188 ) { - D(fprintf(stderr, "%*c+ _gather_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_183")); + D(fprintf(stderr, "%*c+ _gather_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_188")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_182[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_183")); + D(fprintf(stderr, "%*c%s _gather_187[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_188")); } _res = NULL; done: @@ -35336,9 +36591,9 @@ _gather_182_rule(Parser *p) return _res; } -// _tmp_184: lambda_slash_no_default | lambda_slash_with_default +// _tmp_189: lambda_slash_no_default | lambda_slash_with_default static void * -_tmp_184_rule(Parser *p) +_tmp_189_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35355,18 +36610,18 @@ _tmp_184_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); asdl_arg_seq* lambda_slash_no_default_var; if ( (lambda_slash_no_default_var = lambda_slash_no_default_rule(p)) // lambda_slash_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default")); _res = lambda_slash_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default")); } { // lambda_slash_with_default @@ -35374,18 +36629,18 @@ _tmp_184_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); SlashWithDefault* lambda_slash_with_default_var; if ( (lambda_slash_with_default_var = lambda_slash_with_default_rule(p)) // lambda_slash_with_default ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default")); _res = lambda_slash_with_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default")); } _res = NULL; @@ -35394,9 +36649,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _loop0_185: lambda_param_maybe_default +// _loop0_190: lambda_param_maybe_default static asdl_seq * -_loop0_185_rule(Parser *p) +_loop0_190_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35422,7 +36677,7 @@ _loop0_185_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); NameDefaultPair* lambda_param_maybe_default_var; while ( (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default @@ -35445,7 +36700,7 @@ _loop0_185_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -35462,9 +36717,9 @@ _loop0_185_rule(Parser *p) return _seq; } -// _tmp_186: ',' | lambda_param_no_default +// _tmp_191: ',' | lambda_param_no_default static void * -_tmp_186_rule(Parser *p) +_tmp_191_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35481,18 +36736,18 @@ _tmp_186_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } { // lambda_param_no_default @@ -35500,18 +36755,18 @@ _tmp_186_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; if ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); _res = lambda_param_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } _res = NULL; @@ -35520,9 +36775,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _loop0_187: lambda_param_maybe_default +// _loop0_192: lambda_param_maybe_default static asdl_seq * -_loop0_187_rule(Parser *p) +_loop0_192_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35548,7 +36803,7 @@ _loop0_187_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); NameDefaultPair* lambda_param_maybe_default_var; while ( (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default @@ -35571,7 +36826,7 @@ _loop0_187_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -35588,9 +36843,9 @@ _loop0_187_rule(Parser *p) return _seq; } -// _loop1_188: lambda_param_maybe_default +// _loop1_193: lambda_param_maybe_default static asdl_seq * -_loop1_188_rule(Parser *p) +_loop1_193_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35616,7 +36871,7 @@ _loop1_188_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + D(fprintf(stderr, "%*c> _loop1_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); NameDefaultPair* lambda_param_maybe_default_var; while ( (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default @@ -35639,7 +36894,7 @@ _loop1_188_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } if (_n == 0 || p->error_indicator) { @@ -35661,9 +36916,9 @@ _loop1_188_rule(Parser *p) return _seq; } -// _loop1_189: lambda_param_with_default +// _loop1_194: lambda_param_with_default static asdl_seq * -_loop1_189_rule(Parser *p) +_loop1_194_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35689,7 +36944,7 @@ _loop1_189_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); + D(fprintf(stderr, "%*c> _loop1_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default")); NameDefaultPair* lambda_param_with_default_var; while ( (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default @@ -35712,7 +36967,7 @@ _loop1_189_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default")); } if (_n == 0 || p->error_indicator) { @@ -35734,9 +36989,9 @@ _loop1_189_rule(Parser *p) return _seq; } -// _tmp_190: ':' | ',' (':' | '**') +// _tmp_195: ':' | ',' (':' | '**') static void * -_tmp_190_rule(Parser *p) +_tmp_195_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35753,18 +37008,18 @@ _tmp_190_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // ',' (':' | '**') @@ -35772,21 +37027,21 @@ _tmp_190_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_241_var; + void *_tmp_262_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_241_var = _tmp_241_rule(p)) // ':' | '**' + (_tmp_262_var = _tmp_262_rule(p)) // ':' | '**' ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_241_var); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); + _res = _PyPegen_dummy_name(p, _literal, _tmp_262_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')")); } _res = NULL; @@ -35795,9 +37050,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: lambda_param_no_default | ',' +// _tmp_196: lambda_param_no_default | ',' static void * -_tmp_191_rule(Parser *p) +_tmp_196_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35814,18 +37069,18 @@ _tmp_191_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; if ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); _res = lambda_param_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } { // ',' @@ -35833,18 +37088,18 @@ _tmp_191_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -35853,9 +37108,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _loop0_192: lambda_param_maybe_default +// _loop0_197: lambda_param_maybe_default static asdl_seq * -_loop0_192_rule(Parser *p) +_loop0_197_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35881,7 +37136,7 @@ _loop0_192_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); + D(fprintf(stderr, "%*c> _loop0_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default")); NameDefaultPair* lambda_param_maybe_default_var; while ( (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default @@ -35904,7 +37159,7 @@ _loop0_192_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -35921,9 +37176,9 @@ _loop0_192_rule(Parser *p) return _seq; } -// _tmp_193: lambda_param_no_default | ',' +// _tmp_198: lambda_param_no_default | ',' static void * -_tmp_193_rule(Parser *p) +_tmp_198_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35940,18 +37195,18 @@ _tmp_193_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); arg_ty lambda_param_no_default_var; if ( (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default")); _res = lambda_param_no_default_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default")); } { // ',' @@ -35959,18 +37214,18 @@ _tmp_193_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -35979,9 +37234,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: '*' | '**' | '/' +// _tmp_199: '*' | '**' | '/' static void * -_tmp_194_rule(Parser *p) +_tmp_199_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -35998,18 +37253,18 @@ _tmp_194_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 16)) // token='*' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'")); } { // '**' @@ -36017,18 +37272,18 @@ _tmp_194_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } { // '/' @@ -36036,18 +37291,18 @@ _tmp_194_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 17)) // token='/' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'")); } _res = NULL; @@ -36056,9 +37311,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: ',' | ')' | ':' +// _tmp_200: ',' | ')' | ':' static void * -_tmp_195_rule(Parser *p) +_tmp_200_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36075,18 +37330,18 @@ _tmp_195_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } { // ')' @@ -36094,18 +37349,18 @@ _tmp_195_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // ':' @@ -36113,18 +37368,18 @@ _tmp_195_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } _res = NULL; @@ -36133,9 +37388,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _loop0_197: ',' (expression ['as' star_target]) +// _loop0_202: ',' (expression ['as' star_target]) static asdl_seq * -_loop0_197_rule(Parser *p) +_loop0_202_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36161,13 +37416,13 @@ _loop0_197_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_242_rule(p)) // expression ['as' star_target] + (elem = _tmp_263_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -36193,7 +37448,7 @@ _loop0_197_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -36210,9 +37465,9 @@ _loop0_197_rule(Parser *p) return _seq; } -// _gather_196: (expression ['as' star_target]) _loop0_197 +// _gather_201: (expression ['as' star_target]) _loop0_202 static asdl_seq * -_gather_196_rule(Parser *p) +_gather_201_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36224,27 +37479,27 @@ _gather_196_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expression ['as' star_target]) _loop0_197 + { // (expression ['as' star_target]) _loop0_202 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_197")); + D(fprintf(stderr, "%*c> _gather_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_202")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_242_rule(p)) // expression ['as' star_target] + (elem = _tmp_263_rule(p)) // expression ['as' star_target] && - (seq = _loop0_197_rule(p)) // _loop0_197 + (seq = _loop0_202_rule(p)) // _loop0_202 ) { - D(fprintf(stderr, "%*c+ _gather_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_197")); + D(fprintf(stderr, "%*c+ _gather_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_202")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_196[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_197")); + D(fprintf(stderr, "%*c%s _gather_201[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_202")); } _res = NULL; done: @@ -36252,9 +37507,9 @@ _gather_196_rule(Parser *p) return _res; } -// _loop0_199: ',' (expressions ['as' star_target]) +// _loop0_204: ',' (expressions ['as' star_target]) static asdl_seq * -_loop0_199_rule(Parser *p) +_loop0_204_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36280,13 +37535,13 @@ _loop0_199_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_243_rule(p)) // expressions ['as' star_target] + (elem = _tmp_264_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -36312,7 +37567,7 @@ _loop0_199_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_204[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -36329,9 +37584,9 @@ _loop0_199_rule(Parser *p) return _seq; } -// _gather_198: (expressions ['as' star_target]) _loop0_199 +// _gather_203: (expressions ['as' star_target]) _loop0_204 static asdl_seq * -_gather_198_rule(Parser *p) +_gather_203_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36343,27 +37598,27 @@ _gather_198_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expressions ['as' star_target]) _loop0_199 + { // (expressions ['as' star_target]) _loop0_204 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_199")); + D(fprintf(stderr, "%*c> _gather_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_204")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_243_rule(p)) // expressions ['as' star_target] + (elem = _tmp_264_rule(p)) // expressions ['as' star_target] && - (seq = _loop0_199_rule(p)) // _loop0_199 + (seq = _loop0_204_rule(p)) // _loop0_204 ) { - D(fprintf(stderr, "%*c+ _gather_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_199")); + D(fprintf(stderr, "%*c+ _gather_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_204")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_198[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_199")); + D(fprintf(stderr, "%*c%s _gather_203[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_204")); } _res = NULL; done: @@ -36371,9 +37626,9 @@ _gather_198_rule(Parser *p) return _res; } -// _loop0_201: ',' (expression ['as' star_target]) +// _loop0_206: ',' (expression ['as' star_target]) static asdl_seq * -_loop0_201_rule(Parser *p) +_loop0_206_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36399,13 +37654,13 @@ _loop0_201_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_244_rule(p)) // expression ['as' star_target] + (elem = _tmp_265_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -36431,7 +37686,7 @@ _loop0_201_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_206[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -36448,9 +37703,9 @@ _loop0_201_rule(Parser *p) return _seq; } -// _gather_200: (expression ['as' star_target]) _loop0_201 +// _gather_205: (expression ['as' star_target]) _loop0_206 static asdl_seq * -_gather_200_rule(Parser *p) +_gather_205_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36462,27 +37717,27 @@ _gather_200_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expression ['as' star_target]) _loop0_201 + { // (expression ['as' star_target]) _loop0_206 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_201")); + D(fprintf(stderr, "%*c> _gather_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_206")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_244_rule(p)) // expression ['as' star_target] + (elem = _tmp_265_rule(p)) // expression ['as' star_target] && - (seq = _loop0_201_rule(p)) // _loop0_201 + (seq = _loop0_206_rule(p)) // _loop0_206 ) { - D(fprintf(stderr, "%*c+ _gather_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_201")); + D(fprintf(stderr, "%*c+ _gather_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_206")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_200[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_201")); + D(fprintf(stderr, "%*c%s _gather_205[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_206")); } _res = NULL; done: @@ -36490,9 +37745,9 @@ _gather_200_rule(Parser *p) return _res; } -// _loop0_203: ',' (expressions ['as' star_target]) +// _loop0_208: ',' (expressions ['as' star_target]) static asdl_seq * -_loop0_203_rule(Parser *p) +_loop0_208_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36518,13 +37773,13 @@ _loop0_203_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); + D(fprintf(stderr, "%*c> _loop0_208[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])")); Token * _literal; void *elem; while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_245_rule(p)) // expressions ['as' star_target] + (elem = _tmp_266_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -36550,7 +37805,7 @@ _loop0_203_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_208[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -36567,9 +37822,9 @@ _loop0_203_rule(Parser *p) return _seq; } -// _gather_202: (expressions ['as' star_target]) _loop0_203 +// _gather_207: (expressions ['as' star_target]) _loop0_208 static asdl_seq * -_gather_202_rule(Parser *p) +_gather_207_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36581,27 +37836,27 @@ _gather_202_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // (expressions ['as' star_target]) _loop0_203 + { // (expressions ['as' star_target]) _loop0_208 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_203")); + D(fprintf(stderr, "%*c> _gather_207[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_208")); void *elem; asdl_seq * seq; if ( - (elem = _tmp_245_rule(p)) // expressions ['as' star_target] + (elem = _tmp_266_rule(p)) // expressions ['as' star_target] && - (seq = _loop0_203_rule(p)) // _loop0_203 + (seq = _loop0_208_rule(p)) // _loop0_208 ) { - D(fprintf(stderr, "%*c+ _gather_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_203")); + D(fprintf(stderr, "%*c+ _gather_207[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_208")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_202[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_203")); + D(fprintf(stderr, "%*c%s _gather_207[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_208")); } _res = NULL; done: @@ -36609,9 +37864,9 @@ _gather_202_rule(Parser *p) return _res; } -// _tmp_204: 'except' | 'finally' +// _tmp_209: 'except' | 'finally' static void * -_tmp_204_rule(Parser *p) +_tmp_209_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36628,18 +37883,18 @@ _tmp_204_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); + D(fprintf(stderr, "%*c> _tmp_209[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 636)) // token='except' + (_keyword = _PyPegen_expect_token(p, 637)) // token='except' ) { - D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); + D(fprintf(stderr, "%*c+ _tmp_209[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_209[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'")); } { // 'finally' @@ -36647,18 +37902,18 @@ _tmp_204_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); + D(fprintf(stderr, "%*c> _tmp_209[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 632)) // token='finally' + (_keyword = _PyPegen_expect_token(p, 633)) // token='finally' ) { - D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); + D(fprintf(stderr, "%*c+ _tmp_209[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); _res = _keyword; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_209[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'")); } _res = NULL; @@ -36667,9 +37922,9 @@ _tmp_204_rule(Parser *p) return _res; } -// _loop0_205: block +// _loop0_210: block static asdl_seq * -_loop0_205_rule(Parser *p) +_loop0_210_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36695,7 +37950,7 @@ _loop0_205_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block")); + D(fprintf(stderr, "%*c> _loop0_210[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block")); asdl_stmt_seq* block_var; while ( (block_var = block_rule(p)) // block @@ -36718,7 +37973,7 @@ _loop0_205_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_205[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_210[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -36735,9 +37990,9 @@ _loop0_205_rule(Parser *p) return _seq; } -// _loop1_206: except_block +// _loop1_211: except_block static asdl_seq * -_loop1_206_rule(Parser *p) +_loop1_211_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36763,7 +38018,7 @@ _loop1_206_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block")); + D(fprintf(stderr, "%*c> _loop1_211[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block")); excepthandler_ty except_block_var; while ( (except_block_var = except_block_rule(p)) // except_block @@ -36786,7 +38041,7 @@ _loop1_206_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_206[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_211[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block")); } if (_n == 0 || p->error_indicator) { @@ -36808,9 +38063,9 @@ _loop1_206_rule(Parser *p) return _seq; } -// _tmp_207: 'as' NAME +// _tmp_212: 'as' NAME static void * -_tmp_207_rule(Parser *p) +_tmp_212_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36827,21 +38082,21 @@ _tmp_207_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_207[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_212[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_207[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_212[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_207[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_212[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -36850,9 +38105,9 @@ _tmp_207_rule(Parser *p) return _res; } -// _loop0_208: block +// _loop0_213: block static asdl_seq * -_loop0_208_rule(Parser *p) +_loop0_213_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36878,7 +38133,7 @@ _loop0_208_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_208[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block")); + D(fprintf(stderr, "%*c> _loop0_213[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block")); asdl_stmt_seq* block_var; while ( (block_var = block_rule(p)) // block @@ -36901,7 +38156,7 @@ _loop0_208_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_208[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_213[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -36918,9 +38173,9 @@ _loop0_208_rule(Parser *p) return _seq; } -// _loop1_209: except_star_block +// _loop1_214: except_star_block static asdl_seq * -_loop1_209_rule(Parser *p) +_loop1_214_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -36946,7 +38201,7 @@ _loop1_209_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop1_209[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block")); + D(fprintf(stderr, "%*c> _loop1_214[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block")); excepthandler_ty except_star_block_var; while ( (except_star_block_var = except_star_block_rule(p)) // except_star_block @@ -36969,7 +38224,7 @@ _loop1_209_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop1_209[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop1_214[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block")); } if (_n == 0 || p->error_indicator) { @@ -36991,9 +38246,9 @@ _loop1_209_rule(Parser *p) return _seq; } -// _tmp_210: expression ['as' NAME] +// _tmp_215: expression ['as' NAME] static void * -_tmp_210_rule(Parser *p) +_tmp_215_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37010,22 +38265,22 @@ _tmp_210_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_210[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]")); + D(fprintf(stderr, "%*c> _tmp_215[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_246_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var = _tmp_267_rule(p), !p->error_indicator) // ['as' NAME] ) { - D(fprintf(stderr, "%*c+ _tmp_210[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]")); + D(fprintf(stderr, "%*c+ _tmp_215[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_210[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_215[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' NAME]")); } _res = NULL; @@ -37034,9 +38289,9 @@ _tmp_210_rule(Parser *p) return _res; } -// _tmp_211: 'as' NAME +// _tmp_216: 'as' NAME static void * -_tmp_211_rule(Parser *p) +_tmp_216_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37053,21 +38308,21 @@ _tmp_211_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_211[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_216[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_211[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_216[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_211[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_216[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -37076,9 +38331,9 @@ _tmp_211_rule(Parser *p) return _res; } -// _tmp_212: 'as' NAME +// _tmp_217: 'as' NAME static void * -_tmp_212_rule(Parser *p) +_tmp_217_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37095,21 +38350,21 @@ _tmp_212_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_212[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_217[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_212[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_217[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_212[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_217[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -37118,9 +38373,9 @@ _tmp_212_rule(Parser *p) return _res; } -// _tmp_213: NEWLINE | ':' +// _tmp_218: NEWLINE | ':' static void * -_tmp_213_rule(Parser *p) +_tmp_218_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37137,18 +38392,18 @@ _tmp_213_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_213[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_218[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE")); Token * newline_var; if ( (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_213[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_218[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE")); _res = newline_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_213[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_218[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE")); } { // ':' @@ -37156,18 +38411,18 @@ _tmp_213_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_213[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_218[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_213[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_218[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_213[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_218[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } _res = NULL; @@ -37176,9 +38431,9 @@ _tmp_213_rule(Parser *p) return _res; } -// _tmp_214: 'as' NAME +// _tmp_219: 'as' NAME static void * -_tmp_214_rule(Parser *p) +_tmp_219_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37195,21 +38450,21 @@ _tmp_214_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_214[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_219[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_214[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_219[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_214[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_219[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -37218,9 +38473,9 @@ _tmp_214_rule(Parser *p) return _res; } -// _tmp_215: 'as' NAME +// _tmp_220: 'as' NAME static void * -_tmp_215_rule(Parser *p) +_tmp_220_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37237,21 +38492,21 @@ _tmp_215_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_215[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_220[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_215[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_220[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_215[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_220[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -37260,9 +38515,9 @@ _tmp_215_rule(Parser *p) return _res; } -// _tmp_216: positional_patterns ',' +// _tmp_221: positional_patterns ',' static void * -_tmp_216_rule(Parser *p) +_tmp_221_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37279,7 +38534,7 @@ _tmp_216_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_216[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + D(fprintf(stderr, "%*c> _tmp_221[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); Token * _literal; asdl_pattern_seq* positional_patterns_var; if ( @@ -37288,12 +38543,12 @@ _tmp_216_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_216[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + D(fprintf(stderr, "%*c+ _tmp_221[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_216[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_221[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','")); } _res = NULL; @@ -37302,9 +38557,9 @@ _tmp_216_rule(Parser *p) return _res; } -// _tmp_217: '->' expression +// _tmp_222: '->' expression static void * -_tmp_217_rule(Parser *p) +_tmp_222_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37321,7 +38576,7 @@ _tmp_217_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_217[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_222[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -37330,12 +38585,12 @@ _tmp_217_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_217[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_222[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_217[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_222[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -37344,9 +38599,9 @@ _tmp_217_rule(Parser *p) return _res; } -// _tmp_218: '(' arguments? ')' +// _tmp_223: '(' arguments? ')' static void * -_tmp_218_rule(Parser *p) +_tmp_223_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37363,7 +38618,7 @@ _tmp_218_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_218[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_223[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -37376,12 +38631,12 @@ _tmp_218_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_218[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_223[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_218[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_223[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -37390,9 +38645,9 @@ _tmp_218_rule(Parser *p) return _res; } -// _tmp_219: '(' arguments? ')' +// _tmp_224: '(' arguments? ')' static void * -_tmp_219_rule(Parser *p) +_tmp_224_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37409,7 +38664,7 @@ _tmp_219_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_219[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_224[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -37422,12 +38677,12 @@ _tmp_219_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_219[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_224[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_219[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_224[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -37436,9 +38691,9 @@ _tmp_219_rule(Parser *p) return _res; } -// _loop0_221: ',' double_starred_kvpair +// _loop0_226: ',' double_starred_kvpair static asdl_seq * -_loop0_221_rule(Parser *p) +_loop0_226_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37464,7 +38719,7 @@ _loop0_221_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _loop0_221[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_226[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -37496,7 +38751,7 @@ _loop0_221_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_221[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_226[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -37513,9 +38768,9 @@ _loop0_221_rule(Parser *p) return _seq; } -// _gather_220: double_starred_kvpair _loop0_221 +// _gather_225: double_starred_kvpair _loop0_226 static asdl_seq * -_gather_220_rule(Parser *p) +_gather_225_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37527,27 +38782,27 @@ _gather_220_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_221 + { // double_starred_kvpair _loop0_226 if (p->error_indicator) { p->level--; return NULL; } - D(fprintf(stderr, "%*c> _gather_220[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_221")); + D(fprintf(stderr, "%*c> _gather_225[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_226")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_221_rule(p)) // _loop0_221 + (seq = _loop0_226_rule(p)) // _loop0_226 ) { - D(fprintf(stderr, "%*c+ _gather_220[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_221")); + D(fprintf(stderr, "%*c+ _gather_225[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_226")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_220[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_221")); + D(fprintf(stderr, "%*c%s _gather_225[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_226")); } _res = NULL; done: @@ -37555,9 +38810,9 @@ _gather_220_rule(Parser *p) return _res; } -// _tmp_222: '}' | ',' +// _tmp_227: '}' | ',' static void * -_tmp_222_rule(Parser *p) +_tmp_227_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37574,18 +38829,18 @@ _tmp_222_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_222[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_227[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_222[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_227[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_222[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_227[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -37593,18 +38848,18 @@ _tmp_222_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_222[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_227[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_222[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_227[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_222[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_227[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -37613,9 +38868,9 @@ _tmp_222_rule(Parser *p) return _res; } -// _tmp_223: '}' | ',' +// _tmp_228: '}' | ',' static void * -_tmp_223_rule(Parser *p) +_tmp_228_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37632,18 +38887,18 @@ _tmp_223_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_223[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_228[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_223[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_228[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_223[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_228[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -37651,18 +38906,18 @@ _tmp_223_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_223[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_228[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_223[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_228[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_223[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_228[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -37671,9 +38926,898 @@ _tmp_223_rule(Parser *p) return _res; } -// _tmp_224: star_targets '=' +// _tmp_229: yield_expr | star_expressions static void * -_tmp_224_rule(Parser *p) +_tmp_229_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // yield_expr + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_229[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; + if ( + (yield_expr_var = yield_expr_rule(p)) // yield_expr + ) + { + D(fprintf(stderr, "%*c+ _tmp_229[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_229[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); + } + { // star_expressions + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_229[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions + ) + { + D(fprintf(stderr, "%*c+ _tmp_229[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_229[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_230: yield_expr | star_expressions +static void * +_tmp_230_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // yield_expr + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_230[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; + if ( + (yield_expr_var = yield_expr_rule(p)) // yield_expr + ) + { + D(fprintf(stderr, "%*c+ _tmp_230[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_230[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); + } + { // star_expressions + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_230[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions + ) + { + D(fprintf(stderr, "%*c+ _tmp_230[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_230[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_231: '=' | '!' | ':' | '}' +static void * +_tmp_231_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '=' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_231[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 22)) // token='=' + ) + { + D(fprintf(stderr, "%*c+ _tmp_231[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_231[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='")); + } + { // '!' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_231[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 54)) // token='!' + ) + { + D(fprintf(stderr, "%*c+ _tmp_231[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_231[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'")); + } + { // ':' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_231[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + ) + { + D(fprintf(stderr, "%*c+ _tmp_231[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_231[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); + } + { // '}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_231[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 26)) // token='}' + ) + { + D(fprintf(stderr, "%*c+ _tmp_231[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_231[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_232: yield_expr | star_expressions +static void * +_tmp_232_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // yield_expr + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_232[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; + if ( + (yield_expr_var = yield_expr_rule(p)) // yield_expr + ) + { + D(fprintf(stderr, "%*c+ _tmp_232[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_232[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); + } + { // star_expressions + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_232[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions + ) + { + D(fprintf(stderr, "%*c+ _tmp_232[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_232[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_233: '!' | ':' | '}' +static void * +_tmp_233_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '!' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_233[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 54)) // token='!' + ) + { + D(fprintf(stderr, "%*c+ _tmp_233[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_233[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'")); + } + { // ':' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_233[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + ) + { + D(fprintf(stderr, "%*c+ _tmp_233[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_233[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); + } + { // '}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_233[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 26)) // token='}' + ) + { + D(fprintf(stderr, "%*c+ _tmp_233[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_233[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_234: yield_expr | star_expressions +static void * +_tmp_234_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // yield_expr + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_234[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; + if ( + (yield_expr_var = yield_expr_rule(p)) // yield_expr + ) + { + D(fprintf(stderr, "%*c+ _tmp_234[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_234[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); + } + { // star_expressions + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_234[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions + ) + { + D(fprintf(stderr, "%*c+ _tmp_234[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_234[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_235: yield_expr | star_expressions +static void * +_tmp_235_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // yield_expr + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_235[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; + if ( + (yield_expr_var = yield_expr_rule(p)) // yield_expr + ) + { + D(fprintf(stderr, "%*c+ _tmp_235[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_235[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); + } + { // star_expressions + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_235[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions + ) + { + D(fprintf(stderr, "%*c+ _tmp_235[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_235[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_236: '!' NAME +static void * +_tmp_236_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '!' NAME + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_236[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME")); + Token * _literal; + expr_ty name_var; + if ( + (_literal = _PyPegen_expect_token(p, 54)) // token='!' + && + (name_var = _PyPegen_name_token(p)) // NAME + ) + { + D(fprintf(stderr, "%*c+ _tmp_236[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' NAME")); + _res = _PyPegen_dummy_name(p, _literal, name_var); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_236[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_237: ':' | '}' +static void * +_tmp_237_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // ':' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_237[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + ) + { + D(fprintf(stderr, "%*c+ _tmp_237[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_237[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); + } + { // '}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_237[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 26)) // token='}' + ) + { + D(fprintf(stderr, "%*c+ _tmp_237[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_237[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_238: yield_expr | star_expressions +static void * +_tmp_238_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // yield_expr + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_238[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; + if ( + (yield_expr_var = yield_expr_rule(p)) // yield_expr + ) + { + D(fprintf(stderr, "%*c+ _tmp_238[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_238[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); + } + { // star_expressions + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_238[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions + ) + { + D(fprintf(stderr, "%*c+ _tmp_238[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_238[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_239: '!' NAME +static void * +_tmp_239_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '!' NAME + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_239[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME")); + Token * _literal; + expr_ty name_var; + if ( + (_literal = _PyPegen_expect_token(p, 54)) // token='!' + && + (name_var = _PyPegen_name_token(p)) // NAME + ) + { + D(fprintf(stderr, "%*c+ _tmp_239[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' NAME")); + _res = _PyPegen_dummy_name(p, _literal, name_var); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_239[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _loop0_240: fstring_format_spec +static asdl_seq * +_loop0_240_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void *_res = NULL; + int _mark = p->mark; + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // fstring_format_spec + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _loop0_240[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec")); + expr_ty fstring_format_spec_var; + while ( + (fstring_format_spec_var = fstring_format_spec_rule(p)) // fstring_format_spec + ) + { + _res = fstring_format_spec_var; + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + _children = _new_children; + } + _children[_n++] = _res; + _mark = p->mark; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _loop0_240[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec")); + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + p->level--; + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); + p->level--; + return _seq; +} + +// _tmp_241: yield_expr | star_expressions +static void * +_tmp_241_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // yield_expr + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_241[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr")); + expr_ty yield_expr_var; + if ( + (yield_expr_var = yield_expr_rule(p)) // yield_expr + ) + { + D(fprintf(stderr, "%*c+ _tmp_241[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr")); + _res = yield_expr_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_241[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr")); + } + { // star_expressions + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_241[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions")); + expr_ty star_expressions_var; + if ( + (star_expressions_var = star_expressions_rule(p)) // star_expressions + ) + { + D(fprintf(stderr, "%*c+ _tmp_241[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions")); + _res = star_expressions_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_241[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_242: '!' NAME +static void * +_tmp_242_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // '!' NAME + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_242[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME")); + Token * _literal; + expr_ty name_var; + if ( + (_literal = _PyPegen_expect_token(p, 54)) // token='!' + && + (name_var = _PyPegen_name_token(p)) // NAME + ) + { + D(fprintf(stderr, "%*c+ _tmp_242[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' NAME")); + _res = _PyPegen_dummy_name(p, _literal, name_var); + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_242[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_243: ':' | '}' +static void * +_tmp_243_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // ':' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_243[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + ) + { + D(fprintf(stderr, "%*c+ _tmp_243[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_243[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); + } + { // '}' + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_243[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + Token * _literal; + if ( + (_literal = _PyPegen_expect_token(p, 26)) // token='}' + ) + { + D(fprintf(stderr, "%*c+ _tmp_243[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + _res = _literal; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_243[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_244: star_targets '=' +static void * +_tmp_244_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37690,7 +39834,7 @@ _tmp_224_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_224[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_244[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -37699,7 +39843,7 @@ _tmp_224_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_224[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_244[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -37709,7 +39853,7 @@ _tmp_224_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_224[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_244[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -37718,9 +39862,9 @@ _tmp_224_rule(Parser *p) return _res; } -// _tmp_225: '.' | '...' +// _tmp_245: '.' | '...' static void * -_tmp_225_rule(Parser *p) +_tmp_245_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37737,18 +39881,18 @@ _tmp_225_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_225[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_245[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_225[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_245[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_225[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_245[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -37756,18 +39900,18 @@ _tmp_225_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_225[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_245[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_225[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_245[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_225[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_245[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -37776,9 +39920,9 @@ _tmp_225_rule(Parser *p) return _res; } -// _tmp_226: '.' | '...' +// _tmp_246: '.' | '...' static void * -_tmp_226_rule(Parser *p) +_tmp_246_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37795,18 +39939,18 @@ _tmp_226_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_226[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_246[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_226[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_246[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_226[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_246[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -37814,18 +39958,18 @@ _tmp_226_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_226[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_246[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_226[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_246[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_226[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_246[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -37834,9 +39978,9 @@ _tmp_226_rule(Parser *p) return _res; } -// _tmp_227: '@' named_expression NEWLINE +// _tmp_247: '@' named_expression NEWLINE static void * -_tmp_227_rule(Parser *p) +_tmp_247_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37853,7 +39997,7 @@ _tmp_227_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_227[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_247[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -37865,7 +40009,7 @@ _tmp_227_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_227[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_247[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -37875,7 +40019,7 @@ _tmp_227_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_227[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_247[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -37884,9 +40028,9 @@ _tmp_227_rule(Parser *p) return _res; } -// _tmp_228: ',' expression +// _tmp_248: ',' expression static void * -_tmp_228_rule(Parser *p) +_tmp_248_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37903,7 +40047,7 @@ _tmp_228_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_228[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_248[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -37912,7 +40056,7 @@ _tmp_228_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_228[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_248[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -37922,7 +40066,7 @@ _tmp_228_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_228[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_248[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -37931,9 +40075,9 @@ _tmp_228_rule(Parser *p) return _res; } -// _tmp_229: ',' star_expression +// _tmp_249: ',' star_expression static void * -_tmp_229_rule(Parser *p) +_tmp_249_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37950,7 +40094,7 @@ _tmp_229_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_229[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_249[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -37959,7 +40103,7 @@ _tmp_229_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_229[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_249[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -37969,7 +40113,7 @@ _tmp_229_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_229[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_249[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -37978,9 +40122,9 @@ _tmp_229_rule(Parser *p) return _res; } -// _tmp_230: 'or' conjunction +// _tmp_250: 'or' conjunction static void * -_tmp_230_rule(Parser *p) +_tmp_250_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -37997,7 +40141,7 @@ _tmp_230_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_230[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_250[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( @@ -38006,7 +40150,7 @@ _tmp_230_rule(Parser *p) (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_230[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_250[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -38016,7 +40160,7 @@ _tmp_230_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_230[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_250[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -38025,9 +40169,9 @@ _tmp_230_rule(Parser *p) return _res; } -// _tmp_231: 'and' inversion +// _tmp_251: 'and' inversion static void * -_tmp_231_rule(Parser *p) +_tmp_251_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38044,7 +40188,7 @@ _tmp_231_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_231[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_251[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( @@ -38053,7 +40197,7 @@ _tmp_231_rule(Parser *p) (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_231[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_251[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -38063,7 +40207,7 @@ _tmp_231_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_231[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_251[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -38072,9 +40216,9 @@ _tmp_231_rule(Parser *p) return _res; } -// _tmp_232: slice | starred_expression +// _tmp_252: slice | starred_expression static void * -_tmp_232_rule(Parser *p) +_tmp_252_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38091,18 +40235,18 @@ _tmp_232_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_232[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice")); + D(fprintf(stderr, "%*c> _tmp_252[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice")); expr_ty slice_var; if ( (slice_var = slice_rule(p)) // slice ) { - D(fprintf(stderr, "%*c+ _tmp_232[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice")); + D(fprintf(stderr, "%*c+ _tmp_252[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice")); _res = slice_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_232[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_252[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice")); } { // starred_expression @@ -38110,18 +40254,18 @@ _tmp_232_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_232[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_252[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_232[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_252[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_232[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_252[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } _res = NULL; @@ -38130,9 +40274,67 @@ _tmp_232_rule(Parser *p) return _res; } -// _tmp_233: 'if' disjunction +// _tmp_253: fstring | string static void * -_tmp_233_rule(Parser *p) +_tmp_253_rule(Parser *p) +{ + if (p->level++ == MAXSTACK) { + p->error_indicator = 1; + PyErr_NoMemory(); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // fstring + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_253[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring")); + expr_ty fstring_var; + if ( + (fstring_var = fstring_rule(p)) // fstring + ) + { + D(fprintf(stderr, "%*c+ _tmp_253[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring")); + _res = fstring_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_253[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring")); + } + { // string + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_253[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "string")); + expr_ty string_var; + if ( + (string_var = string_rule(p)) // string + ) + { + D(fprintf(stderr, "%*c+ _tmp_253[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "string")); + _res = string_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_253[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "string")); + } + _res = NULL; + done: + p->level--; + return _res; +} + +// _tmp_254: 'if' disjunction +static void * +_tmp_254_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38149,16 +40351,16 @@ _tmp_233_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_233[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_254[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_233[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_254[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -38168,7 +40370,7 @@ _tmp_233_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_233[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_254[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -38177,9 +40379,9 @@ _tmp_233_rule(Parser *p) return _res; } -// _tmp_234: 'if' disjunction +// _tmp_255: 'if' disjunction static void * -_tmp_234_rule(Parser *p) +_tmp_255_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38196,16 +40398,16 @@ _tmp_234_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_234[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_255[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 641)) // token='if' + (_keyword = _PyPegen_expect_token(p, 642)) // token='if' && (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_234[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_255[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -38215,7 +40417,7 @@ _tmp_234_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_234[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_255[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -38224,9 +40426,9 @@ _tmp_234_rule(Parser *p) return _res; } -// _tmp_235: starred_expression | (assignment_expression | expression !':=') !'=' +// _tmp_256: starred_expression | (assignment_expression | expression !':=') !'=' static void * -_tmp_235_rule(Parser *p) +_tmp_256_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38243,18 +40445,18 @@ _tmp_235_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_235[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_256[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_235[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_256[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_235[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_256[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assignment_expression | expression !':=') !'=' @@ -38262,20 +40464,20 @@ _tmp_235_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_235[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); - void *_tmp_247_var; + D(fprintf(stderr, "%*c> _tmp_256[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); + void *_tmp_268_var; if ( - (_tmp_247_var = _tmp_247_rule(p)) // assignment_expression | expression !':=' + (_tmp_268_var = _tmp_268_rule(p)) // assignment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_235[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); - _res = _tmp_247_var; + D(fprintf(stderr, "%*c+ _tmp_256[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); + _res = _tmp_268_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_235[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_256[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='")); } _res = NULL; @@ -38284,9 +40486,9 @@ _tmp_235_rule(Parser *p) return _res; } -// _tmp_236: ',' star_target +// _tmp_257: ',' star_target static void * -_tmp_236_rule(Parser *p) +_tmp_257_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38303,7 +40505,7 @@ _tmp_236_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_236[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_257[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -38312,7 +40514,7 @@ _tmp_236_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_236[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_257[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -38322,7 +40524,7 @@ _tmp_236_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_236[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_257[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -38331,9 +40533,9 @@ _tmp_236_rule(Parser *p) return _res; } -// _tmp_237: ',' star_target +// _tmp_258: ',' star_target static void * -_tmp_237_rule(Parser *p) +_tmp_258_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38350,7 +40552,7 @@ _tmp_237_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_237[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_258[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -38359,7 +40561,7 @@ _tmp_237_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_237[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_258[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -38369,7 +40571,7 @@ _tmp_237_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_237[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_258[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -38378,9 +40580,9 @@ _tmp_237_rule(Parser *p) return _res; } -// _tmp_238: star_targets '=' +// _tmp_259: star_targets '=' static void * -_tmp_238_rule(Parser *p) +_tmp_259_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38397,7 +40599,7 @@ _tmp_238_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_238[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_259[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -38406,12 +40608,12 @@ _tmp_238_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_238[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_259[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_238[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_259[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -38420,9 +40622,9 @@ _tmp_238_rule(Parser *p) return _res; } -// _tmp_239: star_targets '=' +// _tmp_260: star_targets '=' static void * -_tmp_239_rule(Parser *p) +_tmp_260_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38439,7 +40641,7 @@ _tmp_239_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_239[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_260[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -38448,12 +40650,12 @@ _tmp_239_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_239[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_260[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_239[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_260[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -38462,9 +40664,9 @@ _tmp_239_rule(Parser *p) return _res; } -// _tmp_240: ')' | '**' +// _tmp_261: ')' | '**' static void * -_tmp_240_rule(Parser *p) +_tmp_261_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38481,18 +40683,18 @@ _tmp_240_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_240[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_261[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_240[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_261[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_240[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_261[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -38500,18 +40702,18 @@ _tmp_240_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_240[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_261[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_240[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_261[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_240[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_261[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -38520,9 +40722,9 @@ _tmp_240_rule(Parser *p) return _res; } -// _tmp_241: ':' | '**' +// _tmp_262: ':' | '**' static void * -_tmp_241_rule(Parser *p) +_tmp_262_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38539,18 +40741,18 @@ _tmp_241_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_241[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_262[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_241[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_262[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_241[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_262[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -38558,18 +40760,18 @@ _tmp_241_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_241[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_262[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_241[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_262[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_241[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_262[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -38578,9 +40780,9 @@ _tmp_241_rule(Parser *p) return _res; } -// _tmp_242: expression ['as' star_target] +// _tmp_263: expression ['as' star_target] static void * -_tmp_242_rule(Parser *p) +_tmp_263_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38597,22 +40799,22 @@ _tmp_242_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_242[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_263[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_248_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_269_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_242[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_263[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_242[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_263[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -38621,9 +40823,9 @@ _tmp_242_rule(Parser *p) return _res; } -// _tmp_243: expressions ['as' star_target] +// _tmp_264: expressions ['as' star_target] static void * -_tmp_243_rule(Parser *p) +_tmp_264_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38640,22 +40842,22 @@ _tmp_243_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_243[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_264[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_249_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_270_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_243[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_264[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_243[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_264[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -38664,9 +40866,9 @@ _tmp_243_rule(Parser *p) return _res; } -// _tmp_244: expression ['as' star_target] +// _tmp_265: expression ['as' star_target] static void * -_tmp_244_rule(Parser *p) +_tmp_265_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38683,22 +40885,22 @@ _tmp_244_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_244[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_265[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_250_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_271_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_244[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_265[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_244[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_265[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -38707,9 +40909,9 @@ _tmp_244_rule(Parser *p) return _res; } -// _tmp_245: expressions ['as' star_target] +// _tmp_266: expressions ['as' star_target] static void * -_tmp_245_rule(Parser *p) +_tmp_266_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38726,22 +40928,22 @@ _tmp_245_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_245[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_266[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_251_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_272_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_245[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_266[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_245[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_266[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -38750,9 +40952,9 @@ _tmp_245_rule(Parser *p) return _res; } -// _tmp_246: 'as' NAME +// _tmp_267: 'as' NAME static void * -_tmp_246_rule(Parser *p) +_tmp_267_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38769,21 +40971,21 @@ _tmp_246_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_246[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_267[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_246[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_267[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_246[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_267[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -38792,9 +40994,9 @@ _tmp_246_rule(Parser *p) return _res; } -// _tmp_247: assignment_expression | expression !':=' +// _tmp_268: assignment_expression | expression !':=' static void * -_tmp_247_rule(Parser *p) +_tmp_268_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38811,18 +41013,18 @@ _tmp_247_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_247[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression")); + D(fprintf(stderr, "%*c> _tmp_268[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression")); expr_ty assignment_expression_var; if ( (assignment_expression_var = assignment_expression_rule(p)) // assignment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_247[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression")); + D(fprintf(stderr, "%*c+ _tmp_268[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression")); _res = assignment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_247[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_268[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression")); } { // expression !':=' @@ -38830,7 +41032,7 @@ _tmp_247_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_247[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_268[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -38838,12 +41040,12 @@ _tmp_247_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_247[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_268[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_247[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_268[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -38852,9 +41054,9 @@ _tmp_247_rule(Parser *p) return _res; } -// _tmp_248: 'as' star_target +// _tmp_269: 'as' star_target static void * -_tmp_248_rule(Parser *p) +_tmp_269_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38871,21 +41073,21 @@ _tmp_248_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_248[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_269[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_248[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_269[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_248[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_269[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -38894,9 +41096,9 @@ _tmp_248_rule(Parser *p) return _res; } -// _tmp_249: 'as' star_target +// _tmp_270: 'as' star_target static void * -_tmp_249_rule(Parser *p) +_tmp_270_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38913,21 +41115,21 @@ _tmp_249_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_249[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_270[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_249[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_270[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_249[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_270[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -38936,9 +41138,9 @@ _tmp_249_rule(Parser *p) return _res; } -// _tmp_250: 'as' star_target +// _tmp_271: 'as' star_target static void * -_tmp_250_rule(Parser *p) +_tmp_271_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38955,21 +41157,21 @@ _tmp_250_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_250[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_271[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_250[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_271[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_250[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_271[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -38978,9 +41180,9 @@ _tmp_250_rule(Parser *p) return _res; } -// _tmp_251: 'as' star_target +// _tmp_272: 'as' star_target static void * -_tmp_251_rule(Parser *p) +_tmp_272_rule(Parser *p) { if (p->level++ == MAXSTACK) { p->error_indicator = 1; @@ -38997,21 +41199,21 @@ _tmp_251_rule(Parser *p) p->level--; return NULL; } - D(fprintf(stderr, "%*c> _tmp_251[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_272[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 639)) // token='as' + (_keyword = _PyPegen_expect_token(p, 640)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_251[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_272[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_251[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_272[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; diff --git a/Parser/pegen.c b/Parser/pegen.c index b79ae4cb1fb370..262bfabfba7a25 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -359,7 +359,7 @@ _PyPegen_expect_token(Parser *p, int type) } Token *t = p->tokens[p->mark]; if (t->type != type) { - return NULL; + return NULL; } p->mark += 1; return t; diff --git a/Parser/pegen.h b/Parser/pegen.h index ad5c97f5f7e5d1..6962013c2d18b4 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -138,6 +138,7 @@ void* _PyPegen_expect_forced_result(Parser *p, void* result, const char* expecte Token *_PyPegen_expect_forced_token(Parser *p, int type, const char* expected); expr_ty _PyPegen_expect_soft_keyword(Parser *p, const char *keyword); expr_ty _PyPegen_soft_keyword_token(Parser *p); +expr_ty _PyPegen_fstring_middle_token(Parser* p); Token *_PyPegen_get_last_nonnwhitespace_token(Parser *); int _PyPegen_fill_token(Parser *p); expr_ty _PyPegen_name_token(Parser *p); @@ -155,7 +156,7 @@ typedef enum { int _Pypegen_raise_decode_error(Parser *p); void _PyPegen_raise_tokenizer_init_error(PyObject *filename); int _Pypegen_tokenizer_error(Parser *p); -void *_PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...); +void *_PyPegen_raise_error(Parser *p, PyObject *errtype, int use_mark, const char *errmsg, ...); void *_PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, Py_ssize_t lineno, Py_ssize_t col_offset, Py_ssize_t end_lineno, Py_ssize_t end_col_offset, @@ -175,8 +176,9 @@ RAISE_ERROR_KNOWN_LOCATION(Parser *p, PyObject *errtype, va_end(va); return NULL; } -#define RAISE_SYNTAX_ERROR(msg, ...) _PyPegen_raise_error(p, PyExc_SyntaxError, msg, ##__VA_ARGS__) -#define RAISE_INDENTATION_ERROR(msg, ...) _PyPegen_raise_error(p, PyExc_IndentationError, msg, ##__VA_ARGS__) +#define RAISE_SYNTAX_ERROR(msg, ...) _PyPegen_raise_error(p, PyExc_SyntaxError, 0, msg, ##__VA_ARGS__) +#define RAISE_INDENTATION_ERROR(msg, ...) _PyPegen_raise_error(p, PyExc_IndentationError, 0, msg, ##__VA_ARGS__) +#define RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN(msg, ...) _PyPegen_raise_error(p, PyExc_SyntaxError, 1, msg, ##__VA_ARGS__) #define RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, msg, ...) \ RAISE_ERROR_KNOWN_LOCATION(p, PyExc_SyntaxError, (a)->lineno, (a)->col_offset, (b)->end_lineno, (b)->end_col_offset, msg, ##__VA_ARGS__) #define RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, msg, ...) \ @@ -308,6 +310,7 @@ StarEtc *_PyPegen_star_etc(Parser *, arg_ty, asdl_seq *, arg_ty); arguments_ty _PyPegen_make_arguments(Parser *, asdl_arg_seq *, SlashWithDefault *, asdl_arg_seq *, asdl_seq *, StarEtc *); arguments_ty _PyPegen_empty_arguments(Parser *); +expr_ty _PyPegen_formatted_value(Parser *, expr_ty, Token *, expr_ty, expr_ty, int, int, int, int, PyArena *); AugOperator *_PyPegen_augoperator(Parser*, operator_ty type); stmt_ty _PyPegen_function_def_decorators(Parser *, asdl_expr_seq *, stmt_ty); stmt_ty _PyPegen_class_def_decorators(Parser *, asdl_expr_seq *, stmt_ty); @@ -317,12 +320,16 @@ asdl_keyword_seq *_PyPegen_seq_delete_starred_exprs(Parser *, asdl_seq *); expr_ty _PyPegen_collect_call_seqs(Parser *, asdl_expr_seq *, asdl_seq *, int lineno, int col_offset, int end_lineno, int end_col_offset, PyArena *arena); -expr_ty _PyPegen_concatenate_strings(Parser *p, asdl_seq *); +expr_ty _PyPegen_constant_from_token(Parser* p, Token* tok); +expr_ty _PyPegen_constant_from_string(Parser* p, Token* tok); +expr_ty _PyPegen_concatenate_strings(Parser *p, asdl_expr_seq *, int, int, int, int, PyArena *); +expr_ty _PyPegen_FetchRawForm(Parser *p, int, int, int, int); expr_ty _PyPegen_ensure_imaginary(Parser *p, expr_ty); expr_ty _PyPegen_ensure_real(Parser *p, expr_ty); asdl_seq *_PyPegen_join_sequences(Parser *, asdl_seq *, asdl_seq *); int _PyPegen_check_barry_as_flufl(Parser *, Token *); int _PyPegen_check_legacy_stmt(Parser *p, expr_ty t); +expr_ty _PyPegen_check_fstring_conversion(Parser *p, Token *, expr_ty t); mod_ty _PyPegen_make_module(Parser *, asdl_stmt_seq *); void *_PyPegen_arguments_parsing_error(Parser *, expr_ty); expr_ty _PyPegen_get_last_comprehension_item(comprehension_ty comprehension); @@ -338,6 +345,9 @@ void *_PyPegen_run_parser(Parser *); mod_ty _PyPegen_run_parser_from_string(const char *, int, PyObject *, PyCompilerFlags *, PyArena *); asdl_stmt_seq *_PyPegen_interactive_exit(Parser *); +// TODO: move to the correct place in this file +expr_ty _PyPegen_joined_str(Parser *p, Token* a, asdl_expr_seq* expr, Token*b); + // Generated function in parse.c - function definition in python.gram void *_PyPegen_parse(Parser *); diff --git a/Parser/pegen_errors.c b/Parser/pegen_errors.c index 6ea7600119b643..e26bad20a27575 100644 --- a/Parser/pegen_errors.c +++ b/Parser/pegen_errors.c @@ -192,7 +192,10 @@ _PyPegen_tokenize_full_source_to_check_for_errors(Parser *p) { exit: - if (PyErr_Occurred()) { + // If we're in an f-string, we want the syntax error in the expression part + // to propagate, so that tokenizer errors (like expecting '}') that happen afterwards + // do not swallow it. + if (PyErr_Occurred() && p->tok->tok_mode_stack_index <= 0) { Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(traceback); @@ -205,7 +208,7 @@ _PyPegen_tokenize_full_source_to_check_for_errors(Parser *p) { // PARSER ERRORS void * -_PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...) +_PyPegen_raise_error(Parser *p, PyObject *errtype, int use_mark, const char *errmsg, ...) { if (p->fill == 0) { va_list va; @@ -214,8 +217,13 @@ _PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...) va_end(va); return NULL; } - - Token *t = p->known_err_token != NULL ? p->known_err_token : p->tokens[p->fill - 1]; + if (use_mark && p->mark == p->fill && _PyPegen_fill_token(p) < 0) { + p->error_indicator = 1; + return NULL; + } + Token *t = p->known_err_token != NULL + ? p->known_err_token + : p->tokens[use_mark ? p->mark : p->fill - 1]; Py_ssize_t col_offset; Py_ssize_t end_col_offset = -1; if (t->col_offset == -1) { diff --git a/Parser/string_parser.c b/Parser/string_parser.c index c096bea7426e5c..be5f0c4a60a663 100644 --- a/Parser/string_parser.c +++ b/Parser/string_parser.c @@ -135,7 +135,9 @@ decode_unicode_with_escapes(Parser *parser, const char *s, size_t len, Token *t) const char *first_invalid_escape; v = _PyUnicode_DecodeUnicodeEscapeInternal(s, len, NULL, NULL, &first_invalid_escape); - if (v != NULL && first_invalid_escape != NULL) { + // HACK: later we can simply pass the line no, since we don't preserve the tokens + // when we are decoding the string but we preserve the line numbers. + if (v != NULL && first_invalid_escape != NULL && t != NULL) { if (warn_invalid_escape_sequence(parser, first_invalid_escape, t) < 0) { /* We have not decref u before because first_invalid_escape points inside u. */ @@ -166,43 +168,43 @@ decode_bytes_with_escapes(Parser *p, const char *s, Py_ssize_t len, Token *t) return result; } -/* s must include the bracketing quote characters, and r, b, u, - &/or f prefixes (if any), and embedded escape sequences (if any). - _PyPegen_parsestr parses it, and sets *result to decoded Python string object. - If the string is an f-string, set *fstr and *fstrlen to the unparsed - string object. Return 0 if no errors occurred. */ -int -_PyPegen_parsestr(Parser *p, int *bytesmode, int *rawmode, PyObject **result, - const char **fstr, Py_ssize_t *fstrlen, Token *t) +PyObject * +_PyPegen_decode_string(Parser *p, int raw, const char *s, size_t len, Token *t) +{ + if (raw) { + return PyUnicode_DecodeUTF8Stateful(s, len, NULL, NULL); + } + return decode_unicode_with_escapes(p, s, len, t); +} + +/* s must include the bracketing quote characters, and r, b &/or f prefixes + (if any), and embedded escape sequences (if any). (f-strings are handled by the parser) + _PyPegen_parse_string parses it, and returns the decoded Python string object. */ +PyObject * +_PyPegen_parse_string(Parser *p, Token *t) { const char *s = PyBytes_AsString(t->bytes); if (s == NULL) { - return -1; + return NULL; } size_t len; int quote = Py_CHARMASK(*s); - int fmode = 0; - *bytesmode = 0; - *rawmode = 0; - *result = NULL; - *fstr = NULL; + int bytesmode = 0; + int rawmode = 0; + if (Py_ISALPHA(quote)) { - while (!*bytesmode || !*rawmode) { + while (!bytesmode || !rawmode) { if (quote == 'b' || quote == 'B') { quote =(unsigned char)*++s; - *bytesmode = 1; + bytesmode = 1; } else if (quote == 'u' || quote == 'U') { quote = (unsigned char)*++s; } else if (quote == 'r' || quote == 'R') { quote = (unsigned char)*++s; - *rawmode = 1; - } - else if (quote == 'f' || quote == 'F') { - quote = (unsigned char)*++s; - fmode = 1; + rawmode = 1; } else { break; @@ -210,32 +212,21 @@ _PyPegen_parsestr(Parser *p, int *bytesmode, int *rawmode, PyObject **result, } } - /* fstrings are only allowed in Python 3.6 and greater */ - if (fmode && p->feature_version < 6) { - p->error_indicator = 1; - RAISE_SYNTAX_ERROR("Format strings are only supported in Python 3.6 and greater"); - return -1; - } - - if (fmode && *bytesmode) { - PyErr_BadInternalCall(); - return -1; - } if (quote != '\'' && quote != '\"') { PyErr_BadInternalCall(); - return -1; + return NULL; } /* Skip the leading quote char. */ s++; len = strlen(s); if (len > INT_MAX) { PyErr_SetString(PyExc_OverflowError, "string to parse is too long"); - return -1; + return NULL; } if (s[--len] != quote) { /* Last quote char must match the first. */ PyErr_BadInternalCall(); - return -1; + return NULL; } if (len >= 4 && s[0] == quote && s[1] == quote) { /* A triple quoted string. We've already skipped one quote at @@ -246,22 +237,13 @@ _PyPegen_parsestr(Parser *p, int *bytesmode, int *rawmode, PyObject **result, /* And check that the last two match. */ if (s[--len] != quote || s[--len] != quote) { PyErr_BadInternalCall(); - return -1; + return NULL; } } - if (fmode) { - /* Just return the bytes. The caller will parse the resulting - string. */ - *fstr = s; - *fstrlen = len; - return 0; - } - - /* Not an f-string. */ /* Avoid invoking escape decoding routines if possible. */ - *rawmode = *rawmode || strchr(s, '\\') == NULL; - if (*bytesmode) { + rawmode = rawmode || strchr(s, '\\') == NULL; + if (bytesmode) { /* Disallow non-ASCII characters. */ const char *ch; for (ch = s; *ch; ch++) { @@ -269,1014 +251,13 @@ _PyPegen_parsestr(Parser *p, int *bytesmode, int *rawmode, PyObject **result, RAISE_SYNTAX_ERROR( "bytes can only contain ASCII " "literal characters"); - return -1; - } - } - if (*rawmode) { - *result = PyBytes_FromStringAndSize(s, len); - } - else { - *result = decode_bytes_with_escapes(p, s, len, t); - } - } - else { - if (*rawmode) { - *result = PyUnicode_DecodeUTF8Stateful(s, len, NULL, NULL); - } - else { - *result = decode_unicode_with_escapes(p, s, len, t); - } - } - return *result == NULL ? -1 : 0; -} - - - -// FSTRING STUFF - -/* Fix locations for the given node and its children. - - `parent` is the enclosing node. - `expr_start` is the starting position of the expression (pointing to the open brace). - `n` is the node which locations are going to be fixed relative to parent. - `expr_str` is the child node's string representation, including braces. -*/ -static bool -fstring_find_expr_location(Token *parent, const char* expr_start, char *expr_str, int *p_lines, int *p_cols) -{ - *p_lines = 0; - *p_cols = 0; - assert(expr_start != NULL && *expr_start == '{'); - if (parent && parent->bytes) { - const char *parent_str = PyBytes_AsString(parent->bytes); - if (!parent_str) { - return false; - } - // The following is needed, in order to correctly shift the column - // offset, in the case that (disregarding any whitespace) a newline - // immediately follows the opening curly brace of the fstring expression. - bool newline_after_brace = 1; - const char *start = expr_start + 1; - while (start && *start != '}' && *start != '\n') { - if (*start != ' ' && *start != '\t' && *start != '\f') { - newline_after_brace = 0; - break; - } - start++; - } - - // Account for the characters from the last newline character to our - // left until the beginning of expr_start. - if (!newline_after_brace) { - start = expr_start; - while (start > parent_str && *start != '\n') { - start--; - } - *p_cols += (int)(expr_start - start); - if (*start == '\n') { - *p_cols -= 1; - } - } - /* adjust the start based on the number of newlines encountered - before the f-string expression */ - for (const char *p = parent_str; p < expr_start; p++) { - if (*p == '\n') { - (*p_lines)++; - } - } - } - return true; -} - - -/* Compile this expression in to an expr_ty. Add parens around the - expression, in order to allow leading spaces in the expression. */ -static expr_ty -fstring_compile_expr(Parser *p, const char *expr_start, const char *expr_end, - Token *t) -{ - expr_ty expr = NULL; - char *str; - Py_ssize_t len; - const char *s; - expr_ty result = NULL; - - assert(expr_end >= expr_start); - assert(*(expr_start-1) == '{'); - assert(*expr_end == '}' || *expr_end == '!' || *expr_end == ':' || - *expr_end == '='); - - /* If the substring is all whitespace, it's an error. We need to catch this - here, and not when we call PyParser_SimpleParseStringFlagsFilename, - because turning the expression '' in to '()' would go from being invalid - to valid. */ - for (s = expr_start; s != expr_end; s++) { - char c = *s; - /* The Python parser ignores only the following whitespace - characters (\r already is converted to \n). */ - if (!(c == ' ' || c == '\t' || c == '\n' || c == '\f')) { - break; - } - } - - if (s == expr_end) { - if (*expr_end == '!' || *expr_end == ':' || *expr_end == '=') { - RAISE_SYNTAX_ERROR("f-string: expression required before '%c'", *expr_end); - return NULL; - } - RAISE_SYNTAX_ERROR("f-string: empty expression not allowed"); - return NULL; - } - - len = expr_end - expr_start; - /* Allocate 3 extra bytes: open paren, close paren, null byte. */ - str = PyMem_Calloc(len + 3, sizeof(char)); - if (str == NULL) { - PyErr_NoMemory(); - return NULL; - } - - // The call to fstring_find_expr_location is responsible for finding the column offset - // the generated AST nodes need to be shifted to the right, which is equal to the number - // of the f-string characters before the expression starts. - memcpy(str+1, expr_start, len); - int lines, cols; - if (!fstring_find_expr_location(t, expr_start-1, str+1, &lines, &cols)) { - PyMem_Free(str); - return NULL; - } - - // The parentheses are needed in order to allow for leading whitespace within - // the f-string expression. This consequently gets parsed as a group (see the - // group rule in python.gram). - str[0] = '('; - str[len+1] = ')'; - - struct tok_state* tok = _PyTokenizer_FromString(str, 1); - if (tok == NULL) { - PyMem_Free(str); - return NULL; - } - tok->filename = Py_NewRef(p->tok->filename); - tok->lineno = t->lineno + lines - 1; - - Parser *p2 = _PyPegen_Parser_New(tok, Py_fstring_input, p->flags, p->feature_version, - NULL, p->arena); - - p2->starting_lineno = t->lineno + lines; - p2->starting_col_offset = lines != 0 ? cols : t->col_offset + cols; - - expr = _PyPegen_run_parser(p2); - - if (expr == NULL) { - goto exit; - } - result = expr; - -exit: - PyMem_Free(str); - _PyPegen_Parser_Free(p2); - _PyTokenizer_Free(tok); - return result; -} - -/* Return -1 on error. - - Return 0 if we reached the end of the literal. - - Return 1 if we haven't reached the end of the literal, but we want - the caller to process the literal up to this point. Used for - doubled braces. -*/ -static int -fstring_find_literal(Parser *p, const char **str, const char *end, int raw, - PyObject **literal, int recurse_lvl, Token *t) -{ - /* Get any literal string. It ends when we hit an un-doubled left - brace (which isn't part of a unicode name escape such as - "\N{EULER CONSTANT}"), or the end of the string. */ - - const char *s = *str; - const char *literal_start = s; - int result = 0; - - assert(*literal == NULL); - while (s < end) { - char ch = *s++; - if (!raw && ch == '\\' && s < end) { - ch = *s++; - if (ch == 'N') { - /* We need to look at and skip matching braces for "\N{name}" - sequences because otherwise we'll think the opening '{' - starts an expression, which is not the case with "\N". - Keep looking for either a matched '{' '}' pair, or the end - of the string. */ - - if (s < end && *s++ == '{') { - while (s < end && *s++ != '}') { - } - continue; - } - - /* This is an invalid "\N" sequence, since it's a "\N" not - followed by a "{". Just keep parsing this literal. This - error will be caught later by - decode_unicode_with_escapes(). */ - continue; - } - if (ch == '{' && warn_invalid_escape_sequence(p, s-1, t) < 0) { - return -1; - } - } - if (ch == '{' || ch == '}') { - /* Check for doubled braces, but only at the top level. If - we checked at every level, then f'{0:{3}}' would fail - with the two closing braces. */ - if (recurse_lvl == 0) { - if (s < end && *s == ch) { - /* We're going to tell the caller that the literal ends - here, but that they should continue scanning. But also - skip over the second brace when we resume scanning. */ - *str = s + 1; - result = 1; - goto done; - } - - /* Where a single '{' is the start of a new expression, a - single '}' is not allowed. */ - if (ch == '}') { - *str = s - 1; - RAISE_SYNTAX_ERROR("f-string: single '}' is not allowed"); - return -1; - } - } - /* We're either at a '{', which means we're starting another - expression; or a '}', which means we're at the end of this - f-string (for a nested format_spec). */ - s--; - break; - } - } - *str = s; - assert(s <= end); - assert(s == end || *s == '{' || *s == '}'); -done: - if (literal_start != s) { - if (raw) { - *literal = PyUnicode_DecodeUTF8Stateful(literal_start, - s - literal_start, - NULL, NULL); - } - else { - *literal = decode_unicode_with_escapes(p, literal_start, - s - literal_start, t); - } - if (!*literal) { - return -1; - } - } - return result; -} - -/* Forward declaration because parsing is recursive. */ -static expr_ty -fstring_parse(Parser *p, const char **str, const char *end, int raw, int recurse_lvl, - Token *first_token, Token* t, Token *last_token); - -/* Parse the f-string at *str, ending at end. We know *str starts an - expression (so it must be a '{'). Returns the FormattedValue node, which - includes the expression, conversion character, format_spec expression, and - optionally the text of the expression (if = is used). - - Note that I don't do a perfect job here: I don't make sure that a - closing brace doesn't match an opening paren, for example. It - doesn't need to error on all invalid expressions, just correctly - find the end of all valid ones. Any errors inside the expression - will be caught when we parse it later. - - *expression is set to the expression. For an '=' "debug" expression, - *expr_text is set to the debug text (the original text of the expression, - including the '=' and any whitespace around it, as a string object). If - not a debug expression, *expr_text set to NULL. */ -static int -fstring_find_expr(Parser *p, const char **str, const char *end, int raw, int recurse_lvl, - PyObject **expr_text, expr_ty *expression, Token *first_token, - Token *t, Token *last_token) -{ - /* Return -1 on error, else 0. */ - - const char *expr_start; - const char *expr_end; - expr_ty simple_expression; - expr_ty format_spec = NULL; /* Optional format specifier. */ - int conversion = -1; /* The conversion char. Use default if not - specified, or !r if using = and no format - spec. */ - - /* 0 if we're not in a string, else the quote char we're trying to - match (single or double quote). */ - char quote_char = 0; - - /* If we're inside a string, 1=normal, 3=triple-quoted. */ - int string_type = 0; - - /* Keep track of nesting level for braces/parens/brackets in - expressions. */ - Py_ssize_t nested_depth = 0; - char parenstack[MAXLEVEL]; - - *expr_text = NULL; - - /* Can only nest one level deep. */ - if (recurse_lvl >= 2) { - RAISE_SYNTAX_ERROR("f-string: expressions nested too deeply"); - goto error; - } - - /* The first char must be a left brace, or we wouldn't have gotten - here. Skip over it. */ - assert(**str == '{'); - *str += 1; - - expr_start = *str; - for (; *str < end; (*str)++) { - char ch; - - /* Loop invariants. */ - assert(nested_depth >= 0); - assert(*str >= expr_start && *str < end); - if (quote_char) { - assert(string_type == 1 || string_type == 3); - } else { - assert(string_type == 0); - } - - ch = **str; - /* Nowhere inside an expression is a backslash allowed. */ - if (ch == '\\') { - /* Error: can't include a backslash character, inside - parens or strings or not. */ - RAISE_SYNTAX_ERROR( - "f-string expression part " - "cannot include a backslash"); - goto error; - } - if (quote_char) { - /* We're inside a string. See if we're at the end. */ - /* This code needs to implement the same non-error logic - as tok_get from tokenizer.c, at the letter_quote - label. To actually share that code would be a - nightmare. But, it's unlikely to change and is small, - so duplicate it here. Note we don't need to catch all - of the errors, since they'll be caught when parsing the - expression. We just need to match the non-error - cases. Thus we can ignore \n in single-quoted strings, - for example. Or non-terminated strings. */ - if (ch == quote_char) { - /* Does this match the string_type (single or triple - quoted)? */ - if (string_type == 3) { - if (*str+2 < end && *(*str+1) == ch && *(*str+2) == ch) { - /* We're at the end of a triple quoted string. */ - *str += 2; - string_type = 0; - quote_char = 0; - continue; - } - } else { - /* We're at the end of a normal string. */ - quote_char = 0; - string_type = 0; - continue; - } - } - } else if (ch == '\'' || ch == '"') { - /* Is this a triple quoted string? */ - if (*str+2 < end && *(*str+1) == ch && *(*str+2) == ch) { - string_type = 3; - *str += 2; - } else { - /* Start of a normal string. */ - string_type = 1; - } - /* Start looking for the end of the string. */ - quote_char = ch; - } else if (ch == '[' || ch == '{' || ch == '(') { - if (nested_depth >= MAXLEVEL) { - RAISE_SYNTAX_ERROR("f-string: too many nested parenthesis"); - goto error; - } - parenstack[nested_depth] = ch; - nested_depth++; - } else if (ch == '#') { - /* Error: can't include a comment character, inside parens - or not. */ - RAISE_SYNTAX_ERROR("f-string expression part cannot include '#'"); - goto error; - } else if (nested_depth == 0 && - (ch == '!' || ch == ':' || ch == '}' || - ch == '=' || ch == '>' || ch == '<')) { - /* See if there's a next character. */ - if (*str+1 < end) { - char next = *(*str+1); - - /* For "!=". since '=' is not an allowed conversion character, - nothing is lost in this test. */ - if ((ch == '!' && next == '=') || /* != */ - (ch == '=' && next == '=') || /* == */ - (ch == '<' && next == '=') || /* <= */ - (ch == '>' && next == '=') /* >= */ - ) { - *str += 1; - continue; - } - } - /* Don't get out of the loop for these, if they're single - chars (not part of 2-char tokens). If by themselves, they - don't end an expression (unlike say '!'). */ - if (ch == '>' || ch == '<') { - continue; - } - - /* Normal way out of this loop. */ - break; - } else if (ch == ']' || ch == '}' || ch == ')') { - if (!nested_depth) { - RAISE_SYNTAX_ERROR("f-string: unmatched '%c'", ch); - goto error; - } - nested_depth--; - int opening = (unsigned char)parenstack[nested_depth]; - if (!((opening == '(' && ch == ')') || - (opening == '[' && ch == ']') || - (opening == '{' && ch == '}'))) - { - RAISE_SYNTAX_ERROR( - "f-string: closing parenthesis '%c' " - "does not match opening parenthesis '%c'", - ch, opening); - goto error; - } - } else { - /* Just consume this char and loop around. */ - } - } - expr_end = *str; - /* If we leave the above loop in a string or with mismatched parens, we - don't really care. We'll get a syntax error when compiling the - expression. But, we can produce a better error message, so let's just - do that.*/ - if (quote_char) { - RAISE_SYNTAX_ERROR("f-string: unterminated string"); - goto error; - } - if (nested_depth) { - int opening = (unsigned char)parenstack[nested_depth - 1]; - RAISE_SYNTAX_ERROR("f-string: unmatched '%c'", opening); - goto error; - } - - if (*str >= end) { - goto unexpected_end_of_string; - } - - /* Compile the expression as soon as possible, so we show errors - related to the expression before errors related to the - conversion or format_spec. */ - simple_expression = fstring_compile_expr(p, expr_start, expr_end, t); - if (!simple_expression) { - goto error; - } - - /* Check for =, which puts the text value of the expression in - expr_text. */ - if (**str == '=') { - if (p->feature_version < 8) { - RAISE_SYNTAX_ERROR("f-string: self documenting expressions are " - "only supported in Python 3.8 and greater"); - goto error; - } - *str += 1; - - /* Skip over ASCII whitespace. No need to test for end of string - here, since we know there's at least a trailing quote somewhere - ahead. */ - while (Py_ISSPACE(**str)) { - *str += 1; - } - if (*str >= end) { - goto unexpected_end_of_string; - } - /* Set *expr_text to the text of the expression. */ - *expr_text = PyUnicode_FromStringAndSize(expr_start, *str-expr_start); - if (!*expr_text) { - goto error; - } - } - - /* Check for a conversion char, if present. */ - if (**str == '!') { - *str += 1; - const char *conv_start = *str; - while (1) { - if (*str >= end) { - goto unexpected_end_of_string; - } - if (**str == '}' || **str == ':') { - break; - } - *str += 1; - } - if (*str == conv_start) { - RAISE_SYNTAX_ERROR( - "f-string: missed conversion character"); - goto error; - } - - conversion = (unsigned char)*conv_start; - /* Validate the conversion. */ - if ((*str != conv_start + 1) || - !(conversion == 's' || conversion == 'r' || conversion == 'a')) - { - PyObject *conv_obj = PyUnicode_FromStringAndSize(conv_start, - *str-conv_start); - if (conv_obj) { - RAISE_SYNTAX_ERROR( - "f-string: invalid conversion character %R: " - "expected 's', 'r', or 'a'", - conv_obj); - Py_DECREF(conv_obj); - } - goto error; - } - - } - - /* Check for the format spec, if present. */ - assert(*str < end); - if (**str == ':') { - *str += 1; - if (*str >= end) { - goto unexpected_end_of_string; - } - - /* Parse the format spec. */ - format_spec = fstring_parse(p, str, end, raw, recurse_lvl+1, - first_token, t, last_token); - if (!format_spec) { - goto error; - } - } - - if (*str >= end || **str != '}') { - goto unexpected_end_of_string; - } - - /* We're at a right brace. Consume it. */ - assert(*str < end); - assert(**str == '}'); - *str += 1; - - /* If we're in = mode (detected by non-NULL expr_text), and have no format - spec and no explicit conversion, set the conversion to 'r'. */ - if (*expr_text && format_spec == NULL && conversion == -1) { - conversion = 'r'; - } - - /* And now create the FormattedValue node that represents this - entire expression with the conversion and format spec. */ - //TODO: Fix this - *expression = _PyAST_FormattedValue(simple_expression, conversion, - format_spec, first_token->lineno, - first_token->col_offset, - last_token->end_lineno, - last_token->end_col_offset, p->arena); - if (!*expression) { - goto error; - } - - return 0; - -unexpected_end_of_string: - RAISE_SYNTAX_ERROR("f-string: expecting '}'"); - /* Falls through to error. */ - -error: - Py_XDECREF(*expr_text); - return -1; - -} - -/* Return -1 on error. - - Return 0 if we have a literal (possible zero length) and an - expression (zero length if at the end of the string. - - Return 1 if we have a literal, but no expression, and we want the - caller to call us again. This is used to deal with doubled - braces. - - When called multiple times on the string 'a{{b{0}c', this function - will return: - - 1. the literal 'a{' with no expression, and a return value - of 1. Despite the fact that there's no expression, the return - value of 1 means we're not finished yet. - - 2. the literal 'b' and the expression '0', with a return value of - 0. The fact that there's an expression means we're not finished. - - 3. literal 'c' with no expression and a return value of 0. The - combination of the return value of 0 with no expression means - we're finished. -*/ -static int -fstring_find_literal_and_expr(Parser *p, const char **str, const char *end, int raw, - int recurse_lvl, PyObject **literal, - PyObject **expr_text, expr_ty *expression, - Token *first_token, Token *t, Token *last_token) -{ - int result; - - assert(*literal == NULL && *expression == NULL); - - /* Get any literal string. */ - result = fstring_find_literal(p, str, end, raw, literal, recurse_lvl, t); - if (result < 0) { - goto error; - } - - assert(result == 0 || result == 1); - - if (result == 1) { - /* We have a literal, but don't look at the expression. */ - return 1; - } - - if (*str >= end || **str == '}') { - /* We're at the end of the string or the end of a nested - f-string: no expression. The top-level error case where we - expect to be at the end of the string but we're at a '}' is - handled later. */ - return 0; - } - - /* We must now be the start of an expression, on a '{'. */ - assert(**str == '{'); - - if (fstring_find_expr(p, str, end, raw, recurse_lvl, expr_text, - expression, first_token, t, last_token) < 0) { - goto error; - } - - return 0; - -error: - Py_CLEAR(*literal); - return -1; -} - -#ifdef NDEBUG -#define ExprList_check_invariants(l) -#else -static void -ExprList_check_invariants(ExprList *l) -{ - /* Check our invariants. Make sure this object is "live", and - hasn't been deallocated. */ - assert(l->size >= 0); - assert(l->p != NULL); - if (l->size <= EXPRLIST_N_CACHED) { - assert(l->data == l->p); - } -} -#endif - -static void -ExprList_Init(ExprList *l) -{ - l->allocated = EXPRLIST_N_CACHED; - l->size = 0; - - /* Until we start allocating dynamically, p points to data. */ - l->p = l->data; - - ExprList_check_invariants(l); -} - -static int -ExprList_Append(ExprList *l, expr_ty exp) -{ - ExprList_check_invariants(l); - if (l->size >= l->allocated) { - /* We need to alloc (or realloc) the memory. */ - Py_ssize_t new_size = l->allocated * 2; - - /* See if we've ever allocated anything dynamically. */ - if (l->p == l->data) { - Py_ssize_t i; - /* We're still using the cached data. Switch to - alloc-ing. */ - l->p = PyMem_Malloc(sizeof(expr_ty) * new_size); - if (!l->p) { - return -1; - } - /* Copy the cached data into the new buffer. */ - for (i = 0; i < l->size; i++) { - l->p[i] = l->data[i]; - } - } else { - /* Just realloc. */ - expr_ty *tmp = PyMem_Realloc(l->p, sizeof(expr_ty) * new_size); - if (!tmp) { - PyMem_Free(l->p); - l->p = NULL; - return -1; - } - l->p = tmp; - } - - l->allocated = new_size; - assert(l->allocated == 2 * l->size); - } - - l->p[l->size++] = exp; - - ExprList_check_invariants(l); - return 0; -} - -static void -ExprList_Dealloc(ExprList *l) -{ - ExprList_check_invariants(l); - - /* If there's been an error, or we've never dynamically allocated, - do nothing. */ - if (!l->p || l->p == l->data) { - /* Do nothing. */ - } else { - /* We have dynamically allocated. Free the memory. */ - PyMem_Free(l->p); - } - l->p = NULL; - l->size = -1; -} - -static asdl_expr_seq * -ExprList_Finish(ExprList *l, PyArena *arena) -{ - asdl_expr_seq *seq; - - ExprList_check_invariants(l); - - /* Allocate the asdl_seq and copy the expressions in to it. */ - seq = _Py_asdl_expr_seq_new(l->size, arena); - if (seq) { - Py_ssize_t i; - for (i = 0; i < l->size; i++) { - asdl_seq_SET(seq, i, l->p[i]); - } - } - ExprList_Dealloc(l); - return seq; -} - -#ifdef NDEBUG -#define FstringParser_check_invariants(state) -#else -static void -FstringParser_check_invariants(FstringParser *state) -{ - if (state->last_str) { - assert(PyUnicode_CheckExact(state->last_str)); - } - ExprList_check_invariants(&state->expr_list); -} -#endif - -void -_PyPegen_FstringParser_Init(FstringParser *state) -{ - state->last_str = NULL; - state->fmode = 0; - ExprList_Init(&state->expr_list); - FstringParser_check_invariants(state); -} - -void -_PyPegen_FstringParser_Dealloc(FstringParser *state) -{ - FstringParser_check_invariants(state); - - Py_XDECREF(state->last_str); - ExprList_Dealloc(&state->expr_list); -} - -/* Make a Constant node, but decref the PyUnicode object being added. */ -static expr_ty -make_str_node_and_del(Parser *p, PyObject **str, Token* first_token, Token *last_token) -{ - PyObject *s = *str; - PyObject *kind = NULL; - *str = NULL; - assert(PyUnicode_CheckExact(s)); - if (_PyArena_AddPyObject(p->arena, s) < 0) { - Py_DECREF(s); - return NULL; - } - const char* the_str = PyBytes_AsString(first_token->bytes); - if (the_str && the_str[0] == 'u') { - kind = _PyPegen_new_identifier(p, "u"); - } - - if (kind == NULL && PyErr_Occurred()) { - return NULL; - } - - return _PyAST_Constant(s, kind, first_token->lineno, first_token->col_offset, - last_token->end_lineno, last_token->end_col_offset, - p->arena); - -} - - -/* Add a non-f-string (that is, a regular literal string). str is - decref'd. */ -int -_PyPegen_FstringParser_ConcatAndDel(FstringParser *state, PyObject *str) -{ - FstringParser_check_invariants(state); - - assert(PyUnicode_CheckExact(str)); - - if (PyUnicode_GET_LENGTH(str) == 0) { - Py_DECREF(str); - return 0; - } - - if (!state->last_str) { - /* We didn't have a string before, so just remember this one. */ - state->last_str = str; - } else { - /* Concatenate this with the previous string. */ - PyUnicode_AppendAndDel(&state->last_str, str); - if (!state->last_str) { - return -1; - } - } - FstringParser_check_invariants(state); - return 0; -} - -/* Parse an f-string. The f-string is in *str to end, with no - 'f' or quotes. */ -int -_PyPegen_FstringParser_ConcatFstring(Parser *p, FstringParser *state, const char **str, - const char *end, int raw, int recurse_lvl, - Token *first_token, Token* t, Token *last_token) -{ - FstringParser_check_invariants(state); - state->fmode = 1; - - /* Parse the f-string. */ - while (1) { - PyObject *literal = NULL; - PyObject *expr_text = NULL; - expr_ty expression = NULL; - - /* If there's a zero length literal in front of the - expression, literal will be NULL. If we're at the end of - the f-string, expression will be NULL (unless result == 1, - see below). */ - int result = fstring_find_literal_and_expr(p, str, end, raw, recurse_lvl, - &literal, &expr_text, - &expression, first_token, t, last_token); - if (result < 0) { - return -1; - } - - /* Add the literal, if any. */ - if (literal && _PyPegen_FstringParser_ConcatAndDel(state, literal) < 0) { - Py_XDECREF(expr_text); - return -1; - } - /* Add the expr_text, if any. */ - if (expr_text && _PyPegen_FstringParser_ConcatAndDel(state, expr_text) < 0) { - return -1; - } - - /* We've dealt with the literal and expr_text, their ownership has - been transferred to the state object. Don't look at them again. */ - - /* See if we should just loop around to get the next literal - and expression, while ignoring the expression this - time. This is used for un-doubling braces, as an - optimization. */ - if (result == 1) { - continue; - } - - if (!expression) { - /* We're done with this f-string. */ - break; - } - - /* We know we have an expression. Convert any existing string - to a Constant node. */ - if (state->last_str) { - /* Convert the existing last_str literal to a Constant node. */ - expr_ty last_str = make_str_node_and_del(p, &state->last_str, first_token, last_token); - if (!last_str || ExprList_Append(&state->expr_list, last_str) < 0) { - return -1; - } - } - - if (ExprList_Append(&state->expr_list, expression) < 0) { - return -1; - } - } - - /* If recurse_lvl is zero, then we must be at the end of the - string. Otherwise, we must be at a right brace. */ - - if (recurse_lvl == 0 && *str < end-1) { - RAISE_SYNTAX_ERROR("f-string: unexpected end of string"); - return -1; - } - if (recurse_lvl != 0 && **str != '}') { - RAISE_SYNTAX_ERROR("f-string: expecting '}'"); - return -1; - } - - FstringParser_check_invariants(state); - return 0; -} - -/* Convert the partial state reflected in last_str and expr_list to an - expr_ty. The expr_ty can be a Constant, or a JoinedStr. */ -expr_ty -_PyPegen_FstringParser_Finish(Parser *p, FstringParser *state, Token* first_token, - Token *last_token) -{ - asdl_expr_seq *seq; - - FstringParser_check_invariants(state); - - /* If we're just a constant string with no expressions, return - that. */ - if (!state->fmode) { - assert(!state->expr_list.size); - if (!state->last_str) { - /* Create a zero length string. */ - state->last_str = PyUnicode_FromStringAndSize(NULL, 0); - if (!state->last_str) { - goto error; + return NULL; } } - return make_str_node_and_del(p, &state->last_str, first_token, last_token); - } - - /* Create a Constant node out of last_str, if needed. It will be the - last node in our expression list. */ - if (state->last_str) { - expr_ty str = make_str_node_and_del(p, &state->last_str, first_token, last_token); - if (!str || ExprList_Append(&state->expr_list, str) < 0) { - goto error; + if (rawmode) { + return PyBytes_FromStringAndSize(s, len); } + return decode_bytes_with_escapes(p, s, len, t); } - /* This has already been freed. */ - assert(state->last_str == NULL); - - seq = ExprList_Finish(&state->expr_list, p->arena); - if (!seq) { - goto error; - } - - return _PyAST_JoinedStr(seq, first_token->lineno, first_token->col_offset, - last_token->end_lineno, last_token->end_col_offset, - p->arena); - -error: - _PyPegen_FstringParser_Dealloc(state); - return NULL; -} - -/* Given an f-string (with no 'f' or quotes) that's in *str and ends - at end, parse it into an expr_ty. Return NULL on error. Adjust - str to point past the parsed portion. */ -static expr_ty -fstring_parse(Parser *p, const char **str, const char *end, int raw, - int recurse_lvl, Token *first_token, Token* t, Token *last_token) -{ - FstringParser state; - - _PyPegen_FstringParser_Init(&state); - if (_PyPegen_FstringParser_ConcatFstring(p, &state, str, end, raw, recurse_lvl, - first_token, t, last_token) < 0) { - _PyPegen_FstringParser_Dealloc(&state); - return NULL; - } - - return _PyPegen_FstringParser_Finish(p, &state, t, t); + return _PyPegen_decode_string(p, rawmode, s, len, t); } diff --git a/Parser/string_parser.h b/Parser/string_parser.h index 4a22f3d3086f47..0b34de1b4e41e9 100644 --- a/Parser/string_parser.h +++ b/Parser/string_parser.h @@ -5,42 +5,7 @@ #include #include "pegen.h" -#define EXPRLIST_N_CACHED 64 - -typedef struct { - /* Incrementally build an array of expr_ty, so be used in an - asdl_seq. Cache some small but reasonably sized number of - expr_ty's, and then after that start dynamically allocating, - doubling the number allocated each time. Note that the f-string - f'{0}a{1}' contains 3 expr_ty's: 2 FormattedValue's, and one - Constant for the literal 'a'. So you add expr_ty's about twice as - fast as you add expressions in an f-string. */ - - Py_ssize_t allocated; /* Number we've allocated. */ - Py_ssize_t size; /* Number we've used. */ - expr_ty *p; /* Pointer to the memory we're actually - using. Will point to 'data' until we - start dynamically allocating. */ - expr_ty data[EXPRLIST_N_CACHED]; -} ExprList; - -/* The FstringParser is designed to add a mix of strings and - f-strings, and concat them together as needed. Ultimately, it - generates an expr_ty. */ -typedef struct { - PyObject *last_str; - ExprList expr_list; - int fmode; -} FstringParser; - -void _PyPegen_FstringParser_Init(FstringParser *); -int _PyPegen_parsestr(Parser *, int *, int *, PyObject **, - const char **, Py_ssize_t *, Token *); -int _PyPegen_FstringParser_ConcatFstring(Parser *, FstringParser *, const char **, - const char *, int, int, Token *, Token *, - Token *); -int _PyPegen_FstringParser_ConcatAndDel(FstringParser *, PyObject *); -expr_ty _PyPegen_FstringParser_Finish(Parser *, FstringParser *, Token *, Token *); -void _PyPegen_FstringParser_Dealloc(FstringParser *); +PyObject *_PyPegen_parse_string(Parser *, Token *); +PyObject *_PyPegen_decode_string(Parser *, int, const char *, size_t, Token *); #endif diff --git a/Parser/token.c b/Parser/token.c index 6299ad2f563144..82267fbfcd0c54 100644 --- a/Parser/token.c +++ b/Parser/token.c @@ -60,12 +60,16 @@ const char * const _PyParser_TokenNames[] = { "RARROW", "ELLIPSIS", "COLONEQUAL", + "EXCLAMATION", "OP", "AWAIT", "ASYNC", "TYPE_IGNORE", "TYPE_COMMENT", "SOFT_KEYWORD", + "FSTRING_START", + "FSTRING_MIDDLE", + "FSTRING_END", "", "", "", @@ -79,6 +83,7 @@ int _PyToken_OneChar(int c1) { switch (c1) { + case '!': return EXCLAMATION; case '%': return PERCENT; case '&': return AMPER; case '(': return LPAR; diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 463c0e00ca1411..1dfd2d6e5e1717 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -43,6 +43,28 @@ tok->lineno++; \ tok->col_offset = 0; +#ifdef Py_DEBUG +static inline tokenizer_mode* TOK_GET_MODE(struct tok_state* tok) { + assert(tok->tok_mode_stack_index >= 0); + assert(tok->tok_mode_stack_index < MAXLEVEL); + return &(tok->tok_mode_stack[tok->tok_mode_stack_index]); +} +static inline tokenizer_mode* TOK_NEXT_MODE(struct tok_state* tok) { + assert(tok->tok_mode_stack_index >= 0); + assert(tok->tok_mode_stack_index < MAXLEVEL); + return &(tok->tok_mode_stack[++tok->tok_mode_stack_index]); +} +static inline int *TOK_GET_BRACKET_MARK(tokenizer_mode* mode) { + assert(mode->bracket_mark_index >= 0); + assert(mode->bracket_mark_index < MAX_EXPR_NESTING); + return &(mode->bracket_mark[mode->bracket_mark_index]); +} +#else +#define TOK_GET_MODE(tok) (&(tok->tok_mode_stack[tok->tok_mode_stack_index])) +#define TOK_NEXT_MODE(tok) (&(tok->tok_mode_stack[++tok->tok_mode_stack_index])) +#define TOK_GET_BRACKET_MARK(mode) (&(mode->bracket_mark[mode->bracket_mark_index])) +#endif + /* Forward */ static struct tok_state *tok_new(void); static int tok_nextc(struct tok_state *tok); @@ -98,6 +120,9 @@ tok_new(void) tok->interactive_underflow = IUNDERFLOW_NORMAL; tok->str = NULL; tok->report_warnings = 1; + tok->tok_mode_stack[0] = (tokenizer_mode){.kind =TOK_REGULAR_MODE, .f_string_quote='\0', .f_string_quote_size = 0}; + tok->tok_mode_stack_index = 0; + tok->tok_report_warnings = 1; #ifdef Py_DEBUG tok->debug = _Py_GetConfig()->parser_debug; #endif @@ -346,6 +371,92 @@ tok_concatenate_interactive_new_line(struct tok_state *tok, const char *line) { } +/* Traverse and update all f-string buffers with the value */ +static void +update_fstring_buffers(struct tok_state *tok, char value, int regular, int multiline) +{ + int index; + tokenizer_mode *mode; + + for (index = tok->tok_mode_stack_index; index >= 0; --index) { + mode = &(tok->tok_mode_stack[index]); + if (regular && mode->f_string_start != NULL) { + mode->f_string_start += value; + } + if (multiline && mode->f_string_multi_line_start != NULL) { + mode->f_string_multi_line_start += value; + } + } +} + +static int +update_fstring_expr(struct tok_state *tok, char cur) +{ + assert(tok->cur != NULL); + + Py_ssize_t size = strlen(tok->cur); + tokenizer_mode *tok_mode = TOK_GET_MODE(tok); + + switch (cur) { + case '{': + if (tok_mode->last_expr_buffer != NULL) { + PyMem_Free(tok_mode->last_expr_buffer); + } + tok_mode->last_expr_buffer = PyMem_Malloc(size); + if (tok_mode->last_expr_buffer == NULL) { + tok->done = E_NOMEM; + return 0; + } + tok_mode->last_expr_size = size; + tok_mode->last_expr_end = -1; + strncpy(tok_mode->last_expr_buffer, tok->cur, size); + break; + case 0: + if (!tok_mode->last_expr_buffer || tok_mode->last_expr_end >= 0) { + return 1; + } + char *new_buffer = PyMem_Realloc( + tok_mode->last_expr_buffer, + tok_mode->last_expr_size + size + ); + if (new_buffer == NULL) { + PyMem_Free(tok_mode->last_expr_buffer); + tok->done = E_NOMEM; + return 0; + } + tok_mode->last_expr_buffer = new_buffer; + strncpy(tok_mode->last_expr_buffer + tok_mode->last_expr_size, tok->cur, size); + tok_mode->last_expr_size += size; + break; + case '}': + case '!': + case ':': + if (tok_mode->last_expr_end == -1) { + tok_mode->last_expr_end = strlen(tok->start); + } + break; + } + + return 1; +} + +static void +free_fstring_expressions(struct tok_state *tok) +{ + int index; + tokenizer_mode *mode; + + for (index = tok->tok_mode_stack_index; index >= 0; --index) { + mode = &(tok->tok_mode_stack[index]); + if (mode->last_expr_buffer != NULL) { + PyMem_Free(mode->last_expr_buffer); + mode->last_expr_buffer = NULL; + mode->last_expr_size = 0; + mode->last_expr_end = -1; + } + } +} + /* Read a line of text from TOK into S, using the stream in TOK. Return NULL on failure, else S. @@ -372,6 +483,7 @@ tok_reserve_buf(struct tok_state *tok, Py_ssize_t size) Py_ssize_t start = tok->start == NULL ? -1 : tok->start - tok->buf; Py_ssize_t line_start = tok->start == NULL ? -1 : tok->line_start - tok->buf; Py_ssize_t multi_line_start = tok->multi_line_start - tok->buf; + update_fstring_buffers(tok, -*tok->buf, /*regular=*/1, /*multiline=*/1); newbuf = (char *)PyMem_Realloc(newbuf, newsize); if (newbuf == NULL) { tok->done = E_NOMEM; @@ -384,6 +496,7 @@ tok_reserve_buf(struct tok_state *tok, Py_ssize_t size) tok->start = start < 0 ? NULL : tok->buf + start; tok->line_start = line_start < 0 ? NULL : tok->buf + line_start; tok->multi_line_start = multi_line_start < 0 ? NULL : tok->buf + multi_line_start; + update_fstring_buffers(tok, *tok->buf, /*regular=*/1, /*multiline=*/1); } return 1; } @@ -838,6 +951,7 @@ _PyTokenizer_Free(struct tok_state *tok) if (tok->interactive_src_start != NULL) { PyMem_Free(tok->interactive_src_start); } + free_fstring_expressions(tok); PyMem_Free(tok); } @@ -854,6 +968,9 @@ tok_readline_raw(struct tok_state *tok) if (line == NULL) { return 1; } + if (tok->tok_mode_stack_index && !update_fstring_expr(tok, 0)) { + return 0; + } if (tok->fp_interactive && tok_concatenate_interactive_new_line(tok, line) == -1) { return 0; @@ -941,6 +1058,7 @@ tok_underflow_interactive(struct tok_state *tok) { } else if (tok->start != NULL) { Py_ssize_t cur_multi_line_start = tok->multi_line_start - tok->buf; + update_fstring_buffers(tok, -*tok->buf, /*regular=*/0, /*multiline=*/1); size_t size = strlen(newtok); ADVANCE_LINENO(); if (!tok_reserve_buf(tok, size + 1)) { @@ -953,6 +1071,7 @@ tok_underflow_interactive(struct tok_state *tok) { PyMem_Free(newtok); tok->inp += size; tok->multi_line_start = tok->buf + cur_multi_line_start; + update_fstring_buffers(tok, *tok->buf, /*regular=*/0, /*multiline=*/1); } else { ADVANCE_LINENO(); @@ -969,6 +1088,10 @@ tok_underflow_interactive(struct tok_state *tok) { } return 0; } + + if (tok->tok_mode_stack_index && !update_fstring_expr(tok, 0)) { + return 0; + } return 1; } @@ -1073,7 +1196,7 @@ tok_nextc(struct tok_state *tok) return Py_CHARMASK(*tok->cur++); /* Fast path */ } if (tok->done != E_OK) { - return EOF; + return EOF; } if (tok->fp == NULL) { rc = tok_underflow_string(tok); @@ -1115,7 +1238,7 @@ tok_backup(struct tok_state *tok, int c) if (--tok->cur < tok->buf) { Py_FatalError("tokenizer beginning of buffer"); } - if ((int)(unsigned char)*tok->cur != c) { + if ((int)(unsigned char)*tok->cur != Py_CHARMASK(c)) { Py_FatalError("tok_backup: wrong character"); } tok->col_offset--; @@ -1172,6 +1295,7 @@ _syntaxerror_range(struct tok_state *tok, const char *format, static int syntaxerror(struct tok_state *tok, const char *format, ...) { + // This errors are cleaned on startup. Todo: Fix it. va_list vargs; va_start(vargs, format); int ret = _syntaxerror_range(tok, format, -1, -1, vargs); @@ -1234,6 +1358,41 @@ parser_warn(struct tok_state *tok, PyObject *category, const char *format, ...) return -1; } +static int +warn_invalid_escape_sequence(struct tok_state *tok, int first_invalid_escape_char) +{ + + if (!tok->tok_report_warnings) { + return 0; + } + + PyObject *msg = PyUnicode_FromFormat( + "invalid escape sequence '\\%c'", + (char) first_invalid_escape_char + ); + + if (msg == NULL) { + return -1; + } + + if (PyErr_WarnExplicitObject(PyExc_DeprecationWarning, msg, tok->filename, + tok->lineno, NULL, NULL) < 0) { + Py_DECREF(msg); + + if (PyErr_ExceptionMatches(PyExc_DeprecationWarning)) { + /* Replace the DeprecationWarning exception with a SyntaxError + to get a more accurate error report */ + PyErr_Clear(); + return syntaxerror(tok, "invalid escape sequence '\\%c'", (char) first_invalid_escape_char); + } + + return -1; + } + + Py_DECREF(msg); + return 0; +} + static int lookahead(struct tok_state *tok, const char *test) { @@ -1389,7 +1548,6 @@ tok_decimal_tail(struct tok_state *tok) return c; } -/* Get next token, after space stripping etc. */ static inline int tok_continuation_line(struct tok_state *tok) { @@ -1427,7 +1585,12 @@ token_setup(struct tok_state *tok, struct token *token, int type, const char *st { assert((start == NULL && end == NULL) || (start != NULL && end != NULL)); token->level = tok->level; - token->lineno = type == STRING ? tok->first_lineno : tok->lineno; + if (ISSTRINGLIT(type)) { + token->lineno = tok->first_lineno; + } + else { + token->lineno = tok->lineno; + } token->end_lineno = tok->lineno; token->col_offset = token->end_col_offset = -1; token->start = start; @@ -1441,7 +1604,7 @@ token_setup(struct tok_state *tok, struct token *token, int type, const char *st } static int -tok_get(struct tok_state *tok, struct token *token) +tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct token *token) { int c; int blankline, nonascii; @@ -1602,6 +1765,11 @@ tok_get(struct tok_state *tok, struct token *token) /* Skip comment, unless it's a type comment */ if (c == '#') { + + if (tok->tok_mode_stack_index > 0) { + return MAKE_TOKEN(syntaxerror(tok, "f-string expression part cannot include '#'")); + } + const char *prefix, *p, *type_start; int current_starting_col_offset; @@ -1703,6 +1871,9 @@ tok_get(struct tok_state *tok, struct token *token) } c = tok_nextc(tok); if (c == '"' || c == '\'') { + if (saw_f) { + goto f_string_quote; + } goto letter_quote; } } @@ -1748,7 +1919,9 @@ tok_get(struct tok_state *tok, struct token *token) int ahead_tok_kind; memcpy(&ahead_tok, tok, sizeof(ahead_tok)); - ahead_tok_kind = tok_get(&ahead_tok, &ahead_token); + ahead_tok_kind = tok_get_normal_mode(&ahead_tok, + current_tok, + &ahead_token); if (ahead_tok_kind == NAME && ahead_tok.cur - ahead_tok.start == 3 @@ -2003,6 +2176,67 @@ tok_get(struct tok_state *tok, struct token *token) return MAKE_TOKEN(NUMBER); } + f_string_quote: + if (((tolower(*tok->start) == 'f' || tolower(*tok->start) == 'r') && (c == '\'' || c == '"'))) { + int quote = c; + int quote_size = 1; /* 1 or 3 */ + + /* Nodes of type STRING, especially multi line strings + must be handled differently in order to get both + the starting line number and the column offset right. + (cf. issue 16806) */ + tok->first_lineno = tok->lineno; + tok->multi_line_start = tok->line_start; + + /* Find the quote size and start of string */ + int after_quote = tok_nextc(tok); + if (after_quote == quote) { + int after_after_quote = tok_nextc(tok); + if (after_after_quote == quote) { + quote_size = 3; + } + else { + // TODO: Check this + tok_backup(tok, after_after_quote); + tok_backup(tok, after_quote); + } + } + if (after_quote != quote) { + tok_backup(tok, after_quote); + } + + + p_start = tok->start; + p_end = tok->cur; + tokenizer_mode *current_tok = TOK_NEXT_MODE(tok); + current_tok->kind = TOK_FSTRING_MODE; + current_tok->f_string_quote = quote; + current_tok->f_string_quote_size = quote_size; + current_tok->f_string_start = tok->start; + current_tok->f_string_multi_line_start = tok->line_start; + current_tok->last_expr_buffer = NULL; + current_tok->last_expr_size = 0; + current_tok->last_expr_end = -1; + + switch (*tok->start) { + case 'F': + case 'f': + current_tok->f_string_raw = tolower(*(tok->start + 1)) == 'r'; + break; + case 'R': + case 'r': + current_tok->f_string_raw = 1; + break; + default: + Py_UNREACHABLE(); + } + + current_tok->bracket_stack = 0; + current_tok->bracket_mark[0] = 0; + current_tok->bracket_mark_index = -1; + return MAKE_TOKEN(FSTRING_START); + } + letter_quote: /* String */ if (c == '\'' || c == '"') { @@ -2047,6 +2281,20 @@ tok_get(struct tok_state *tok, struct token *token) tok->line_start = tok->multi_line_start; int start = tok->lineno; tok->lineno = tok->first_lineno; + + if (tok->tok_mode_stack_index > 0) { + /* When we are in an f-string, before raising the + * unterminated string literal error, check whether + * does the initial quote matches with f-strings quotes + * and if it is, then this must be a missing '}' token + * so raise the proper error */ + tokenizer_mode *current_tok = TOK_GET_MODE(tok); + if (current_tok->f_string_quote == quote && + current_tok->f_string_quote_size == quote_size) { + return MAKE_TOKEN(syntaxerror(tok, "f-string: expecting '}'", start)); + } + } + if (quote_size == 3) { syntaxerror(tok, "unterminated triple-quoted string literal" " (detected at line %d)", start); @@ -2089,6 +2337,27 @@ tok_get(struct tok_state *tok, struct token *token) goto again; /* Read next line */ } + /* Punctuation character */ + int is_punctuation = (c == ':' || c == '}' || c == '!' || c == '{'); + if (is_punctuation && tok->tok_mode_stack_index > 0 && current_tok->bracket_mark_index >= 0) { + int mark = *TOK_GET_BRACKET_MARK(current_tok); + /* This code block gets executed before the bracket_stack is incremented + * by the `{` case, so for ensuring that we are on the 0th level, we need + * to adjust it manually */ + int cursor = current_tok->bracket_stack - (c != '{'); + + if (cursor == 0 && !update_fstring_expr(tok, c)) { + return MAKE_TOKEN(ENDMARKER); + } + + if (c == ':' && cursor == mark) { + current_tok->kind = TOK_FSTRING_MODE; + p_start = tok->start; + p_end = tok->cur; + return MAKE_TOKEN(_PyToken_OneChar(c)); + } + } + /* Check for two-character token */ { int c2 = tok_nextc(tok); @@ -2121,11 +2390,18 @@ tok_get(struct tok_state *tok, struct token *token) tok->parenlinenostack[tok->level] = tok->lineno; tok->parencolstack[tok->level] = (int)(tok->start - tok->line_start); tok->level++; + + if (tok->tok_mode_stack_index > 0) { + current_tok->bracket_stack++; + } break; case ')': case ']': case '}': if (!tok->level) { + if (tok->tok_mode_stack_index > 0 && !current_tok->bracket_stack && c == '}') { + return MAKE_TOKEN(syntaxerror(tok, "f-string: single '}' is not allowed")); + } return MAKE_TOKEN(syntaxerror(tok, "unmatched '%c'", c)); } tok->level--; @@ -2134,6 +2410,18 @@ tok_get(struct tok_state *tok, struct token *token) (opening == '[' && c == ']') || (opening == '{' && c == '}'))) { + /* If the opening bracket belongs to an f-string's expression + part (e.g. f"{)}") and the closing bracket is an arbitrary + nested expression, then instead of matching a different + syntactical construct with it; we'll throw an unmatched + parentheses error. */ + if (tok->tok_mode_stack_index > 0 && opening == '{') { + assert(current_tok->bracket_stack >= 0); + int previous_bracket = current_tok->bracket_stack - 1; + if (previous_bracket == *TOK_GET_BRACKET_MARK(current_tok)) { + return MAKE_TOKEN(syntaxerror(tok, "f-string: unmatched '%c'", c)); + } + } if (tok->parenlinenostack[tok->level] != tok->lineno) { return MAKE_TOKEN(syntaxerror(tok, "closing parenthesis '%c' does not match " @@ -2147,6 +2435,14 @@ tok_get(struct tok_state *tok, struct token *token) c, opening)); } } + + if (tok->tok_mode_stack_index > 0) { + current_tok->bracket_stack--; + if (c == '}' && current_tok->bracket_stack == *TOK_GET_BRACKET_MARK(current_tok)) { + current_tok->bracket_mark_index--; + current_tok->kind = TOK_FSTRING_MODE; + } + } break; } @@ -2162,6 +2458,187 @@ tok_get(struct tok_state *tok, struct token *token) return MAKE_TOKEN(_PyToken_OneChar(c)); } +static int +tok_get_fstring_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct token *token) +{ + const char *p_start = NULL; + const char *p_end = NULL; + int end_quote_size = 0; + int unicode_escape = 0; + + tok->start = tok->cur; + tok->first_lineno = tok->lineno; + tok->starting_col_offset = tok->col_offset; + + // If we start with a bracket, we defer to the normal mode as there is nothing for us to tokenize + // before it. + int start_char = tok_nextc(tok); + int peek1 = tok_nextc(tok); + tok_backup(tok, peek1); + tok_backup(tok, start_char); + + if ((start_char == '{' && peek1 != '{') || (start_char == '}' && peek1 != '}')) { + if (start_char == '{') { + current_tok->bracket_mark_index++; + if (current_tok->bracket_mark_index >= MAX_EXPR_NESTING) { + return MAKE_TOKEN(syntaxerror(tok, "f-string: expressions nested too deeply")); + } + *TOK_GET_BRACKET_MARK(current_tok) = current_tok->bracket_stack; + } + TOK_GET_MODE(tok)->kind = TOK_REGULAR_MODE; + return tok_get_normal_mode(tok, current_tok, token); + } + + // Check if we are at the end of the string + for (int i = 0; i < current_tok->f_string_quote_size; i++) { + int quote = tok_nextc(tok); + if (quote != current_tok->f_string_quote) { + tok_backup(tok, quote); + goto f_string_middle; + } + } + + if (current_tok->last_expr_buffer != NULL) { + PyMem_Free(current_tok->last_expr_buffer); + current_tok->last_expr_buffer = NULL; + current_tok->last_expr_size = 0; + current_tok->last_expr_end = -1; + } + + p_start = tok->start; + p_end = tok->cur; + tok->tok_mode_stack_index--; + return MAKE_TOKEN(FSTRING_END); + +f_string_middle: + + while (end_quote_size != current_tok->f_string_quote_size) { + int c = tok_nextc(tok); + if (c == EOF || (current_tok->f_string_quote_size == 1 && c == '\n')) { + assert(tok->multi_line_start != NULL); + // shift the tok_state's location into + // the start of string, and report the error + // from the initial quote character + tok->cur = (char *)current_tok->f_string_start; + tok->cur++; + tok->line_start = current_tok->f_string_multi_line_start; + int start = tok->lineno; + tok->lineno = tok->first_lineno; + + if (current_tok->f_string_quote_size == 3) { + return MAKE_TOKEN(syntaxerror(tok, + "unterminated triple-quoted f-string literal" + " (detected at line %d)", start)); + } + else { + return MAKE_TOKEN(syntaxerror(tok, + "unterminated f-string literal (detected at" + " line %d)", start)); + } + } + + if (c == current_tok->f_string_quote) { + end_quote_size += 1; + continue; + } else { + end_quote_size = 0; + } + + int in_format_spec = current_tok->last_expr_end != -1 && current_tok->bracket_mark_index >= 0; + if (c == '{') { + int peek = tok_nextc(tok); + if (peek != '{' || in_format_spec) { + tok_backup(tok, peek); + tok_backup(tok, c); + current_tok->bracket_mark_index++; + if (current_tok->bracket_mark_index >= MAX_EXPR_NESTING) { + return MAKE_TOKEN(syntaxerror(tok, "f-string: expressions nested too deeply")); + } + *TOK_GET_BRACKET_MARK(current_tok) = current_tok->bracket_stack; + TOK_GET_MODE(tok)->kind = TOK_REGULAR_MODE; + p_start = tok->start; + p_end = tok->cur; + } else { + p_start = tok->start; + p_end = tok->cur - 1; + } + return MAKE_TOKEN(FSTRING_MIDDLE); + } else if (c == '}') { + if (unicode_escape) { + p_start = tok->start; + p_end = tok->cur; + return MAKE_TOKEN(FSTRING_MIDDLE); + } + int peek = tok_nextc(tok); + + // The tokenizer can only be in the format spec if we have already completed the expression + // scanning (indicated by the end of the expression being set) and we are not at the top level + // of the bracket stack (-1 is the top level). Since format specifiers can't legally use double + // brackets, we can bypass it here. + if (peek == '}' && !in_format_spec) { + p_start = tok->start; + p_end = tok->cur - 1; + } else { + tok_backup(tok, peek); + tok_backup(tok, c); + TOK_GET_MODE(tok)->kind = TOK_REGULAR_MODE; + p_start = tok->start; + p_end = tok->cur; + } + return MAKE_TOKEN(FSTRING_MIDDLE); + } else if (c == '\\') { + int peek = tok_nextc(tok); + // Special case when the backslash is right before a curly + // brace. We have to restore and return the control back + // to the loop for the next iteration. + if (peek == '{' || peek == '}') { + if (!current_tok->f_string_raw) { + if (warn_invalid_escape_sequence(tok, peek)) { + return MAKE_TOKEN(ERRORTOKEN); + } + } + tok_backup(tok, peek); + continue; + } + + if (!current_tok->f_string_raw) { + if (peek == 'N') { + /* Handle named unicode escapes (\N{BULLET}) */ + peek = tok_nextc(tok); + if (peek == '{') { + unicode_escape = 1; + } else { + tok_backup(tok, peek); + } + } + } /* else { + skip the escaped character + }*/ + } + } + + // Backup the f-string quotes to emit a final FSTRING_MIDDLE and + // add the quotes to the FSTRING_END in the next tokenizer iteration. + for (int i = 0; i < current_tok->f_string_quote_size; i++) { + tok_backup(tok, current_tok->f_string_quote); + } + p_start = tok->start; + p_end = tok->cur; + return MAKE_TOKEN(FSTRING_MIDDLE); +} + + +static int +tok_get(struct tok_state *tok, struct token *token) +{ + tokenizer_mode *current_tok = TOK_GET_MODE(tok); + if (current_tok->kind == TOK_REGULAR_MODE) { + return tok_get_normal_mode(tok, current_tok, token); + } else { + return tok_get_fstring_mode(tok, current_tok, token); + } +} + int _PyTokenizer_Get(struct tok_state *tok, struct token *token) { diff --git a/Parser/tokenizer.h b/Parser/tokenizer.h index 16a94d5f51d664..f67e0cd1ac2f4a 100644 --- a/Parser/tokenizer.h +++ b/Parser/tokenizer.h @@ -33,6 +33,31 @@ struct token { const char *start, *end; }; +enum tokenizer_mode_kind_t { + TOK_REGULAR_MODE, + TOK_FSTRING_MODE, +}; + +#define MAX_EXPR_NESTING 3 + +typedef struct _tokenizer_mode { + enum tokenizer_mode_kind_t kind; + + int bracket_stack; + int bracket_mark[MAX_EXPR_NESTING]; + int bracket_mark_index; + + char f_string_quote; + int f_string_quote_size; + int f_string_raw; + const char* f_string_start; + const char* f_string_multi_line_start; + + Py_ssize_t last_expr_size; + Py_ssize_t last_expr_end; + char* last_expr_buffer; +} tokenizer_mode; + /* Tokenizer state */ struct tok_state { /* Input state; buf <= cur <= inp <= end */ @@ -93,6 +118,10 @@ struct tok_state { /* How to proceed when asked for a new token in interactive mode */ enum interactive_underflow_t interactive_underflow; int report_warnings; + // TODO: Factor this into its own thing + tokenizer_mode tok_mode_stack[MAXLEVEL]; + int tok_mode_stack_index; + int tok_report_warnings; #ifdef Py_DEBUG int debug; #endif diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h index 4ac472a88261e1..cd9d1032629f49 100644 --- a/Programs/test_frozenmain.h +++ b/Programs/test_frozenmain.h @@ -27,12 +27,12 @@ unsigned char M_test_frozenmain[] = { 218,3,107,101,121,169,0,243,0,0,0,0,250,18,116,101, 115,116,95,102,114,111,122,101,110,109,97,105,110,46,112,121, 250,8,60,109,111,100,117,108,101,62,114,18,0,0,0,1, - 0,0,0,115,100,0,0,0,240,3,1,1,1,243,8,0, + 0,0,0,115,102,0,0,0,240,3,1,1,1,243,8,0, 1,11,219,0,24,225,0,5,208,6,26,212,0,27,217,0, 5,128,106,144,35,151,40,145,40,212,0,27,216,9,38,208, 9,26,215,9,38,209,9,38,211,9,40,168,24,209,9,50, 128,6,240,2,6,12,2,242,0,7,1,42,128,67,241,14, - 0,5,10,208,10,40,144,67,209,10,40,152,54,160,35,153, - 59,209,10,40,213,4,41,241,15,7,1,42,114,16,0,0, - 0, + 0,5,10,136,71,144,67,144,53,152,2,152,54,160,35,153, + 59,152,45,208,10,40,213,4,41,241,15,7,1,42,114,16, + 0,0,0, }; diff --git a/Python/Python-tokenize.c b/Python/Python-tokenize.c index 8daa9877254e2e..416dc5971bca3d 100644 --- a/Python/Python-tokenize.c +++ b/Python/Python-tokenize.c @@ -86,8 +86,8 @@ tokenizeriter_next(tokenizeriterobject *it) Py_DECREF(str); return NULL; } - const char *line_start = type == STRING ? it->tok->multi_line_start : it->tok->line_start; - int lineno = type == STRING ? it->tok->first_lineno : it->tok->lineno; + const char *line_start = ISSTRINGLIT(type) ? it->tok->multi_line_start : it->tok->line_start; + int lineno = ISSTRINGLIT(type) ? it->tok->first_lineno : it->tok->lineno; int end_lineno = it->tok->lineno; int col_offset = -1; int end_col_offset = -1; diff --git a/Tools/build/generate_token.py b/Tools/build/generate_token.py index fc12835b7762ad..3bd307c1733867 100755 --- a/Tools/build/generate_token.py +++ b/Tools/build/generate_token.py @@ -80,6 +80,8 @@ def update_file(file, content): (x) == NEWLINE || \\ (x) == INDENT || \\ (x) == DEDENT) +#define ISSTRINGLIT(x) ((x) == STRING || \\ + (x) == FSTRING_MIDDLE) // Symbols exported for test_peg_generator diff --git a/Tools/peg_generator/pegen/c_generator.py b/Tools/peg_generator/pegen/c_generator.py index e72ce7afdc4796..f57b6275f671d3 100644 --- a/Tools/peg_generator/pegen/c_generator.py +++ b/Tools/peg_generator/pegen/c_generator.py @@ -68,6 +68,7 @@ class NodeTypes(Enum): KEYWORD = 4 SOFT_KEYWORD = 5 CUT_OPERATOR = 6 + F_STRING_CHUNK = 7 BASE_NODETYPES = { From 5f7d68e48de19c5c3a241d7126fc2af227c2f74a Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Wed, 19 Apr 2023 11:53:34 -0600 Subject: [PATCH 21/24] gh-102856: Skip test_mismatched_parens in WASI builds (#103633) --- Lib/test/test_fstring.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/test/test_fstring.py b/Lib/test/test_fstring.py index f571233da07b78..0e71de85f16b9c 100644 --- a/Lib/test/test_fstring.py +++ b/Lib/test/test_fstring.py @@ -13,6 +13,7 @@ import types import decimal import unittest +from test import support from test.support.os_helper import temp_cwd from test.support.script_helper import assert_python_failure @@ -536,6 +537,7 @@ def test_unterminated_string(self): r"""f'{("x}'""", ]) + @unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI") def test_mismatched_parens(self): self.assertAllRaise(SyntaxError, r"closing parenthesis '\}' " r"does not match opening parenthesis '\('", From d4aa8578b18d12380c841de96e8f80cac52bf61a Mon Sep 17 00:00:00 2001 From: Pablo Galindo Salgado Date: Wed, 19 Apr 2023 14:51:31 -0600 Subject: [PATCH 22/24] gh-102856: Clean some of the PEP 701 tokenizer implementation (#103634) --- Parser/tokenizer.c | 136 ++++++++++++++++++++++----------------------- Parser/tokenizer.h | 5 +- 2 files changed, 67 insertions(+), 74 deletions(-) diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 1dfd2d6e5e1717..f992e55dcac488 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -11,11 +11,6 @@ #include "tokenizer.h" #include "errcode.h" -#include "unicodeobject.h" -#include "bytesobject.h" -#include "fileobject.h" -#include "abstract.h" - /* Alternate tab spacing */ #define ALTTABSIZE 1 @@ -43,6 +38,8 @@ tok->lineno++; \ tok->col_offset = 0; +#define INSIDE_FSTRING(tok) (tok->tok_mode_stack_index > 0) +#define INSIDE_FSTRING_EXPR(tok) (tok->curly_bracket_expr_start_depth >= 0) #ifdef Py_DEBUG static inline tokenizer_mode* TOK_GET_MODE(struct tok_state* tok) { assert(tok->tok_mode_stack_index >= 0); @@ -54,15 +51,9 @@ static inline tokenizer_mode* TOK_NEXT_MODE(struct tok_state* tok) { assert(tok->tok_mode_stack_index < MAXLEVEL); return &(tok->tok_mode_stack[++tok->tok_mode_stack_index]); } -static inline int *TOK_GET_BRACKET_MARK(tokenizer_mode* mode) { - assert(mode->bracket_mark_index >= 0); - assert(mode->bracket_mark_index < MAX_EXPR_NESTING); - return &(mode->bracket_mark[mode->bracket_mark_index]); -} #else #define TOK_GET_MODE(tok) (&(tok->tok_mode_stack[tok->tok_mode_stack_index])) #define TOK_NEXT_MODE(tok) (&(tok->tok_mode_stack[++tok->tok_mode_stack_index])) -#define TOK_GET_BRACKET_MARK(mode) (&(mode->bracket_mark[mode->bracket_mark_index])) #endif /* Forward */ @@ -398,20 +389,7 @@ update_fstring_expr(struct tok_state *tok, char cur) tokenizer_mode *tok_mode = TOK_GET_MODE(tok); switch (cur) { - case '{': - if (tok_mode->last_expr_buffer != NULL) { - PyMem_Free(tok_mode->last_expr_buffer); - } - tok_mode->last_expr_buffer = PyMem_Malloc(size); - if (tok_mode->last_expr_buffer == NULL) { - tok->done = E_NOMEM; - return 0; - } - tok_mode->last_expr_size = size; - tok_mode->last_expr_end = -1; - strncpy(tok_mode->last_expr_buffer, tok->cur, size); - break; - case 0: + case 0: if (!tok_mode->last_expr_buffer || tok_mode->last_expr_end >= 0) { return 1; } @@ -421,13 +399,24 @@ update_fstring_expr(struct tok_state *tok, char cur) ); if (new_buffer == NULL) { PyMem_Free(tok_mode->last_expr_buffer); - tok->done = E_NOMEM; - return 0; + goto error; } tok_mode->last_expr_buffer = new_buffer; strncpy(tok_mode->last_expr_buffer + tok_mode->last_expr_size, tok->cur, size); tok_mode->last_expr_size += size; break; + case '{': + if (tok_mode->last_expr_buffer != NULL) { + PyMem_Free(tok_mode->last_expr_buffer); + } + tok_mode->last_expr_buffer = PyMem_Malloc(size); + if (tok_mode->last_expr_buffer == NULL) { + goto error; + } + tok_mode->last_expr_size = size; + tok_mode->last_expr_end = -1; + strncpy(tok_mode->last_expr_buffer, tok->cur, size); + break; case '}': case '!': case ':': @@ -435,9 +424,13 @@ update_fstring_expr(struct tok_state *tok, char cur) tok_mode->last_expr_end = strlen(tok->start); } break; + default: + Py_UNREACHABLE(); } - return 1; +error: + tok->done = E_NOMEM; + return 0; } static void @@ -1766,7 +1759,7 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t /* Skip comment, unless it's a type comment */ if (c == '#') { - if (tok->tok_mode_stack_index > 0) { + if (INSIDE_FSTRING(tok)) { return MAKE_TOKEN(syntaxerror(tok, "f-string expression part cannot include '#'")); } @@ -2208,32 +2201,31 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t p_start = tok->start; p_end = tok->cur; - tokenizer_mode *current_tok = TOK_NEXT_MODE(tok); - current_tok->kind = TOK_FSTRING_MODE; - current_tok->f_string_quote = quote; - current_tok->f_string_quote_size = quote_size; - current_tok->f_string_start = tok->start; - current_tok->f_string_multi_line_start = tok->line_start; - current_tok->last_expr_buffer = NULL; - current_tok->last_expr_size = 0; - current_tok->last_expr_end = -1; + tokenizer_mode *the_current_tok = TOK_NEXT_MODE(tok); + the_current_tok->kind = TOK_FSTRING_MODE; + the_current_tok->f_string_quote = quote; + the_current_tok->f_string_quote_size = quote_size; + the_current_tok->f_string_start = tok->start; + the_current_tok->f_string_multi_line_start = tok->line_start; + the_current_tok->last_expr_buffer = NULL; + the_current_tok->last_expr_size = 0; + the_current_tok->last_expr_end = -1; switch (*tok->start) { case 'F': case 'f': - current_tok->f_string_raw = tolower(*(tok->start + 1)) == 'r'; + the_current_tok->f_string_raw = tolower(*(tok->start + 1)) == 'r'; break; case 'R': case 'r': - current_tok->f_string_raw = 1; + the_current_tok->f_string_raw = 1; break; default: Py_UNREACHABLE(); } - current_tok->bracket_stack = 0; - current_tok->bracket_mark[0] = 0; - current_tok->bracket_mark_index = -1; + the_current_tok->curly_bracket_depth = 0; + the_current_tok->curly_bracket_expr_start_depth = -1; return MAKE_TOKEN(FSTRING_START); } @@ -2282,15 +2274,15 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t int start = tok->lineno; tok->lineno = tok->first_lineno; - if (tok->tok_mode_stack_index > 0) { + if (INSIDE_FSTRING(tok)) { /* When we are in an f-string, before raising the * unterminated string literal error, check whether * does the initial quote matches with f-strings quotes * and if it is, then this must be a missing '}' token * so raise the proper error */ - tokenizer_mode *current_tok = TOK_GET_MODE(tok); - if (current_tok->f_string_quote == quote && - current_tok->f_string_quote_size == quote_size) { + tokenizer_mode *the_current_tok = TOK_GET_MODE(tok); + if (the_current_tok->f_string_quote == quote && + the_current_tok->f_string_quote_size == quote_size) { return MAKE_TOKEN(syntaxerror(tok, "f-string: expecting '}'", start)); } } @@ -2339,18 +2331,17 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t /* Punctuation character */ int is_punctuation = (c == ':' || c == '}' || c == '!' || c == '{'); - if (is_punctuation && tok->tok_mode_stack_index > 0 && current_tok->bracket_mark_index >= 0) { - int mark = *TOK_GET_BRACKET_MARK(current_tok); - /* This code block gets executed before the bracket_stack is incremented + if (is_punctuation && INSIDE_FSTRING(tok) && INSIDE_FSTRING_EXPR(current_tok)) { + /* This code block gets executed before the curly_bracket_depth is incremented * by the `{` case, so for ensuring that we are on the 0th level, we need * to adjust it manually */ - int cursor = current_tok->bracket_stack - (c != '{'); + int cursor = current_tok->curly_bracket_depth - (c != '{'); if (cursor == 0 && !update_fstring_expr(tok, c)) { return MAKE_TOKEN(ENDMARKER); } - if (c == ':' && cursor == mark) { + if (c == ':' && cursor == current_tok->curly_bracket_expr_start_depth) { current_tok->kind = TOK_FSTRING_MODE; p_start = tok->start; p_end = tok->cur; @@ -2390,16 +2381,15 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t tok->parenlinenostack[tok->level] = tok->lineno; tok->parencolstack[tok->level] = (int)(tok->start - tok->line_start); tok->level++; - - if (tok->tok_mode_stack_index > 0) { - current_tok->bracket_stack++; + if (INSIDE_FSTRING(tok)) { + current_tok->curly_bracket_depth++; } break; case ')': case ']': case '}': if (!tok->level) { - if (tok->tok_mode_stack_index > 0 && !current_tok->bracket_stack && c == '}') { + if (INSIDE_FSTRING(tok) && !current_tok->curly_bracket_depth && c == '}') { return MAKE_TOKEN(syntaxerror(tok, "f-string: single '}' is not allowed")); } return MAKE_TOKEN(syntaxerror(tok, "unmatched '%c'", c)); @@ -2415,10 +2405,10 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t nested expression, then instead of matching a different syntactical construct with it; we'll throw an unmatched parentheses error. */ - if (tok->tok_mode_stack_index > 0 && opening == '{') { - assert(current_tok->bracket_stack >= 0); - int previous_bracket = current_tok->bracket_stack - 1; - if (previous_bracket == *TOK_GET_BRACKET_MARK(current_tok)) { + if (INSIDE_FSTRING(tok) && opening == '{') { + assert(current_tok->curly_bracket_depth >= 0); + int previous_bracket = current_tok->curly_bracket_depth - 1; + if (previous_bracket == current_tok->curly_bracket_expr_start_depth) { return MAKE_TOKEN(syntaxerror(tok, "f-string: unmatched '%c'", c)); } } @@ -2436,14 +2426,16 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct t } } - if (tok->tok_mode_stack_index > 0) { - current_tok->bracket_stack--; - if (c == '}' && current_tok->bracket_stack == *TOK_GET_BRACKET_MARK(current_tok)) { - current_tok->bracket_mark_index--; + if (INSIDE_FSTRING(tok)) { + current_tok->curly_bracket_depth--; + if (c == '}' && current_tok->curly_bracket_depth == current_tok->curly_bracket_expr_start_depth) { + current_tok->curly_bracket_expr_start_depth--; current_tok->kind = TOK_FSTRING_MODE; } } break; + default: + break; } if (!Py_UNICODE_ISPRINTABLE(c)) { @@ -2479,11 +2471,10 @@ tok_get_fstring_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct if ((start_char == '{' && peek1 != '{') || (start_char == '}' && peek1 != '}')) { if (start_char == '{') { - current_tok->bracket_mark_index++; - if (current_tok->bracket_mark_index >= MAX_EXPR_NESTING) { + current_tok->curly_bracket_expr_start_depth++; + if (current_tok->curly_bracket_expr_start_depth >= MAX_EXPR_NESTING) { return MAKE_TOKEN(syntaxerror(tok, "f-string: expressions nested too deeply")); } - *TOK_GET_BRACKET_MARK(current_tok) = current_tok->bracket_stack; } TOK_GET_MODE(tok)->kind = TOK_REGULAR_MODE; return tok_get_normal_mode(tok, current_tok, token); @@ -2544,17 +2535,20 @@ tok_get_fstring_mode(struct tok_state *tok, tokenizer_mode* current_tok, struct end_quote_size = 0; } - int in_format_spec = current_tok->last_expr_end != -1 && current_tok->bracket_mark_index >= 0; + int in_format_spec = ( + current_tok->last_expr_end != -1 + && + INSIDE_FSTRING_EXPR(current_tok) + ); if (c == '{') { int peek = tok_nextc(tok); if (peek != '{' || in_format_spec) { tok_backup(tok, peek); tok_backup(tok, c); - current_tok->bracket_mark_index++; - if (current_tok->bracket_mark_index >= MAX_EXPR_NESTING) { + current_tok->curly_bracket_expr_start_depth++; + if (current_tok->curly_bracket_expr_start_depth >= MAX_EXPR_NESTING) { return MAKE_TOKEN(syntaxerror(tok, "f-string: expressions nested too deeply")); } - *TOK_GET_BRACKET_MARK(current_tok) = current_tok->bracket_stack; TOK_GET_MODE(tok)->kind = TOK_REGULAR_MODE; p_start = tok->start; p_end = tok->cur; diff --git a/Parser/tokenizer.h b/Parser/tokenizer.h index f67e0cd1ac2f4a..b75e4e8293d3d6 100644 --- a/Parser/tokenizer.h +++ b/Parser/tokenizer.h @@ -43,9 +43,8 @@ enum tokenizer_mode_kind_t { typedef struct _tokenizer_mode { enum tokenizer_mode_kind_t kind; - int bracket_stack; - int bracket_mark[MAX_EXPR_NESTING]; - int bracket_mark_index; + int curly_bracket_depth; + int curly_bracket_expr_start_depth; char f_string_quote; int f_string_quote_size; From 2b1260c55763a952c57b92fe0f274b6ee79efd05 Mon Sep 17 00:00:00 2001 From: Alexander Belopolsky Date: Wed, 19 Apr 2023 17:02:29 -0400 Subject: [PATCH 23/24] gh-83861: Fix datetime.astimezone() method (GH-101545) --- Lib/datetime.py | 5 +++++ Lib/test/datetimetester.py | 4 ++++ ...23-02-06-16-45-18.gh-issue-83861.mMbIU3.rst | 4 ++++ Modules/_datetimemodule.c | 18 ++++++++++++++++-- 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2023-02-06-16-45-18.gh-issue-83861.mMbIU3.rst diff --git a/Lib/datetime.py b/Lib/datetime.py index 637144637485bc..09a2d2d5381c34 100644 --- a/Lib/datetime.py +++ b/Lib/datetime.py @@ -1965,6 +1965,11 @@ def replace(self, year=None, month=None, day=None, hour=None, def _local_timezone(self): if self.tzinfo is None: ts = self._mktime() + # Detect gap + ts2 = self.replace(fold=1-self.fold)._mktime() + if ts2 != ts: # This happens in a gap or a fold + if (ts2 > ts) == self.fold: + ts = ts2 else: ts = (self - _EPOCH) // timedelta(seconds=1) localtm = _time.localtime(ts) diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 570f803918c1ef..477f16f1841f62 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -6212,6 +6212,10 @@ def test_system_transitions(self): ts1 = dt.replace(fold=1).timestamp() self.assertEqual(ts0, s0 + ss / 2) self.assertEqual(ts1, s0 - ss / 2) + # gh-83861 + utc0 = dt.astimezone(timezone.utc) + utc1 = dt.replace(fold=1).astimezone(timezone.utc) + self.assertEqual(utc0, utc1 + timedelta(0, ss)) finally: if TZ is None: del os.environ['TZ'] diff --git a/Misc/NEWS.d/next/Library/2023-02-06-16-45-18.gh-issue-83861.mMbIU3.rst b/Misc/NEWS.d/next/Library/2023-02-06-16-45-18.gh-issue-83861.mMbIU3.rst new file mode 100644 index 00000000000000..e85e7a4ff2e73a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-02-06-16-45-18.gh-issue-83861.mMbIU3.rst @@ -0,0 +1,4 @@ +Fix datetime.astimezone method return value when invoked on a naive datetime +instance that represents local time falling in a timezone transition gap. +PEP 495 requires that instances with fold=1 produce earlier times than those +with fold=0 in this case. diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index eda8c5610ba659..f317dc14e15bf1 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -6153,17 +6153,31 @@ local_to_seconds(int year, int month, int day, static PyObject * local_timezone_from_local(PyDateTime_DateTime *local_dt) { - long long seconds; + long long seconds, seconds2; time_t timestamp; + int fold = DATE_GET_FOLD(local_dt); seconds = local_to_seconds(GET_YEAR(local_dt), GET_MONTH(local_dt), GET_DAY(local_dt), DATE_GET_HOUR(local_dt), DATE_GET_MINUTE(local_dt), DATE_GET_SECOND(local_dt), - DATE_GET_FOLD(local_dt)); + fold); if (seconds == -1) return NULL; + seconds2 = local_to_seconds(GET_YEAR(local_dt), + GET_MONTH(local_dt), + GET_DAY(local_dt), + DATE_GET_HOUR(local_dt), + DATE_GET_MINUTE(local_dt), + DATE_GET_SECOND(local_dt), + !fold); + if (seconds2 == -1) + return NULL; + /* Detect gap */ + if (seconds2 != seconds && (seconds2 > seconds) == fold) + seconds = seconds2; + /* XXX: add bounds check */ timestamp = seconds - epoch; return local_timezone_from_timestamp(timestamp); From 6be7aee18c5b8e639103df951d0d277f4b46f902 Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Wed, 19 Apr 2023 16:09:35 -0600 Subject: [PATCH 24/24] gh-98040: Move the Single-Phase Init Tests Out of test_imp (gh-102561) I recently added some tests to test_imp, but @warsaw is removing that file in gh-98573. The tests are worth keeping so here I'm moving them to test_import. --- Lib/test/test_imp.py | 840 ------------------------------ Lib/test/test_import/__init__.py | 868 ++++++++++++++++++++++++++++++- 2 files changed, 865 insertions(+), 843 deletions(-) diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py index 03e3adba221e57..80abc720c3251a 100644 --- a/Lib/test/test_imp.py +++ b/Lib/test/test_imp.py @@ -1,5 +1,4 @@ import gc -import json import importlib import importlib.util import os @@ -11,28 +10,15 @@ from test.support import os_helper from test.support import script_helper from test.support import warnings_helper -import textwrap -import types import unittest import warnings imp = warnings_helper.import_deprecated('imp') import _imp -import _testinternalcapi -try: - import _xxsubinterpreters as _interpreters -except ModuleNotFoundError: - _interpreters = None OS_PATH_NAME = os.path.__name__ -def requires_subinterpreters(meth): - """Decorator to skip a test if subinterpreters are not supported.""" - return unittest.skipIf(_interpreters is None, - 'subinterpreters required')(meth) - - def requires_load_dynamic(meth): """Decorator to skip a test if not running under CPython or lacking imp.load_dynamic().""" @@ -41,169 +27,6 @@ def requires_load_dynamic(meth): 'imp.load_dynamic() required')(meth) -class ModuleSnapshot(types.SimpleNamespace): - """A representation of a module for testing. - - Fields: - - * id - the module's object ID - * module - the actual module or an adequate substitute - * __file__ - * __spec__ - * name - * origin - * ns - a copy (dict) of the module's __dict__ (or None) - * ns_id - the object ID of the module's __dict__ - * cached - the sys.modules[mod.__spec__.name] entry (or None) - * cached_id - the object ID of the sys.modules entry (or None) - - In cases where the value is not available (e.g. due to serialization), - the value will be None. - """ - _fields = tuple('id module ns ns_id cached cached_id'.split()) - - @classmethod - def from_module(cls, mod): - name = mod.__spec__.name - cached = sys.modules.get(name) - return cls( - id=id(mod), - module=mod, - ns=types.SimpleNamespace(**mod.__dict__), - ns_id=id(mod.__dict__), - cached=cached, - cached_id=id(cached), - ) - - SCRIPT = textwrap.dedent(''' - {imports} - - name = {name!r} - - {prescript} - - mod = {name} - - {body} - - {postscript} - ''') - IMPORTS = textwrap.dedent(''' - import sys - ''').strip() - SCRIPT_BODY = textwrap.dedent(''' - # Capture the snapshot data. - cached = sys.modules.get(name) - snapshot = dict( - id=id(mod), - module=dict( - __file__=mod.__file__, - __spec__=dict( - name=mod.__spec__.name, - origin=mod.__spec__.origin, - ), - ), - ns=None, - ns_id=id(mod.__dict__), - cached=None, - cached_id=id(cached) if cached else None, - ) - ''').strip() - CLEANUP_SCRIPT = textwrap.dedent(''' - # Clean up the module. - sys.modules.pop(name, None) - ''').strip() - - @classmethod - def build_script(cls, name, *, - prescript=None, - import_first=False, - postscript=None, - postcleanup=False, - ): - if postcleanup is True: - postcleanup = cls.CLEANUP_SCRIPT - elif isinstance(postcleanup, str): - postcleanup = textwrap.dedent(postcleanup).strip() - postcleanup = cls.CLEANUP_SCRIPT + os.linesep + postcleanup - else: - postcleanup = '' - prescript = textwrap.dedent(prescript).strip() if prescript else '' - postscript = textwrap.dedent(postscript).strip() if postscript else '' - - if postcleanup: - if postscript: - postscript = postscript + os.linesep * 2 + postcleanup - else: - postscript = postcleanup - - if import_first: - prescript += textwrap.dedent(f''' - - # Now import the module. - assert name not in sys.modules - import {name}''') - - return cls.SCRIPT.format( - imports=cls.IMPORTS.strip(), - name=name, - prescript=prescript.strip(), - body=cls.SCRIPT_BODY.strip(), - postscript=postscript, - ) - - @classmethod - def parse(cls, text): - raw = json.loads(text) - mod = raw['module'] - mod['__spec__'] = types.SimpleNamespace(**mod['__spec__']) - raw['module'] = types.SimpleNamespace(**mod) - return cls(**raw) - - @classmethod - def from_subinterp(cls, name, interpid=None, *, pipe=None, **script_kwds): - if pipe is not None: - return cls._from_subinterp(name, interpid, pipe, script_kwds) - pipe = os.pipe() - try: - return cls._from_subinterp(name, interpid, pipe, script_kwds) - finally: - r, w = pipe - os.close(r) - os.close(w) - - @classmethod - def _from_subinterp(cls, name, interpid, pipe, script_kwargs): - r, w = pipe - - # Build the script. - postscript = textwrap.dedent(f''' - # Send the result over the pipe. - import json - import os - os.write({w}, json.dumps(snapshot).encode()) - - ''') - _postscript = script_kwargs.get('postscript') - if _postscript: - _postscript = textwrap.dedent(_postscript).lstrip() - postscript += _postscript - script_kwargs['postscript'] = postscript.strip() - script = cls.build_script(name, **script_kwargs) - - # Run the script. - if interpid is None: - ret = support.run_in_subinterp(script) - if ret != 0: - raise AssertionError(f'{ret} != 0') - else: - _interpreters.run_string(interpid, script) - - # Parse the results. - text = os.read(r, 1000) - return cls.parse(text.decode()) - - class LockTests(unittest.TestCase): """Very basic test of import lock functions.""" @@ -620,669 +443,6 @@ def check_get_builtins(): check_get_builtins() -class TestSinglePhaseSnapshot(ModuleSnapshot): - - @classmethod - def from_module(cls, mod): - self = super().from_module(mod) - self.summed = mod.sum(1, 2) - self.lookedup = mod.look_up_self() - self.lookedup_id = id(self.lookedup) - self.state_initialized = mod.state_initialized() - if hasattr(mod, 'initialized_count'): - self.init_count = mod.initialized_count() - return self - - SCRIPT_BODY = ModuleSnapshot.SCRIPT_BODY + textwrap.dedent(f''' - snapshot['module'].update(dict( - int_const=mod.int_const, - str_const=mod.str_const, - _module_initialized=mod._module_initialized, - )) - snapshot.update(dict( - summed=mod.sum(1, 2), - lookedup_id=id(mod.look_up_self()), - state_initialized=mod.state_initialized(), - init_count=mod.initialized_count(), - has_spam=hasattr(mod, 'spam'), - spam=getattr(mod, 'spam', None), - )) - ''').rstrip() - - @classmethod - def parse(cls, text): - self = super().parse(text) - if not self.has_spam: - del self.spam - del self.has_spam - return self - - -@requires_load_dynamic -class SinglephaseInitTests(unittest.TestCase): - - NAME = '_testsinglephase' - - @classmethod - def setUpClass(cls): - if '-R' in sys.argv or '--huntrleaks' in sys.argv: - # https://github.com/python/cpython/issues/102251 - raise unittest.SkipTest('unresolved refleaks (see gh-102251)') - fileobj, filename, _ = imp.find_module(cls.NAME) - fileobj.close() - cls.FILE = filename - - # Start fresh. - cls.clean_up() - - def tearDown(self): - # Clean up the module. - self.clean_up() - - @classmethod - def clean_up(cls): - name = cls.NAME - filename = cls.FILE - if name in sys.modules: - if hasattr(sys.modules[name], '_clear_globals'): - assert sys.modules[name].__file__ == filename - sys.modules[name]._clear_globals() - del sys.modules[name] - # Clear all internally cached data for the extension. - _testinternalcapi.clear_extension(name, filename) - - ######################### - # helpers - - def add_module_cleanup(self, name): - def clean_up(): - # Clear all internally cached data for the extension. - _testinternalcapi.clear_extension(name, self.FILE) - self.addCleanup(clean_up) - - def load(self, name): - try: - already_loaded = self.already_loaded - except AttributeError: - already_loaded = self.already_loaded = {} - assert name not in already_loaded - mod = imp.load_dynamic(name, self.FILE) - self.assertNotIn(mod, already_loaded.values()) - already_loaded[name] = mod - return types.SimpleNamespace( - name=name, - module=mod, - snapshot=TestSinglePhaseSnapshot.from_module(mod), - ) - - def re_load(self, name, mod): - assert sys.modules[name] is mod - assert mod.__dict__ == mod.__dict__ - reloaded = imp.load_dynamic(name, self.FILE) - return types.SimpleNamespace( - name=name, - module=reloaded, - snapshot=TestSinglePhaseSnapshot.from_module(reloaded), - ) - - # subinterpreters - - def add_subinterpreter(self): - interpid = _interpreters.create(isolated=False) - _interpreters.run_string(interpid, textwrap.dedent(''' - import sys - import _testinternalcapi - ''')) - def clean_up(): - _interpreters.run_string(interpid, textwrap.dedent(f''' - name = {self.NAME!r} - if name in sys.modules: - sys.modules[name]._clear_globals() - _testinternalcapi.clear_extension(name, {self.FILE!r}) - ''')) - _interpreters.destroy(interpid) - self.addCleanup(clean_up) - return interpid - - def import_in_subinterp(self, interpid=None, *, - postscript=None, - postcleanup=False, - ): - name = self.NAME - - if postcleanup: - import_ = 'import _testinternalcapi' if interpid is None else '' - postcleanup = f''' - {import_} - mod._clear_globals() - _testinternalcapi.clear_extension(name, {self.FILE!r}) - ''' - - try: - pipe = self._pipe - except AttributeError: - r, w = pipe = self._pipe = os.pipe() - self.addCleanup(os.close, r) - self.addCleanup(os.close, w) - - snapshot = TestSinglePhaseSnapshot.from_subinterp( - name, - interpid, - pipe=pipe, - import_first=True, - postscript=postscript, - postcleanup=postcleanup, - ) - - return types.SimpleNamespace( - name=name, - module=None, - snapshot=snapshot, - ) - - # checks - - def check_common(self, loaded): - isolated = False - - mod = loaded.module - if not mod: - # It came from a subinterpreter. - isolated = True - mod = loaded.snapshot.module - # mod.__name__ might not match, but the spec will. - self.assertEqual(mod.__spec__.name, loaded.name) - self.assertEqual(mod.__file__, self.FILE) - self.assertEqual(mod.__spec__.origin, self.FILE) - if not isolated: - self.assertTrue(issubclass(mod.error, Exception)) - self.assertEqual(mod.int_const, 1969) - self.assertEqual(mod.str_const, 'something different') - self.assertIsInstance(mod._module_initialized, float) - self.assertGreater(mod._module_initialized, 0) - - snap = loaded.snapshot - self.assertEqual(snap.summed, 3) - if snap.state_initialized is not None: - self.assertIsInstance(snap.state_initialized, float) - self.assertGreater(snap.state_initialized, 0) - if isolated: - # The "looked up" module is interpreter-specific - # (interp->imports.modules_by_index was set for the module). - self.assertEqual(snap.lookedup_id, snap.id) - self.assertEqual(snap.cached_id, snap.id) - with self.assertRaises(AttributeError): - snap.spam - else: - self.assertIs(snap.lookedup, mod) - self.assertIs(snap.cached, mod) - - def check_direct(self, loaded): - # The module has its own PyModuleDef, with a matching name. - self.assertEqual(loaded.module.__name__, loaded.name) - self.assertIs(loaded.snapshot.lookedup, loaded.module) - - def check_indirect(self, loaded, orig): - # The module re-uses another's PyModuleDef, with a different name. - assert orig is not loaded.module - assert orig.__name__ != loaded.name - self.assertNotEqual(loaded.module.__name__, loaded.name) - self.assertIs(loaded.snapshot.lookedup, loaded.module) - - def check_basic(self, loaded, expected_init_count): - # m_size == -1 - # The module loads fresh the first time and copies m_copy after. - snap = loaded.snapshot - self.assertIsNot(snap.state_initialized, None) - self.assertIsInstance(snap.init_count, int) - self.assertGreater(snap.init_count, 0) - self.assertEqual(snap.init_count, expected_init_count) - - def check_with_reinit(self, loaded): - # m_size >= 0 - # The module loads fresh every time. - pass - - def check_fresh(self, loaded): - """ - The module had not been loaded before (at least since fully reset). - """ - snap = loaded.snapshot - # The module's init func was run. - # A copy of the module's __dict__ was stored in def->m_base.m_copy. - # The previous m_copy was deleted first. - # _PyRuntime.imports.extensions was set. - self.assertEqual(snap.init_count, 1) - # The global state was initialized. - # The module attrs were initialized from that state. - self.assertEqual(snap.module._module_initialized, - snap.state_initialized) - - def check_semi_fresh(self, loaded, base, prev): - """ - The module had been loaded before and then reset - (but the module global state wasn't). - """ - snap = loaded.snapshot - # The module's init func was run again. - # A copy of the module's __dict__ was stored in def->m_base.m_copy. - # The previous m_copy was deleted first. - # The module globals did not get reset. - self.assertNotEqual(snap.id, base.snapshot.id) - self.assertNotEqual(snap.id, prev.snapshot.id) - self.assertEqual(snap.init_count, prev.snapshot.init_count + 1) - # The global state was updated. - # The module attrs were initialized from that state. - self.assertEqual(snap.module._module_initialized, - snap.state_initialized) - self.assertNotEqual(snap.state_initialized, - base.snapshot.state_initialized) - self.assertNotEqual(snap.state_initialized, - prev.snapshot.state_initialized) - - def check_copied(self, loaded, base): - """ - The module had been loaded before and never reset. - """ - snap = loaded.snapshot - # The module's init func was not run again. - # The interpreter copied m_copy, as set by the other interpreter, - # with objects owned by the other interpreter. - # The module globals did not get reset. - self.assertNotEqual(snap.id, base.snapshot.id) - self.assertEqual(snap.init_count, base.snapshot.init_count) - # The global state was not updated since the init func did not run. - # The module attrs were not directly initialized from that state. - # The state and module attrs still match the previous loading. - self.assertEqual(snap.module._module_initialized, - snap.state_initialized) - self.assertEqual(snap.state_initialized, - base.snapshot.state_initialized) - - ######################### - # the tests - - def test_cleared_globals(self): - loaded = self.load(self.NAME) - _testsinglephase = loaded.module - init_before = _testsinglephase.state_initialized() - - _testsinglephase._clear_globals() - init_after = _testsinglephase.state_initialized() - init_count = _testsinglephase.initialized_count() - - self.assertGreater(init_before, 0) - self.assertEqual(init_after, 0) - self.assertEqual(init_count, -1) - - def test_variants(self): - # Exercise the most meaningful variants described in Python/import.c. - self.maxDiff = None - - # Check the "basic" module. - - name = self.NAME - expected_init_count = 1 - with self.subTest(name): - loaded = self.load(name) - - self.check_common(loaded) - self.check_direct(loaded) - self.check_basic(loaded, expected_init_count) - basic = loaded.module - - # Check its indirect variants. - - name = f'{self.NAME}_basic_wrapper' - self.add_module_cleanup(name) - expected_init_count += 1 - with self.subTest(name): - loaded = self.load(name) - - self.check_common(loaded) - self.check_indirect(loaded, basic) - self.check_basic(loaded, expected_init_count) - - # Currently PyState_AddModule() always replaces the cached module. - self.assertIs(basic.look_up_self(), loaded.module) - self.assertEqual(basic.initialized_count(), expected_init_count) - - # The cached module shouldn't change after this point. - basic_lookedup = loaded.module - - # Check its direct variant. - - name = f'{self.NAME}_basic_copy' - self.add_module_cleanup(name) - expected_init_count += 1 - with self.subTest(name): - loaded = self.load(name) - - self.check_common(loaded) - self.check_direct(loaded) - self.check_basic(loaded, expected_init_count) - - # This should change the cached module for _testsinglephase. - self.assertIs(basic.look_up_self(), basic_lookedup) - self.assertEqual(basic.initialized_count(), expected_init_count) - - # Check the non-basic variant that has no state. - - name = f'{self.NAME}_with_reinit' - self.add_module_cleanup(name) - with self.subTest(name): - loaded = self.load(name) - - self.check_common(loaded) - self.assertIs(loaded.snapshot.state_initialized, None) - self.check_direct(loaded) - self.check_with_reinit(loaded) - - # This should change the cached module for _testsinglephase. - self.assertIs(basic.look_up_self(), basic_lookedup) - self.assertEqual(basic.initialized_count(), expected_init_count) - - # Check the basic variant that has state. - - name = f'{self.NAME}_with_state' - self.add_module_cleanup(name) - with self.subTest(name): - loaded = self.load(name) - - self.check_common(loaded) - self.assertIsNot(loaded.snapshot.state_initialized, None) - self.check_direct(loaded) - self.check_with_reinit(loaded) - - # This should change the cached module for _testsinglephase. - self.assertIs(basic.look_up_self(), basic_lookedup) - self.assertEqual(basic.initialized_count(), expected_init_count) - - def test_basic_reloaded(self): - # m_copy is copied into the existing module object. - # Global state is not changed. - self.maxDiff = None - - for name in [ - self.NAME, # the "basic" module - f'{self.NAME}_basic_wrapper', # the indirect variant - f'{self.NAME}_basic_copy', # the direct variant - ]: - self.add_module_cleanup(name) - with self.subTest(name): - loaded = self.load(name) - reloaded = self.re_load(name, loaded.module) - - self.check_common(loaded) - self.check_common(reloaded) - - # Make sure the original __dict__ did not get replaced. - self.assertEqual(id(loaded.module.__dict__), - loaded.snapshot.ns_id) - self.assertEqual(loaded.snapshot.ns.__dict__, - loaded.module.__dict__) - - self.assertEqual(reloaded.module.__spec__.name, reloaded.name) - self.assertEqual(reloaded.module.__name__, - reloaded.snapshot.ns.__name__) - - self.assertIs(reloaded.module, loaded.module) - self.assertIs(reloaded.module.__dict__, loaded.module.__dict__) - # It only happens to be the same but that's good enough here. - # We really just want to verify that the re-loaded attrs - # didn't change. - self.assertIs(reloaded.snapshot.lookedup, - loaded.snapshot.lookedup) - self.assertEqual(reloaded.snapshot.state_initialized, - loaded.snapshot.state_initialized) - self.assertEqual(reloaded.snapshot.init_count, - loaded.snapshot.init_count) - - self.assertIs(reloaded.snapshot.cached, reloaded.module) - - def test_with_reinit_reloaded(self): - # The module's m_init func is run again. - self.maxDiff = None - - # Keep a reference around. - basic = self.load(self.NAME) - - for name in [ - f'{self.NAME}_with_reinit', # m_size == 0 - f'{self.NAME}_with_state', # m_size > 0 - ]: - self.add_module_cleanup(name) - with self.subTest(name): - loaded = self.load(name) - reloaded = self.re_load(name, loaded.module) - - self.check_common(loaded) - self.check_common(reloaded) - - # Make sure the original __dict__ did not get replaced. - self.assertEqual(id(loaded.module.__dict__), - loaded.snapshot.ns_id) - self.assertEqual(loaded.snapshot.ns.__dict__, - loaded.module.__dict__) - - self.assertEqual(reloaded.module.__spec__.name, reloaded.name) - self.assertEqual(reloaded.module.__name__, - reloaded.snapshot.ns.__name__) - - self.assertIsNot(reloaded.module, loaded.module) - self.assertNotEqual(reloaded.module.__dict__, - loaded.module.__dict__) - self.assertIs(reloaded.snapshot.lookedup, reloaded.module) - if loaded.snapshot.state_initialized is None: - self.assertIs(reloaded.snapshot.state_initialized, None) - else: - self.assertGreater(reloaded.snapshot.state_initialized, - loaded.snapshot.state_initialized) - - self.assertIs(reloaded.snapshot.cached, reloaded.module) - - # Currently, for every single-phrase init module loaded - # in multiple interpreters, those interpreters share a - # PyModuleDef for that object, which can be a problem. - # Also, we test with a single-phase module that has global state, - # which is shared by all interpreters. - - @requires_subinterpreters - def test_basic_multiple_interpreters_main_no_reset(self): - # without resetting; already loaded in main interpreter - - # At this point: - # * alive in 0 interpreters - # * module def may or may not be loaded already - # * module def not in _PyRuntime.imports.extensions - # * mod init func has not run yet (since reset, at least) - # * m_copy not set (hasn't been loaded yet or already cleared) - # * module's global state has not been initialized yet - # (or already cleared) - - main_loaded = self.load(self.NAME) - _testsinglephase = main_loaded.module - # Attrs set after loading are not in m_copy. - _testsinglephase.spam = 'spam, spam, spam, spam, eggs, and spam' - - self.check_common(main_loaded) - self.check_fresh(main_loaded) - - interpid1 = self.add_subinterpreter() - interpid2 = self.add_subinterpreter() - - # At this point: - # * alive in 1 interpreter (main) - # * module def in _PyRuntime.imports.extensions - # * mod init func ran for the first time (since reset, at least) - # * m_copy was copied from the main interpreter (was NULL) - # * module's global state was initialized - - # Use an interpreter that gets destroyed right away. - loaded = self.import_in_subinterp() - self.check_common(loaded) - self.check_copied(loaded, main_loaded) - - # At this point: - # * alive in 1 interpreter (main) - # * module def still in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy is NULL (claered when the interpreter was destroyed) - # (was from main interpreter) - # * module's global state was updated, not reset - - # Use a subinterpreter that sticks around. - loaded = self.import_in_subinterp(interpid1) - self.check_common(loaded) - self.check_copied(loaded, main_loaded) - - # At this point: - # * alive in 2 interpreters (main, interp1) - # * module def still in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy was copied from interp1 - # * module's global state was updated, not reset - - # Use a subinterpreter while the previous one is still alive. - loaded = self.import_in_subinterp(interpid2) - self.check_common(loaded) - self.check_copied(loaded, main_loaded) - - # At this point: - # * alive in 3 interpreters (main, interp1, interp2) - # * module def still in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy was copied from interp2 (was from interp1) - # * module's global state was updated, not reset - - @requires_subinterpreters - def test_basic_multiple_interpreters_deleted_no_reset(self): - # without resetting; already loaded in a deleted interpreter - - # At this point: - # * alive in 0 interpreters - # * module def may or may not be loaded already - # * module def not in _PyRuntime.imports.extensions - # * mod init func has not run yet (since reset, at least) - # * m_copy not set (hasn't been loaded yet or already cleared) - # * module's global state has not been initialized yet - # (or already cleared) - - interpid1 = self.add_subinterpreter() - interpid2 = self.add_subinterpreter() - - # First, load in the main interpreter but then completely clear it. - loaded_main = self.load(self.NAME) - loaded_main.module._clear_globals() - _testinternalcapi.clear_extension(self.NAME, self.FILE) - - # At this point: - # * alive in 0 interpreters - # * module def loaded already - # * module def was in _PyRuntime.imports.extensions, but cleared - # * mod init func ran for the first time (since reset, at least) - # * m_copy was set, but cleared (was NULL) - # * module's global state was initialized but cleared - - # Start with an interpreter that gets destroyed right away. - base = self.import_in_subinterp(postscript=''' - # Attrs set after loading are not in m_copy. - mod.spam = 'spam, spam, mash, spam, eggs, and spam' - ''') - self.check_common(base) - self.check_fresh(base) - - # At this point: - # * alive in 0 interpreters - # * module def in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy is NULL (claered when the interpreter was destroyed) - # * module's global state was initialized, not reset - - # Use a subinterpreter that sticks around. - loaded_interp1 = self.import_in_subinterp(interpid1) - self.check_common(loaded_interp1) - self.check_semi_fresh(loaded_interp1, loaded_main, base) - - # At this point: - # * alive in 1 interpreter (interp1) - # * module def still in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy was copied from interp1 (was NULL) - # * module's global state was updated, not reset - - # Use a subinterpreter while the previous one is still alive. - loaded_interp2 = self.import_in_subinterp(interpid2) - self.check_common(loaded_interp2) - self.check_copied(loaded_interp2, loaded_interp1) - - # At this point: - # * alive in 2 interpreters (interp1, interp2) - # * module def still in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy was copied from interp2 (was from interp1) - # * module's global state was updated, not reset - - @requires_subinterpreters - @requires_load_dynamic - def test_basic_multiple_interpreters_reset_each(self): - # resetting between each interpreter - - # At this point: - # * alive in 0 interpreters - # * module def may or may not be loaded already - # * module def not in _PyRuntime.imports.extensions - # * mod init func has not run yet (since reset, at least) - # * m_copy not set (hasn't been loaded yet or already cleared) - # * module's global state has not been initialized yet - # (or already cleared) - - interpid1 = self.add_subinterpreter() - interpid2 = self.add_subinterpreter() - - # Use an interpreter that gets destroyed right away. - loaded = self.import_in_subinterp( - postscript=''' - # Attrs set after loading are not in m_copy. - mod.spam = 'spam, spam, mash, spam, eggs, and spam' - ''', - postcleanup=True, - ) - self.check_common(loaded) - self.check_fresh(loaded) - - # At this point: - # * alive in 0 interpreters - # * module def in _PyRuntime.imports.extensions - # * mod init func ran for the first time (since reset, at least) - # * m_copy is NULL (claered when the interpreter was destroyed) - # * module's global state was initialized, not reset - - # Use a subinterpreter that sticks around. - loaded = self.import_in_subinterp(interpid1, postcleanup=True) - self.check_common(loaded) - self.check_fresh(loaded) - - # At this point: - # * alive in 1 interpreter (interp1) - # * module def still in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy was copied from interp1 (was NULL) - # * module's global state was initialized, not reset - - # Use a subinterpreter while the previous one is still alive. - loaded = self.import_in_subinterp(interpid2, postcleanup=True) - self.check_common(loaded) - self.check_fresh(loaded) - - # At this point: - # * alive in 2 interpreters (interp2, interp2) - # * module def still in _PyRuntime.imports.extensions - # * mod init func ran again - # * m_copy was copied from interp2 (was from interp1) - # * module's global state was initialized, not reset - - class ReloadTests(unittest.TestCase): """Very basic tests to make sure that imp.reload() operates just like diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py index 3ef07203c46c7e..66ae554f984fa2 100644 --- a/Lib/test/test_import/__init__.py +++ b/Lib/test/test_import/__init__.py @@ -2,6 +2,7 @@ import contextlib import errno import glob +import json import importlib.util from importlib._bootstrap_external import _get_sourcefile from importlib.machinery import ( @@ -18,13 +19,15 @@ import textwrap import threading import time +import types import unittest from unittest import mock +import _testinternalcapi from test.support import os_helper from test.support import ( STDLIB_DIR, swap_attr, swap_item, cpython_only, is_emscripten, - is_wasi, run_in_subinterp_with_config) + is_wasi, run_in_subinterp, run_in_subinterp_with_config) from test.support.import_helper import ( forget, make_legacy_pyc, unlink, unload, DirsOnSysPath, CleanImport) from test.support.os_helper import ( @@ -41,6 +44,10 @@ import _testmultiphase except ImportError: _testmultiphase = None +try: + import _xxsubinterpreters as _interpreters +except ModuleNotFoundError: + _interpreters = None skip_if_dont_write_bytecode = unittest.skipIf( @@ -120,6 +127,182 @@ def _ready_to_import(name=None, source=""): del sys.modules[name] +def requires_subinterpreters(meth): + """Decorator to skip a test if subinterpreters are not supported.""" + return unittest.skipIf(_interpreters is None, + 'subinterpreters required')(meth) + + +def requires_singlephase_init(meth): + """Decorator to skip if single-phase init modules are not supported.""" + meth = cpython_only(meth) + return unittest.skipIf(_testsinglephase is None, + 'test requires _testsinglephase module')(meth) + + +class ModuleSnapshot(types.SimpleNamespace): + """A representation of a module for testing. + + Fields: + + * id - the module's object ID + * module - the actual module or an adequate substitute + * __file__ + * __spec__ + * name + * origin + * ns - a copy (dict) of the module's __dict__ (or None) + * ns_id - the object ID of the module's __dict__ + * cached - the sys.modules[mod.__spec__.name] entry (or None) + * cached_id - the object ID of the sys.modules entry (or None) + + In cases where the value is not available (e.g. due to serialization), + the value will be None. + """ + _fields = tuple('id module ns ns_id cached cached_id'.split()) + + @classmethod + def from_module(cls, mod): + name = mod.__spec__.name + cached = sys.modules.get(name) + return cls( + id=id(mod), + module=mod, + ns=types.SimpleNamespace(**mod.__dict__), + ns_id=id(mod.__dict__), + cached=cached, + cached_id=id(cached), + ) + + SCRIPT = textwrap.dedent(''' + {imports} + + name = {name!r} + + {prescript} + + mod = {name} + + {body} + + {postscript} + ''') + IMPORTS = textwrap.dedent(''' + import sys + ''').strip() + SCRIPT_BODY = textwrap.dedent(''' + # Capture the snapshot data. + cached = sys.modules.get(name) + snapshot = dict( + id=id(mod), + module=dict( + __file__=mod.__file__, + __spec__=dict( + name=mod.__spec__.name, + origin=mod.__spec__.origin, + ), + ), + ns=None, + ns_id=id(mod.__dict__), + cached=None, + cached_id=id(cached) if cached else None, + ) + ''').strip() + CLEANUP_SCRIPT = textwrap.dedent(''' + # Clean up the module. + sys.modules.pop(name, None) + ''').strip() + + @classmethod + def build_script(cls, name, *, + prescript=None, + import_first=False, + postscript=None, + postcleanup=False, + ): + if postcleanup is True: + postcleanup = cls.CLEANUP_SCRIPT + elif isinstance(postcleanup, str): + postcleanup = textwrap.dedent(postcleanup).strip() + postcleanup = cls.CLEANUP_SCRIPT + os.linesep + postcleanup + else: + postcleanup = '' + prescript = textwrap.dedent(prescript).strip() if prescript else '' + postscript = textwrap.dedent(postscript).strip() if postscript else '' + + if postcleanup: + if postscript: + postscript = postscript + os.linesep * 2 + postcleanup + else: + postscript = postcleanup + + if import_first: + prescript += textwrap.dedent(f''' + + # Now import the module. + assert name not in sys.modules + import {name}''') + + return cls.SCRIPT.format( + imports=cls.IMPORTS.strip(), + name=name, + prescript=prescript.strip(), + body=cls.SCRIPT_BODY.strip(), + postscript=postscript, + ) + + @classmethod + def parse(cls, text): + raw = json.loads(text) + mod = raw['module'] + mod['__spec__'] = types.SimpleNamespace(**mod['__spec__']) + raw['module'] = types.SimpleNamespace(**mod) + return cls(**raw) + + @classmethod + def from_subinterp(cls, name, interpid=None, *, pipe=None, **script_kwds): + if pipe is not None: + return cls._from_subinterp(name, interpid, pipe, script_kwds) + pipe = os.pipe() + try: + return cls._from_subinterp(name, interpid, pipe, script_kwds) + finally: + r, w = pipe + os.close(r) + os.close(w) + + @classmethod + def _from_subinterp(cls, name, interpid, pipe, script_kwargs): + r, w = pipe + + # Build the script. + postscript = textwrap.dedent(f''' + # Send the result over the pipe. + import json + import os + os.write({w}, json.dumps(snapshot).encode()) + + ''') + _postscript = script_kwargs.get('postscript') + if _postscript: + _postscript = textwrap.dedent(_postscript).lstrip() + postscript += _postscript + script_kwargs['postscript'] = postscript.strip() + script = cls.build_script(name, **script_kwargs) + + # Run the script. + if interpid is None: + ret = run_in_subinterp(script) + if ret != 0: + raise AssertionError(f'{ret} != 0') + else: + _interpreters.run_string(interpid, script) + + # Parse the results. + text = os.read(r, 1000) + return cls.parse(text.decode()) + + class ImportTests(unittest.TestCase): def setUp(self): @@ -1604,7 +1787,7 @@ def test_frozen_compat(self): with self.subTest(f'{module}: strict, not fresh'): self.check_compatible_here(module, strict=True) - @unittest.skipIf(_testsinglephase is None, "test requires _testsinglephase module") + @requires_singlephase_init def test_single_init_extension_compat(self): module = '_testsinglephase' require_extension(module) @@ -1636,7 +1819,7 @@ def test_python_compat(self): with self.subTest(f'{module}: strict, fresh'): self.check_compatible_fresh(module, strict=True) - @unittest.skipIf(_testsinglephase is None, "test requires _testsinglephase module") + @requires_singlephase_init def test_singlephase_check_with_setting_and_override(self): module = '_testsinglephase' require_extension(module) @@ -1672,6 +1855,685 @@ def check_incompatible(setting, override): check_compatible(False, -1) +class TestSinglePhaseSnapshot(ModuleSnapshot): + + @classmethod + def from_module(cls, mod): + self = super().from_module(mod) + self.summed = mod.sum(1, 2) + self.lookedup = mod.look_up_self() + self.lookedup_id = id(self.lookedup) + self.state_initialized = mod.state_initialized() + if hasattr(mod, 'initialized_count'): + self.init_count = mod.initialized_count() + return self + + SCRIPT_BODY = ModuleSnapshot.SCRIPT_BODY + textwrap.dedent(f''' + snapshot['module'].update(dict( + int_const=mod.int_const, + str_const=mod.str_const, + _module_initialized=mod._module_initialized, + )) + snapshot.update(dict( + summed=mod.sum(1, 2), + lookedup_id=id(mod.look_up_self()), + state_initialized=mod.state_initialized(), + init_count=mod.initialized_count(), + has_spam=hasattr(mod, 'spam'), + spam=getattr(mod, 'spam', None), + )) + ''').rstrip() + + @classmethod + def parse(cls, text): + self = super().parse(text) + if not self.has_spam: + del self.spam + del self.has_spam + return self + + +@requires_singlephase_init +class SinglephaseInitTests(unittest.TestCase): + + NAME = '_testsinglephase' + + @classmethod + def setUpClass(cls): + if '-R' in sys.argv or '--huntrleaks' in sys.argv: + # https://github.com/python/cpython/issues/102251 + raise unittest.SkipTest('unresolved refleaks (see gh-102251)') + + spec = importlib.util.find_spec(cls.NAME) + from importlib.machinery import ExtensionFileLoader + cls.FILE = spec.origin + cls.LOADER = type(spec.loader) + assert cls.LOADER is ExtensionFileLoader + + # Start fresh. + cls.clean_up() + + def tearDown(self): + # Clean up the module. + self.clean_up() + + @classmethod + def clean_up(cls): + name = cls.NAME + filename = cls.FILE + if name in sys.modules: + if hasattr(sys.modules[name], '_clear_globals'): + assert sys.modules[name].__file__ == filename + sys.modules[name]._clear_globals() + del sys.modules[name] + # Clear all internally cached data for the extension. + _testinternalcapi.clear_extension(name, filename) + + ######################### + # helpers + + def add_module_cleanup(self, name): + def clean_up(): + # Clear all internally cached data for the extension. + _testinternalcapi.clear_extension(name, self.FILE) + self.addCleanup(clean_up) + + def _load_dynamic(self, name, path): + """ + Load an extension module. + """ + # This is essentially copied from the old imp module. + from importlib._bootstrap import _load + loader = self.LOADER(name, path) + + # Issue bpo-24748: Skip the sys.modules check in _load_module_shim; + # always load new extension. + spec = importlib.util.spec_from_file_location(name, path, + loader=loader) + return _load(spec) + + def load(self, name): + try: + already_loaded = self.already_loaded + except AttributeError: + already_loaded = self.already_loaded = {} + assert name not in already_loaded + mod = self._load_dynamic(name, self.FILE) + self.assertNotIn(mod, already_loaded.values()) + already_loaded[name] = mod + return types.SimpleNamespace( + name=name, + module=mod, + snapshot=TestSinglePhaseSnapshot.from_module(mod), + ) + + def re_load(self, name, mod): + assert sys.modules[name] is mod + assert mod.__dict__ == mod.__dict__ + reloaded = self._load_dynamic(name, self.FILE) + return types.SimpleNamespace( + name=name, + module=reloaded, + snapshot=TestSinglePhaseSnapshot.from_module(reloaded), + ) + + # subinterpreters + + def add_subinterpreter(self): + interpid = _interpreters.create(isolated=False) + _interpreters.run_string(interpid, textwrap.dedent(''' + import sys + import _testinternalcapi + ''')) + def clean_up(): + _interpreters.run_string(interpid, textwrap.dedent(f''' + name = {self.NAME!r} + if name in sys.modules: + sys.modules[name]._clear_globals() + _testinternalcapi.clear_extension(name, {self.FILE!r}) + ''')) + _interpreters.destroy(interpid) + self.addCleanup(clean_up) + return interpid + + def import_in_subinterp(self, interpid=None, *, + postscript=None, + postcleanup=False, + ): + name = self.NAME + + if postcleanup: + import_ = 'import _testinternalcapi' if interpid is None else '' + postcleanup = f''' + {import_} + mod._clear_globals() + _testinternalcapi.clear_extension(name, {self.FILE!r}) + ''' + + try: + pipe = self._pipe + except AttributeError: + r, w = pipe = self._pipe = os.pipe() + self.addCleanup(os.close, r) + self.addCleanup(os.close, w) + + snapshot = TestSinglePhaseSnapshot.from_subinterp( + name, + interpid, + pipe=pipe, + import_first=True, + postscript=postscript, + postcleanup=postcleanup, + ) + + return types.SimpleNamespace( + name=name, + module=None, + snapshot=snapshot, + ) + + # checks + + def check_common(self, loaded): + isolated = False + + mod = loaded.module + if not mod: + # It came from a subinterpreter. + isolated = True + mod = loaded.snapshot.module + # mod.__name__ might not match, but the spec will. + self.assertEqual(mod.__spec__.name, loaded.name) + self.assertEqual(mod.__file__, self.FILE) + self.assertEqual(mod.__spec__.origin, self.FILE) + if not isolated: + self.assertTrue(issubclass(mod.error, Exception)) + self.assertEqual(mod.int_const, 1969) + self.assertEqual(mod.str_const, 'something different') + self.assertIsInstance(mod._module_initialized, float) + self.assertGreater(mod._module_initialized, 0) + + snap = loaded.snapshot + self.assertEqual(snap.summed, 3) + if snap.state_initialized is not None: + self.assertIsInstance(snap.state_initialized, float) + self.assertGreater(snap.state_initialized, 0) + if isolated: + # The "looked up" module is interpreter-specific + # (interp->imports.modules_by_index was set for the module). + self.assertEqual(snap.lookedup_id, snap.id) + self.assertEqual(snap.cached_id, snap.id) + with self.assertRaises(AttributeError): + snap.spam + else: + self.assertIs(snap.lookedup, mod) + self.assertIs(snap.cached, mod) + + def check_direct(self, loaded): + # The module has its own PyModuleDef, with a matching name. + self.assertEqual(loaded.module.__name__, loaded.name) + self.assertIs(loaded.snapshot.lookedup, loaded.module) + + def check_indirect(self, loaded, orig): + # The module re-uses another's PyModuleDef, with a different name. + assert orig is not loaded.module + assert orig.__name__ != loaded.name + self.assertNotEqual(loaded.module.__name__, loaded.name) + self.assertIs(loaded.snapshot.lookedup, loaded.module) + + def check_basic(self, loaded, expected_init_count): + # m_size == -1 + # The module loads fresh the first time and copies m_copy after. + snap = loaded.snapshot + self.assertIsNot(snap.state_initialized, None) + self.assertIsInstance(snap.init_count, int) + self.assertGreater(snap.init_count, 0) + self.assertEqual(snap.init_count, expected_init_count) + + def check_with_reinit(self, loaded): + # m_size >= 0 + # The module loads fresh every time. + pass + + def check_fresh(self, loaded): + """ + The module had not been loaded before (at least since fully reset). + """ + snap = loaded.snapshot + # The module's init func was run. + # A copy of the module's __dict__ was stored in def->m_base.m_copy. + # The previous m_copy was deleted first. + # _PyRuntime.imports.extensions was set. + self.assertEqual(snap.init_count, 1) + # The global state was initialized. + # The module attrs were initialized from that state. + self.assertEqual(snap.module._module_initialized, + snap.state_initialized) + + def check_semi_fresh(self, loaded, base, prev): + """ + The module had been loaded before and then reset + (but the module global state wasn't). + """ + snap = loaded.snapshot + # The module's init func was run again. + # A copy of the module's __dict__ was stored in def->m_base.m_copy. + # The previous m_copy was deleted first. + # The module globals did not get reset. + self.assertNotEqual(snap.id, base.snapshot.id) + self.assertNotEqual(snap.id, prev.snapshot.id) + self.assertEqual(snap.init_count, prev.snapshot.init_count + 1) + # The global state was updated. + # The module attrs were initialized from that state. + self.assertEqual(snap.module._module_initialized, + snap.state_initialized) + self.assertNotEqual(snap.state_initialized, + base.snapshot.state_initialized) + self.assertNotEqual(snap.state_initialized, + prev.snapshot.state_initialized) + + def check_copied(self, loaded, base): + """ + The module had been loaded before and never reset. + """ + snap = loaded.snapshot + # The module's init func was not run again. + # The interpreter copied m_copy, as set by the other interpreter, + # with objects owned by the other interpreter. + # The module globals did not get reset. + self.assertNotEqual(snap.id, base.snapshot.id) + self.assertEqual(snap.init_count, base.snapshot.init_count) + # The global state was not updated since the init func did not run. + # The module attrs were not directly initialized from that state. + # The state and module attrs still match the previous loading. + self.assertEqual(snap.module._module_initialized, + snap.state_initialized) + self.assertEqual(snap.state_initialized, + base.snapshot.state_initialized) + + ######################### + # the tests + + def test_cleared_globals(self): + loaded = self.load(self.NAME) + _testsinglephase = loaded.module + init_before = _testsinglephase.state_initialized() + + _testsinglephase._clear_globals() + init_after = _testsinglephase.state_initialized() + init_count = _testsinglephase.initialized_count() + + self.assertGreater(init_before, 0) + self.assertEqual(init_after, 0) + self.assertEqual(init_count, -1) + + def test_variants(self): + # Exercise the most meaningful variants described in Python/import.c. + self.maxDiff = None + + # Check the "basic" module. + + name = self.NAME + expected_init_count = 1 + with self.subTest(name): + loaded = self.load(name) + + self.check_common(loaded) + self.check_direct(loaded) + self.check_basic(loaded, expected_init_count) + basic = loaded.module + + # Check its indirect variants. + + name = f'{self.NAME}_basic_wrapper' + self.add_module_cleanup(name) + expected_init_count += 1 + with self.subTest(name): + loaded = self.load(name) + + self.check_common(loaded) + self.check_indirect(loaded, basic) + self.check_basic(loaded, expected_init_count) + + # Currently PyState_AddModule() always replaces the cached module. + self.assertIs(basic.look_up_self(), loaded.module) + self.assertEqual(basic.initialized_count(), expected_init_count) + + # The cached module shouldn't change after this point. + basic_lookedup = loaded.module + + # Check its direct variant. + + name = f'{self.NAME}_basic_copy' + self.add_module_cleanup(name) + expected_init_count += 1 + with self.subTest(name): + loaded = self.load(name) + + self.check_common(loaded) + self.check_direct(loaded) + self.check_basic(loaded, expected_init_count) + + # This should change the cached module for _testsinglephase. + self.assertIs(basic.look_up_self(), basic_lookedup) + self.assertEqual(basic.initialized_count(), expected_init_count) + + # Check the non-basic variant that has no state. + + name = f'{self.NAME}_with_reinit' + self.add_module_cleanup(name) + with self.subTest(name): + loaded = self.load(name) + + self.check_common(loaded) + self.assertIs(loaded.snapshot.state_initialized, None) + self.check_direct(loaded) + self.check_with_reinit(loaded) + + # This should change the cached module for _testsinglephase. + self.assertIs(basic.look_up_self(), basic_lookedup) + self.assertEqual(basic.initialized_count(), expected_init_count) + + # Check the basic variant that has state. + + name = f'{self.NAME}_with_state' + self.add_module_cleanup(name) + with self.subTest(name): + loaded = self.load(name) + + self.check_common(loaded) + self.assertIsNot(loaded.snapshot.state_initialized, None) + self.check_direct(loaded) + self.check_with_reinit(loaded) + + # This should change the cached module for _testsinglephase. + self.assertIs(basic.look_up_self(), basic_lookedup) + self.assertEqual(basic.initialized_count(), expected_init_count) + + def test_basic_reloaded(self): + # m_copy is copied into the existing module object. + # Global state is not changed. + self.maxDiff = None + + for name in [ + self.NAME, # the "basic" module + f'{self.NAME}_basic_wrapper', # the indirect variant + f'{self.NAME}_basic_copy', # the direct variant + ]: + self.add_module_cleanup(name) + with self.subTest(name): + loaded = self.load(name) + reloaded = self.re_load(name, loaded.module) + + self.check_common(loaded) + self.check_common(reloaded) + + # Make sure the original __dict__ did not get replaced. + self.assertEqual(id(loaded.module.__dict__), + loaded.snapshot.ns_id) + self.assertEqual(loaded.snapshot.ns.__dict__, + loaded.module.__dict__) + + self.assertEqual(reloaded.module.__spec__.name, reloaded.name) + self.assertEqual(reloaded.module.__name__, + reloaded.snapshot.ns.__name__) + + self.assertIs(reloaded.module, loaded.module) + self.assertIs(reloaded.module.__dict__, loaded.module.__dict__) + # It only happens to be the same but that's good enough here. + # We really just want to verify that the re-loaded attrs + # didn't change. + self.assertIs(reloaded.snapshot.lookedup, + loaded.snapshot.lookedup) + self.assertEqual(reloaded.snapshot.state_initialized, + loaded.snapshot.state_initialized) + self.assertEqual(reloaded.snapshot.init_count, + loaded.snapshot.init_count) + + self.assertIs(reloaded.snapshot.cached, reloaded.module) + + def test_with_reinit_reloaded(self): + # The module's m_init func is run again. + self.maxDiff = None + + # Keep a reference around. + basic = self.load(self.NAME) + + for name in [ + f'{self.NAME}_with_reinit', # m_size == 0 + f'{self.NAME}_with_state', # m_size > 0 + ]: + self.add_module_cleanup(name) + with self.subTest(name): + loaded = self.load(name) + reloaded = self.re_load(name, loaded.module) + + self.check_common(loaded) + self.check_common(reloaded) + + # Make sure the original __dict__ did not get replaced. + self.assertEqual(id(loaded.module.__dict__), + loaded.snapshot.ns_id) + self.assertEqual(loaded.snapshot.ns.__dict__, + loaded.module.__dict__) + + self.assertEqual(reloaded.module.__spec__.name, reloaded.name) + self.assertEqual(reloaded.module.__name__, + reloaded.snapshot.ns.__name__) + + self.assertIsNot(reloaded.module, loaded.module) + self.assertNotEqual(reloaded.module.__dict__, + loaded.module.__dict__) + self.assertIs(reloaded.snapshot.lookedup, reloaded.module) + if loaded.snapshot.state_initialized is None: + self.assertIs(reloaded.snapshot.state_initialized, None) + else: + self.assertGreater(reloaded.snapshot.state_initialized, + loaded.snapshot.state_initialized) + + self.assertIs(reloaded.snapshot.cached, reloaded.module) + + # Currently, for every single-phrase init module loaded + # in multiple interpreters, those interpreters share a + # PyModuleDef for that object, which can be a problem. + # Also, we test with a single-phase module that has global state, + # which is shared by all interpreters. + + @requires_subinterpreters + def test_basic_multiple_interpreters_main_no_reset(self): + # without resetting; already loaded in main interpreter + + # At this point: + # * alive in 0 interpreters + # * module def may or may not be loaded already + # * module def not in _PyRuntime.imports.extensions + # * mod init func has not run yet (since reset, at least) + # * m_copy not set (hasn't been loaded yet or already cleared) + # * module's global state has not been initialized yet + # (or already cleared) + + main_loaded = self.load(self.NAME) + _testsinglephase = main_loaded.module + # Attrs set after loading are not in m_copy. + _testsinglephase.spam = 'spam, spam, spam, spam, eggs, and spam' + + self.check_common(main_loaded) + self.check_fresh(main_loaded) + + interpid1 = self.add_subinterpreter() + interpid2 = self.add_subinterpreter() + + # At this point: + # * alive in 1 interpreter (main) + # * module def in _PyRuntime.imports.extensions + # * mod init func ran for the first time (since reset, at least) + # * m_copy was copied from the main interpreter (was NULL) + # * module's global state was initialized + + # Use an interpreter that gets destroyed right away. + loaded = self.import_in_subinterp() + self.check_common(loaded) + self.check_copied(loaded, main_loaded) + + # At this point: + # * alive in 1 interpreter (main) + # * module def still in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy is NULL (claered when the interpreter was destroyed) + # (was from main interpreter) + # * module's global state was updated, not reset + + # Use a subinterpreter that sticks around. + loaded = self.import_in_subinterp(interpid1) + self.check_common(loaded) + self.check_copied(loaded, main_loaded) + + # At this point: + # * alive in 2 interpreters (main, interp1) + # * module def still in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy was copied from interp1 + # * module's global state was updated, not reset + + # Use a subinterpreter while the previous one is still alive. + loaded = self.import_in_subinterp(interpid2) + self.check_common(loaded) + self.check_copied(loaded, main_loaded) + + # At this point: + # * alive in 3 interpreters (main, interp1, interp2) + # * module def still in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy was copied from interp2 (was from interp1) + # * module's global state was updated, not reset + + @requires_subinterpreters + def test_basic_multiple_interpreters_deleted_no_reset(self): + # without resetting; already loaded in a deleted interpreter + + # At this point: + # * alive in 0 interpreters + # * module def may or may not be loaded already + # * module def not in _PyRuntime.imports.extensions + # * mod init func has not run yet (since reset, at least) + # * m_copy not set (hasn't been loaded yet or already cleared) + # * module's global state has not been initialized yet + # (or already cleared) + + interpid1 = self.add_subinterpreter() + interpid2 = self.add_subinterpreter() + + # First, load in the main interpreter but then completely clear it. + loaded_main = self.load(self.NAME) + loaded_main.module._clear_globals() + _testinternalcapi.clear_extension(self.NAME, self.FILE) + + # At this point: + # * alive in 0 interpreters + # * module def loaded already + # * module def was in _PyRuntime.imports.extensions, but cleared + # * mod init func ran for the first time (since reset, at least) + # * m_copy was set, but cleared (was NULL) + # * module's global state was initialized but cleared + + # Start with an interpreter that gets destroyed right away. + base = self.import_in_subinterp(postscript=''' + # Attrs set after loading are not in m_copy. + mod.spam = 'spam, spam, mash, spam, eggs, and spam' + ''') + self.check_common(base) + self.check_fresh(base) + + # At this point: + # * alive in 0 interpreters + # * module def in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy is NULL (claered when the interpreter was destroyed) + # * module's global state was initialized, not reset + + # Use a subinterpreter that sticks around. + loaded_interp1 = self.import_in_subinterp(interpid1) + self.check_common(loaded_interp1) + self.check_semi_fresh(loaded_interp1, loaded_main, base) + + # At this point: + # * alive in 1 interpreter (interp1) + # * module def still in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy was copied from interp1 (was NULL) + # * module's global state was updated, not reset + + # Use a subinterpreter while the previous one is still alive. + loaded_interp2 = self.import_in_subinterp(interpid2) + self.check_common(loaded_interp2) + self.check_copied(loaded_interp2, loaded_interp1) + + # At this point: + # * alive in 2 interpreters (interp1, interp2) + # * module def still in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy was copied from interp2 (was from interp1) + # * module's global state was updated, not reset + + @requires_subinterpreters + def test_basic_multiple_interpreters_reset_each(self): + # resetting between each interpreter + + # At this point: + # * alive in 0 interpreters + # * module def may or may not be loaded already + # * module def not in _PyRuntime.imports.extensions + # * mod init func has not run yet (since reset, at least) + # * m_copy not set (hasn't been loaded yet or already cleared) + # * module's global state has not been initialized yet + # (or already cleared) + + interpid1 = self.add_subinterpreter() + interpid2 = self.add_subinterpreter() + + # Use an interpreter that gets destroyed right away. + loaded = self.import_in_subinterp( + postscript=''' + # Attrs set after loading are not in m_copy. + mod.spam = 'spam, spam, mash, spam, eggs, and spam' + ''', + postcleanup=True, + ) + self.check_common(loaded) + self.check_fresh(loaded) + + # At this point: + # * alive in 0 interpreters + # * module def in _PyRuntime.imports.extensions + # * mod init func ran for the first time (since reset, at least) + # * m_copy is NULL (claered when the interpreter was destroyed) + # * module's global state was initialized, not reset + + # Use a subinterpreter that sticks around. + loaded = self.import_in_subinterp(interpid1, postcleanup=True) + self.check_common(loaded) + self.check_fresh(loaded) + + # At this point: + # * alive in 1 interpreter (interp1) + # * module def still in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy was copied from interp1 (was NULL) + # * module's global state was initialized, not reset + + # Use a subinterpreter while the previous one is still alive. + loaded = self.import_in_subinterp(interpid2, postcleanup=True) + self.check_common(loaded) + self.check_fresh(loaded) + + # At this point: + # * alive in 2 interpreters (interp2, interp2) + # * module def still in _PyRuntime.imports.extensions + # * mod init func ran again + # * m_copy was copied from interp2 (was from interp1) + # * module's global state was initialized, not reset + + if __name__ == '__main__': # Test needs to be a package, so we can do relative imports. unittest.main()