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.asdlbenötigt möglicherweise Änderungen, um mitGrammarübereinzustimmen. Führen Siemakeaus, umInclude/Python-ast.hundPython/Python-ast.cneu zu generieren.Python/ast.cbenötigt Änderungen, um die AST-Objekte zu erstellen, die mit derGrammar-Änderung zusammenhängen.Lib/compiler/ast.pybenötigt entsprechende Änderungen an den reinen Python-AST-Objekten.Parser/pgenmuss erneut ausgeführt werden, umInclude/graminit.hundPython/graminit.cneu 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 diecompiler_*-Funktionen erstellen oder ändern, um Opcodes für Ihre Produktionen zu generieren.- Möglicherweise müssen Sie
Lib/symbol.pyund/oderLib/token.pyund/oderLib/keyword.pyneu generieren. - Das Modul
parser. Fügen Sie etwas von Ihrer neuen Syntax zutest_parserhinzu, bearbeiten SieModules/parsermodule.c, bis es funktioniert. - Fügen Sie einige Verwendungen Ihrer neuen Syntax zu
test_grammar.pyhinzu. - Das Paket
compiler. Ein guter Test ist, die Standardbibliothek und die Testsuite mit demcompiler-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.pygeä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.csehen. 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
Urheberrecht
Dieses Dokument wurde gemeinfrei erklärt.
Source: https://github.com/python/peps/blob/main/peps/pep-0306.rst
Last modified: 2025-02-01 08:59:27 GMT