Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 306 – Wie man die Grammatik von Python ändert

Autor:
Michael Hudson <mwh at python.net>, Jack Diederich <jackdied at gmail.com>, Alyssa Coghlan <ncoghlan at gmail.com>, Benjamin Peterson <benjamin at python.org>
Status:
Zurückgezogen
Typ:
Informational
Erstellt:
29. Jan 2003
Post-History:
30. Jan 2003

Inhaltsverzeichnis

Hinweis

Diese PEP wurde in das Python-Entwicklerhandbuch verschoben [1].

Zusammenfassung

Es gehört mehr zur Änderung der Python-Grammatik, als nur Grammar/Grammar und Python/compile.c zu bearbeiten. Diese PEP soll eine Checkliste der Orte sein, die ebenfalls angepasst werden müssen.

Sie ist wahrscheinlich unvollständig. Wenn Sie Lücken sehen, fügen Sie sie einfach hinzu, wenn Sie können – Sie werden den Besitzanspruch des Autors nicht verletzen. Andernfalls reichen Sie einen Fehlerbericht oder einen Patch ein und weisen ihn mwh zu.

Diese PEP ist aus mehreren Gründen nicht als Handbuch für Python-Grammatik-Hacks gedacht.

Begründung

Leute machen das die ganze Zeit falsch; es dauerte weit über ein Jahr, bis jemand bemerkte [2], dass das Hinzufügen des Ganzzahldivisionsoperators (//) das Modul parser kaputt gemacht hat.

Checkliste

  • Grammar/Grammar: OK, das hätten Sie wahrscheinlich schon herausgefunden :)
  • Parser/Python.asdl benötigt möglicherweise Änderungen, um mit Grammar übereinzustimmen. Führen Sie make aus, um Include/Python-ast.h und Python/Python-ast.c neu zu generieren.
  • Python/ast.c benötigt Änderungen, um die AST-Objekte zu erstellen, die mit der Grammar-Änderung zusammenhängen. Lib/compiler/ast.py benötigt entsprechende Änderungen an den reinen Python-AST-Objekten.
  • Parser/pgen muss erneut ausgeführt werden, um Include/graminit.h und Python/graminit.c neu zu generieren. (make sollte das für Sie erledigen.)
  • Python/symbtable.c: Dies behandelt den Symbolerfassungspass, der unmittelbar vor dem Kompilierungspass stattfindet.
  • Python/compile.c: Sie müssen die compiler_*-Funktionen erstellen oder ändern, um Opcodes für Ihre Produktionen zu generieren.
  • Möglicherweise müssen Sie Lib/symbol.py und/oder Lib/token.py und/oder Lib/keyword.py neu generieren.
  • Das Modul parser. Fügen Sie etwas von Ihrer neuen Syntax zu test_parser hinzu, bearbeiten Sie Modules/parsermodule.c, bis es funktioniert.
  • Fügen Sie einige Verwendungen Ihrer neuen Syntax zu test_grammar.py hinzu.
  • Das Paket compiler. Ein guter Test ist, die Standardbibliothek und die Testsuite mit dem compiler-Paket zu kompilieren und dann zu überprüfen, ob es läuft. Beachten Sie, dass dies nur in Python 2.x erfolgen muss.
  • Wenn Sie so weit gegangen sind, die Token-Struktur von Python zu ändern, dann muss das Bibliotheksmodul Lib/tokenizer.py geändert werden.
  • Bestimmte Änderungen erfordern möglicherweise Anpassungen am Bibliotheksmodul pyclbr.
  • Dokumentation muss geschrieben werden!
  • Nachdem alles eingecheckt wurde, werden Sie wahrscheinlich eine neue Änderung an Python/Python-ast.c sehen. Das liegt daran, dass diese (generierte) Datei die SVN-Version des Quellcodes enthält, aus dem sie generiert wurde. Es gibt keinen Weg, dies zu vermeiden; Sie müssen diese Datei separat einreichen.

Referenzen


Source: https://github.com/python/peps/blob/main/peps/pep-0306.rst

Last modified: 2025-02-01 08:59:27 GMT