J'utilisais le mot-clé
construit -in module pour obtenir une liste de tous les mots clés de la version Python actuelle. Et c'est ce que j'ai fait:
>>> __peg_parser__ File "<stdin>", line 1 __peg_parser__ ^ SyntaxError: You found it!
4 Réponses :
C'était un œuf de Pâques lié au déploiement de le nouveau PEG PARSER A >. L'oeuf de Pâques, ainsi que l'ancien analyseur LL (1), seront supprimés dans 3.10 . P. >
__ pEG_Parser __
? C'est un œuf de Pâques à Python (du PEG Parser ) pour quand le nouveau Peg Parser a été libéré. Comme mentionné dans ce discussion , il sera supprimé dans Python 3.10.
Avant L'œuf de Pâques a été appelé __ new_parser __
, mais a été changé en __ pEg_parser __
, pour en faire une preuve future comme mentionné dans le Message :
nouveau
, ex
ou ng
ne sont pas vraiment des noms de preuve futurs. Pouvons-nous renommer le mot-clé à __ pEG_Parser __
?
syntaxerror: vous l'avez trouvé!
? Vous obtenez syntaxerror: vous l'avez trouvé!
parce que c'est Une partie de l'oeuf de Pâques.
Puisque le ll (1) analyser sera remplacé d'être le nouveau PEG PARSER , il sera supprimé dans Python 3.10.
__ PEG_PARSER __
dans les versions antérieures et ultérieures de Python existent dans les versions antérieures de Python.
python 3.8 et plus tôt:
>>> __peg_parser__ Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name '__peg_parser__' is not defined
python 3.9:
>>> __peg_parser__ File "<stdin>", line 1 __peg_parser__ ^ SyntaxError: You found it!
@ppwater je pense que seul Python 3.9
Guido publié sur github ici pour le nouveau PEG Parser.
C'est aussi sur python pep .
Comme il mentionne: Ce PEP propose de remplacer l'analyseur actuel basé sur LL (1) de CPYTHON par un nouvel analyseur basé sur PEG. Ce nouvel analyseur permettrait l'élimination de plusieurs "hacks" qui existent dans la grammaire actuelle pour contourner la fiabilité LL (1). Cela réduirait considérablement les coûts de maintenance dans certaines zones liées au pipeline de compilation telles que la grammaire, l'analyseur et la génération AST. Le nouveau PEG Parser soulèvera également la restriction LL (1) sur la grammaire Python actuelle. également mentionné dans python 3.9 quoi de nouveau A > Page. Dans Python 3.10, l'analyseur Dans Python 3.6, il n'est pas défini: ll (1)
sera supprimé. Python 3.9 utilise un nouvel analyseur, basé sur PEG au lieu de LL (1). >>> __peg_parser__
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
__peg_parser__
NameError: name '__peg_parser__' is not defined
>>>
Ce PEP propose de remplacer l'analyseur actuel basé sur LL (1) de CPYTHON par un nouvel analyseur basé sur PEG. Ce nouvel analyseur permettrait l'élimination de plusieurs "hacks" qui existent dans la grammaire actuelle pour contourner la fiabilité LL (1). Cela réduirait considérablement les coûts de maintenance dans certaines zones liées au pipeline de compilation telles que la grammaire, l'analyseur et la génération AST. Le nouveau PEG Parser soulèvera également la restriction LL (1) sur la grammaire Python actuelle.
Avez-vous essayé de lire ceci: bugs.python.org/issue40939 Je pense que c'est une ancienne fonctionnalité, mais Je ne suis pas en mesure de digérer les informations là-bas.
@deecue merci pour le lien, il semble que ce soit un œuf de Pâques qui sera changé dans Python 3.10