Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

401
Views
¿Qué es __peg_parser__ en Python?

Estaba usando el módulo integrado de keyword para obtener una lista de todas las palabras clave de la versión actual de Python. Y esto es lo que hice:

 >>> import keyword >>> print(keyword.kwlist) ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

Y en la lista keyword.kwlist hay __peg_parser__ . Entonces, para ver lo que hace, __peg_parser__ en un intérprete de Python 3.9 en Windows (obtendrás el mismo resultado en Mac OS y Linux también), y esto es lo que se obtiene:

 >>> __peg_parser__ File "<stdin>", line 1 __peg_parser__ ^ SyntaxError: You found it!

Entonces mi pregunta es, ¿qué es __peg_parser__ y por qué obtengo SyntaxError: You found it! ?

over 4 years ago · Hanz Gallego
4 answers
Answer question

0

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 .

over 4 years ago · Hanz Gallego Report

0

¿Qué 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, el Easter Egg se llamaba __new_parser__ , pero se cambió a __peg_parser__ , para que sea una prueba futura, 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! ?

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 "<stdin>", line 1, in <module> NameError: name '__peg_parser__' is not defined

Pitón 3.9:

 >>> __peg_parser__ File "<stdin>", line 1 __peg_parser__ ^ SyntaxError: You found it!

Pitón 3.10:

 >>> __peg_parser__ Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name '__peg_parser__' is not defined
over 4 years ago · Hanz Gallego Report

0

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 eludir 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, se eliminará el analizador LL(1) . 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 "<pyshell#13>", line 1, in <module> __peg_parser__ NameError: name '__peg_parser__' is not defined >>>
over 4 years ago · Hanz Gallego Report

0

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.

leer más

over 4 years ago · Hanz Gallego Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!