Por fin después de mucho luchar ya encontramos el resultado de esta contrariedad que muchos los usuarios de nuestro espacio presentan. Si quieres compartir algo no dejes de compartir tu información.
Solución:
Fue un huevo de Pascua relacionado con el lanzamiento del nuevo analizador PEG. El easter egg, junto con el antiguo analizador LL(1), se eliminará en 3.10.
Guido publicó en github aquí para el nuevo analizador PEG.
También está en Python PEP.
Como menciona:
Este PEP propone reemplazar el analizador actual basado en LL(1) de CPython por un nuevo analizador basado en PEG. Este nuevo analizador permitiría la eliminación de múltiples “trucos” que existen en la gramática actual para sortear la limitación LL(1). Reduciría sustancialmente los costos de mantenimiento en algunas áreas relacionadas con la canalización de compilación, como la gramática, el analizador y la generación de AST. El nuevo analizador PEG también eliminará la restricción LL(1) en la gramática Python actual.
También se menciona en la página Novedades de Python 3.9.
En Python 3.10, el LL(1)
el analizador será eliminado. Python 3.9 usa un nuevo analizador, basado en PEG en lugar de LL(1).
En Python 3.6, no está definido:
>>> __peg_parser__
Traceback (most recent call last):
File "", line 1, in
__peg_parser__
NameError: name '__peg_parser__' is not defined
>>>
Que es __peg_parser__
?
Es un huevo de Pascua en Python (del Peg Parser) para cuando se lanzó el nuevo Peg Parser. Como se mencionó en esta discusión, se eliminará en Python 3.10.
Antes de que se llamara el huevo de Pascua __new_parser__
pero se cambió a __peg_parser__
para que sea a prueba de futuro como se menciona en el mensaje:
new
,ex
ong
no son realmente nombres a prueba de futuro. ¿Podemos cambiar el nombre de la palabra clave a__peg_parser__
?
¿Por qué obtienes SyntaxError: You found it!
?
Usted obtiene SyntaxError: You found it!
porque es parte del Easter Egg.
¿Se eliminará en el futuro?
Dado que el analizador LL(1) será reemplazado por el nuevo Peg Parser, se eliminará en Python 3.10.
__peg_parser__
en versiones anteriores y posteriores de Python
No existía en versiones anteriores de Python.
Python 3.8 y anteriores:
>>> __peg_parser__
Traceback (most recent call last):
File "", line 1, in
NameError: name '__peg_parser__' is not defined
Pitón 3.9:
>>> __peg_parser__
File "", line 1
__peg_parser__
^
SyntaxError: You found it!
Pitón 3.10:
>>> __peg_parser__
Traceback (most recent call last):
File "", line 1, in
NameError: name '__peg_parser__' is not defined
Comentarios y calificaciones del post
Si te ha resultado útil este artículo, nos gustaría que lo compartas con otros desarrolladores y nos ayudes a extender nuestra información.