token — Konstanten für Python-Syntaxbäume

Quellcode: Lib/token.py


Dieses Modul stellt Konstanten bereit, die die numerischen Werte von Blattknoten des Syntaxbaums (terminale Tokens) repräsentieren. Im Verzeichnis Grammar/Tokens der Python-Distribution finden Sie die Definitionen der Namen im Kontext der Sprachgrammatik. Die spezifischen numerischen Werte, denen die Namen zugeordnet sind, können sich zwischen Python-Versionen ändern.

Das Modul stellt auch eine Zuordnung von numerischen Codes zu Namen und einige Funktionen bereit. Die Funktionen spiegeln Definitionen in den C-Header-Dateien von Python wider.

Beachten Sie, dass der Wert eines Tokens von den Tokenizer-Optionen abhängen kann. Beispielsweise kann ein "+"-Token entweder als PLUS oder OP gemeldet werden, oder ein "match"-Token kann entweder NAME oder SOFT_KEYWORD sein.

token.tok_name

Dictionary, das die numerischen Werte der in diesem Modul definierten Konstanten auf Namenszeichenketten abbildet, was die Generierung von lesbareren Darstellungen von Syntaxbäumen ermöglicht.

token.ISTERMINAL(x)

Gibt True für terminale Token-Werte zurück.

token.ISNONTERMINAL(x)

Gibt True für nicht-terminale Token-Werte zurück.

token.ISEOF(x)

Gibt True zurück, wenn x der Marker ist, der das Ende der Eingabe anzeigt.

Die Token-Konstanten sind

token.NAME

Token-Wert, der einen Identifier anzeigt. Beachten Sie, dass Schlüsselwörter auch zunächst als NAME-Tokens tokenisiert werden.

token.NUMBER

Token-Wert, der ein numerisches Literal anzeigt

token.STRING

Token-Wert, der ein Zeichenketten- oder Byte-Literal anzeigt, ausgenommen formatierte Zeichenketten-Literale. Der Token-String wird nicht interpretiert: er enthält die umschließenden Anführungszeichen und das Präfix (falls vorhanden); Backslashes werden wörtlich übernommen, ohne Escape-Sequenzen zu verarbeiten.

token.OP

Ein generischer Token-Wert, der einen Operator oder Trennzeichen anzeigt.

CPython Implementierungsdetail: Dieser Wert wird nur vom tokenize-Modul gemeldet. Intern verwendet der Tokenizer exakte Token-Typen.

token.COMMENT

Token-Wert, der zur Anzeige eines Kommentars verwendet wird. Der Parser ignoriert COMMENT-Tokens.

token.NEWLINE

Token-Wert, der das Ende einer logischen Zeile anzeigt.

token.NL

Token-Wert, der zur Anzeige eines nicht-terminierenden Zeilenumbruchs verwendet wird. NL-Tokens werden generiert, wenn eine logische Codezeile über mehrere physische Zeilen fortgesetzt wird. Der Parser ignoriert NL-Tokens.

token.INDENT

Token-Wert, der am Anfang einer logischen Zeile verwendet wird, um den Beginn eines eingerückten Blocks anzuzeigen.

token.DEDENT

Token-Wert, der am Anfang einer logischen Zeile verwendet wird, um das Ende eines eingerückten Blocks anzuzeigen.

token.FSTRING_START

Token-Wert, der zur Anzeige des Beginns eines f-string-Literals verwendet wird.

CPython Implementierungsdetail: Der Token-String enthält das Präfix und die öffnenden Anführungszeichen, aber nicht den Inhalt des Literals.

token.FSTRING_MIDDLE

Token-Wert, der für literalen Text innerhalb eines f-string-Literals verwendet wird, einschließlich Formatierungsangaben.

CPython Implementierungsdetail: Ersetzungsfelder (d. h. die nicht-literalen Teile von f-strings) verwenden dieselben Tokens wie andere Ausdrücke und werden durch LBRACE, RBRACE, EXCLAMATION und COLON-Tokens begrenzt.

token.FSTRING_END

Token-Wert, der zur Anzeige des Endes eines f-strings verwendet wird.

CPython Implementierungsdetail: Der Token-String enthält die schließenden Anführungszeichen.

token.TSTRING_START

Token-Wert, der zur Anzeige des Beginns eines Template-String-Literals verwendet wird.

CPython Implementierungsdetail: Der Token-String enthält das Präfix und die öffnenden Anführungszeichen, aber nicht den Inhalt des Literals.

Hinzugefügt in Version 3.14.

token.TSTRING_MIDDLE

Token-Wert, der für literalen Text innerhalb eines Template-String-Literals verwendet wird, einschließlich Formatierungsangaben.

CPython Implementierungsdetail: Ersetzungsfelder (d. h. die nicht-literalen Teile von t-strings) verwenden dieselben Tokens wie andere Ausdrücke und werden durch LBRACE, RBRACE, EXCLAMATION und COLON-Tokens begrenzt.

Hinzugefügt in Version 3.14.

token.TSTRING_END

Token-Wert, der zur Anzeige des Endes eines Template-String-Literals verwendet wird.

CPython Implementierungsdetail: Der Token-String enthält die schließenden Anführungszeichen.

