Saltar al contenido

¿Qué es __peg_parser__ en Python?

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 o ng 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *