token — Konstanten für Python-Parsebäume¶
Quellcode: Lib/token.py
Dieses Modul stellt Konstanten bereit, die für die Zahlenwerte der Blattknoten des Parsebaums stehen (die terminalen Tokens). Wie die Namen im Zusammenhang der Sprachgrammatik definiert sind, steht in der Datei Grammar/Tokens der Python-Distribution. Welche Zahlenwerte den Namen genau zugeordnet sind, kann sich von einer Python-Version zur nächsten ändern.
Außerdem enthält das Modul eine Zuordnung von Zahlencodes zu Namen sowie einige Funktionen. Die Funktionen entsprechen Definitionen in den C-Headerdateien von Python.
Beachte, dass der Wert eines Tokens von den Einstellungen des Tokenizers abhängen kann. So kann ein Token "+" entweder als PLUS oder als OP gemeldet werden, und ein Token "match" entweder als NAME oder als SOFT_KEYWORD.
- token.tok_name¶
Ein Dictionary, das die Zahlenwerte der in diesem Modul definierten Konstanten wieder auf Namenszeichenketten abbildet. Damit lassen sich Parsebäume in besser lesbarer Form ausgeben.
- token.ISTERMINAL(x)¶
Gibt
Truefür terminale Tokenwerte zurück.
- token.ISNONTERMINAL(x)¶
Gibt
Truefür nichtterminale Tokenwerte zurück.
- token.ISEOF(x)¶
Gibt
Truezurück, wenn x die Markierung für das Ende der Eingabe ist.
Die Token-Konstanten sind:
- token.NAME¶
Tokenwert, der einen Namen oder ein Schlüsselwort kennzeichnet.
- token.NUMBER¶
Tokenwert, der ein numerisches Literal kennzeichnet
- token.STRING¶
Tokenwert, der ein String- oder Byte-Literal kennzeichnet, nicht aber formatierte String-Literale. Die Zeichenkette des Tokens wird nicht ausgewertet: Sie enthält die umgebenden Anführungszeichen und, falls angegeben, das Präfix. Backslashes stehen wörtlich darin, Escape-Sequenzen werden nicht verarbeitet.
- token.OP¶
Ein allgemeiner Tokenwert, der einen Operator oder ein Trennzeichen kennzeichnet.
Dieser Wert wird nur vom Modul
tokenizegemeldet. Intern verwendet der Tokenizer stattdessen die genauen Tokentypen.
- token.COMMENT¶
Tokenwert für einen Kommentar. Der Parser übergeht
COMMENT-Tokens.
- token.NEWLINE¶
Tokenwert, der das Ende einer logischen Zeile kennzeichnet.
- token.NL¶
Tokenwert für einen Zeilenumbruch, der die Zeile nicht abschließt.
NL-Tokens entstehen, wenn eine logische Codezeile über mehrere physische Zeilen fortgeführt wird. Der Parser übergehtNL-Tokens.
- token.INDENT¶
Tokenwert am Anfang einer logischen Zeile, der den Beginn eines eingerückten Blocks kennzeichnet.
- token.DEDENT¶
Tokenwert am Anfang einer logischen Zeile, der das Ende eines eingerückten Blocks kennzeichnet.
- token.FSTRING_START¶
Tokenwert, der den Beginn eines f-String-Literals kennzeichnet.
Die Zeichenkette des Tokens enthält das Präfix und die öffnenden Anführungszeichen, aber nichts vom Inhalt des Literals.
- token.FSTRING_MIDDLE¶
Tokenwert für wörtlichen Text innerhalb eines f-String-Literals, einschließlich der Formatangaben.
Ersetzungsfelder, also die nicht wörtlichen Teile von f-Strings, verwenden dieselben Tokens wie andere Ausdrücke und werden von den Tokens
LBRACE,RBRACE,EXCLAMATIONundCOLONbegrenzt.
- token.FSTRING_END¶
Tokenwert, der das Ende eines f-Strings kennzeichnet.
Die Zeichenkette des Tokens enthält die schließenden Anführungszeichen.
- token.TSTRING_START¶
Tokenwert, der den Beginn eines Template-String-Literals kennzeichnet.
Die Zeichenkette des Tokens enthält das Präfix und die öffnenden Anführungszeichen, aber nichts vom Inhalt des Literals.
Added in version 3.14.
- token.TSTRING_MIDDLE¶
Tokenwert für wörtlichen Text innerhalb eines Template-String-Literals, einschließlich der Formatangaben.
Ersetzungsfelder, also die nicht wörtlichen Teile von t-Strings, verwenden dieselben Tokens wie andere Ausdrücke und werden von den Tokens
LBRACE,RBRACE,EXCLAMATIONundCOLONbegrenzt.Added in version 3.14.
- token.TSTRING_END¶
Tokenwert, der das Ende eines Template-String-Literals kennzeichnet.
Die Zeichenkette des Tokens enthält die schließenden Anführungszeichen.
Added in version 3.14.
- token.ENDMARKER¶
Tokenwert, der das Ende der Eingabe kennzeichnet. Wird in den Grammatikregeln der obersten Ebene verwendet.
- token.ENCODING¶
Tokenwert, der die Kodierung angibt, mit der die Quell-Bytes in Text dekodiert werden. Das erste Token, das
tokenize.tokenize()zurückgibt, ist immer einENCODING-Token.Dieser Tokentyp wird vom C-Tokenizer nicht verwendet, ist aber für das Modul
tokenizenötig.
Die folgenden Tokentypen erzeugt das Modul tokenize nicht. Sie sind für besondere Zwecke im Tokenizer oder im Parser definiert:
- token.TYPE_IGNORE¶
Tokenwert, der anzeigt, dass ein Kommentar
type: ignoreerkannt wurde. Solche Tokens entstehen nur mit dem FlagPyCF_TYPE_COMMENTSanstelle gewöhnlicherCOMMENT-Tokens.
- token.TYPE_COMMENT¶
Tokenwert, der anzeigt, dass ein Typkommentar erkannt wurde. Solche Tokens entstehen nur mit dem Flag
PyCF_TYPE_COMMENTSanstelle gewöhnlicherCOMMENT-Tokens.
- token.SOFT_KEYWORD¶
Tokenwert, der ein weiches Schlüsselwort kennzeichnet.
Der Tokenizer erzeugt diesen Wert nie. Um auf ein weiches Schlüsselwort zu prüfen, übergib die Zeichenkette eines
NAME-Tokens ankeyword.issoftkeyword().
- token.ERRORTOKEN¶
Tokenwert, der fehlerhafte Eingabe kennzeichnet.
Das Modul
tokenizezeigt Fehler in der Regel an, indem es Ausnahmen auslöst, statt dieses Token auszugeben. Es kann auch Tokens wieOPoderNAMEmit Zeichenketten ausgeben, die der Parser später zurückweist.
Die übrigen Tokens stehen für bestimmte Operatoren und Trennzeichen. Das Modul tokenize meldet sie als OP; Näheres dazu steht unter exact_type in der Dokumentation von tokenize.
Token |
Wert |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Außerdem gibt es die folgenden Konstanten, die keine Tokens sind:
- token.N_TOKENS¶
Die Anzahl der in diesem Modul definierten Tokentypen.
- token.EXACT_TOKEN_TYPES¶
Ein Dictionary, das die Zeichenkettendarstellung eines Tokens auf seinen Zahlencode abbildet.
Added in version 3.8.
Geändert in Version 3.5: Die Tokens AWAIT und ASYNC wurden hinzugefügt.
Geändert in Version 3.7: Die Tokens AWAIT und ASYNC wurden entfernt. „async“ und „await“ werden jetzt als NAME-Tokens zerlegt.
Geändert in Version 3.8: TYPE_COMMENT, TYPE_IGNORE und COLONEQUAL wurden hinzugefügt. Die Tokens AWAIT und ASYNC sind wieder dabei: Sie werden gebraucht, damit ast.parse() mit feature_version 6 oder kleiner ältere Python-Versionen parsen kann.
Geändert in Version 3.12: EXCLAMATION wurde hinzugefügt.
Geändert in Version 3.13: Die Tokens AWAIT und ASYNC wurden wieder entfernt.