Hinzugefügt in Version 3.14.

token.ENDMARKER

Token-Wert, der das Ende der Eingabe anzeigt. Wird in Top-Level-Grammatikregeln verwendet.

token.ENCODING

Token-Wert, der die verwendete Kodierung zum Dekodieren von Quellbytes in Text anzeigt. Das erste von tokenize.tokenize() zurückgegebene Token ist immer ein ENCODING-Token.

CPython Implementierungsdetail: Dieser Token-Typ wird nicht vom C-Tokenizer verwendet, ist aber für das tokenize-Modul erforderlich.

Die folgenden Token-Typen werden nicht vom tokenize-Modul erzeugt und sind für spezielle Verwendungen im Tokenizer oder Parser definiert.

token.TYPE_IGNORE

Token-Wert, der anzeigt, dass ein type: ignore-Kommentar erkannt wurde. Solche Tokens werden anstelle von regulären COMMENT-Tokens nur mit dem Flag PyCF_TYPE_COMMENTS erzeugt.

token.TYPE_COMMENT

Token-Wert, der anzeigt, dass ein Typ-Kommentar erkannt wurde. Solche Tokens werden anstelle von regulären COMMENT-Tokens nur mit dem Flag PyCF_TYPE_COMMENTS erzeugt.

token.SOFT_KEYWORD

Token-Wert, der ein weiches Schlüsselwort anzeigt.

Der Tokenizer erzeugt diesen Wert nie. Um nach einem weichen Schlüsselwort zu suchen, übergeben Sie den String eines NAME-Tokens an keyword.issoftkeyword().

token.ERRORTOKEN

Token-Wert, der zur Anzeige falscher Eingaben verwendet wird.

Das tokenize-Modul zeigt Fehler im Allgemeinen durch Auslösen von Ausnahmen an, anstatt dieses Token auszugeben. Es kann auch Tokens wie OP oder NAME mit Strings ausgeben, die später vom Parser zurückgewiesen werden.

Die verbleibenden Tokens repräsentieren spezifische Operatoren und Trennzeichen. (Das tokenize-Modul meldet diese als OP; siehe exact_type in der Dokumentation des tokenize-Moduls für Details.)

Token

Wert

token.LPAR

"("

token.RPAR

")"

token.LSQB

"["

token.RSQB

"]"

token.COLON

":"

token.COMMA

","

token.SEMI

";"

token.PLUS

"+"

token.MINUS

"-"

token.STAR

"*"

token.SLASH

"/"

token.VBAR

"|"

token.AMPER

"&"

token.LESS

"<"

token.GREATER

">"

token.EQUAL

"="

token.DOT

"."

token.PERCENT

"%"

token.LBRACE

"{"

token.RBRACE

"}"

token.EQEQUAL

"=="

token.NOTEQUAL

"!="

token.LESSEQUAL

"<="

token.GREATEREQUAL

">="

token.TILDE

"~"

token.CIRCUMFLEX

"^"

token.LEFTSHIFT

"<<"

token.RIGHTSHIFT

">>"

token.DOUBLESTAR

"**"

token.PLUSEQUAL

"+="

token.MINEQUAL

"-="

token.STAREQUAL

"*="

token.SLASHEQUAL

"/="

token.PERCENTEQUAL

"%="

token.AMPEREQUAL

"&="

token.VBAREQUAL

"|="

token.CIRCUMFLEXEQUAL

"^="

token.LEFTSHIFTEQUAL

"<<="

token.RIGHTSHIFTEQUAL

">>="

token.DOUBLESTAREQUAL

"**="

token.DOUBLESLASH

"//"

token.DOUBLESLASHEQUAL

"//="

token.AT

"@"

token.ATEQUAL

"@="

token.RARROW

"->"

token.ELLIPSIS

"..."

token.COLONEQUAL

":="

token.EXCLAMATION

"!"

Die folgenden Nicht-Token-Konstanten werden bereitgestellt

token.N_TOKENS

Die Anzahl der in diesem Modul definierten Token-Typen.

token.EXACT_TOKEN_TYPES

Ein Dictionary, das die Zeichenkettenrepräsentation eines Tokens auf seinen numerischen Code abbildet.

Hinzugefügt in Version 3.8.

Geändert in Version 3.5: Hinzugefügt wurden die Tokens AWAIT und ASYNC.

Geändert in Version 3.7: Hinzugefügt wurden die Tokens COMMENT, NL und ENCODING.

Geändert in Version 3.7: Die Tokens AWAIT und ASYNC wurden entfernt. "async" und "await" werden nun als NAME-Tokens tokenisiert.

Geändert in Version 3.8: Hinzugefügt wurden TYPE_COMMENT, TYPE_IGNORE, COLONEQUAL. Die Tokens AWAIT und ASYNC wurden wieder hinzugefügt (sie werden benötigt, um ältere Python-Versionen für ast.parse() mit `feature_version` auf 6 oder niedriger gesetzt zu unterstützen).

Geändert in Version 3.12: Hinzugefügt wurde EXCLAMATION.

Geändert in Version 3.13: Die Tokens AWAIT und ASYNC wurden erneut entfernt.