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 True für terminale Tokenwerte zurück.

token.ISNONTERMINAL(x)

Gibt True für nichtterminale Tokenwerte zurück.

token.ISEOF(x)

Gibt True zurü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 tokenize gemeldet. 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 übergeht NL-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, EXCLAMATION und COLON begrenzt.

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, EXCLAMATION und COLON begrenzt.

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 ein ENCODING-Token.

Dieser Tokentyp wird vom C-Tokenizer nicht verwendet, ist aber für das Modul tokenize nö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: ignore erkannt wurde. Solche Tokens entstehen nur mit dem Flag PyCF_TYPE_COMMENTS anstelle gewöhnlicher COMMENT-Tokens.

token.TYPE_COMMENT

Tokenwert, der anzeigt, dass ein Typkommentar erkannt wurde. Solche Tokens entstehen nur mit dem Flag PyCF_TYPE_COMMENTS anstelle gewöhnlicher COMMENT-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 an keyword.issoftkeyword().

token.ERRORTOKEN

Tokenwert, der fehlerhafte Eingabe kennzeichnet.

Das Modul tokenize zeigt Fehler in der Regel an, indem es Ausnahmen auslöst, statt dieses Token auszugeben. Es kann auch Tokens wie OP oder NAME mit 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

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

"!"

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 COMMENT, NL und ENCODING 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.