token --- 與 Python 解析樹一同使用的常量

原始碼: Lib/token.py


此模組提供表示解析樹葉節點(終端符號)的數值的常量。請參閱 Python 發行版中的 Grammar/Tokens 檔案,瞭解這些名稱在語言語法上下文中的定義。名稱所對映的特定數值在不同 Python 版本之間可能會發生改變。

該模組還提供了一個從數字程式碼到名稱的對映以及一些函式。這些函式反映了 Python C 標頭檔案中的定義。

請注意,一個 token 的值可能取決於分詞器選項。例如,一個 "+" token 可能會被報告為 PLUSOP,一個 "match" token 可能會被報告為 NAMESOFT_KEYWORD

token.tok_name

將此模組中定義的常量的數值映射回名稱字串的字典,從而可以生成更易於人類閱讀的解析樹表示。

token.ISTERMINAL(x)

對於終端符號值,返回 True

token.ISNONTERMINAL(x)

對於非終端符號值,返回 True

token.ISEOF(x)

如果 x 是表示輸入結束的標記,則返回 True

token 常量有:

token.NAME

指示識別符號的 token 值。注意,關鍵字最初也被標記為 NAME token。

token.NUMBER

指示數字字面值的 token 值。

token.STRING

指示字串或位元組串字面值的 token 值,不包括格式化字串字面值。該 token 字串不會被解釋:它包含周圍的引號和字首(如果給定);反斜槓按原樣包含,不處理轉義序列。

token.OP

指示運算子分隔符的通用 token 值。

CPython 實現細節: 此值僅由 tokenize 模組報告。在內部,分詞器使用確切的 token 型別

token.COMMENT

用於指示註釋的 token 值。解析器會忽略 COMMENT token。

token.NEWLINE

指示邏輯行結束的 token 值。

token.NL

用於指示非終止換行的 token 值。當一個邏輯程式碼行跨越多個物理行時,會生成 NL token。解析器會忽略 NL token。

token.INDENT

邏輯行的開頭使用,用於指示縮排塊的開始。

token.DEDENT

邏輯行的開頭使用,用於指示縮排塊的結束。

token.FSTRING_START

用於指示f-string 字面值開始的 token 值。

CPython 實現細節: token 字串包括字首和起始引號,但不包括字面值的任何內容。

token.FSTRING_MIDDLE

用於f-string 字面值內部的字面文字的 token 值,包括格式說明。

CPython 實現細節: 替換欄位(即 f-string 的非字面值部分)使用與其他表示式相同的 token,並由 LBRACERBRACEEXCLAMATIONCOLON token 分隔。

token.FSTRING_END

用於指示f-string結束的 token 值。

CPython 實現細節: token 字串包含結束引號。

token.TSTRING_START

用於指示模板字串字面值開始的 token 值。

CPython 實現細節: token 字串包括字首和起始引號,但不包括字面值的任何內容。

在 3.14 版本加入。

token.TSTRING_MIDDLE

用於模板字串字面值內部的字面文字的 token 值,包括格式說明。

CPython 實現細節: 替換欄位(即 t-string 的非字面值部分)使用與其他表示式相同的 token,並由 LBRACERBRACEEXCLAMATIONCOLON token 分隔。

在 3.14 版本加入。

token.TSTRING_END

用於指示模板字串字面值結束的 token 值。

CPython 實現細節: token 字串包含結束引號。

在 3.14 版本加入。

token.ENDMARKER

指示輸入結束的 token 值。在頂層語法規則中使用。

token.ENCODING

指示用於將源位元組解碼為文字的編碼的 token 值。tokenize.tokenize() 返回的第一個 token 始終是 ENCODING token。

CPython 實現細節: C 分詞器不使用此 token 型別,但 tokenize 模組需要它。

以下 token 型別不由 tokenize 模組生成,它們是在分詞器或解析器中為特殊用途定義的

token.TYPE_IGNORE

指示識別到 type: ignore 註釋的 token 值。此類 token 僅在設定了 PyCF_TYPE_COMMENTS 標誌時才會生成,以代替常規的 COMMENT token。

token.TYPE_COMMENT

指示識別到型別註釋的 token 值。此類 token 僅在設定了 PyCF_TYPE_COMMENTS 標誌時才會生成,以代替常規的 COMMENT token。

token.SOFT_KEYWORD

指示軟關鍵字的 token 值。

分詞器從不生成此值。要檢查軟關鍵字,請將 NAME token 的字串傳遞給 keyword.issoftkeyword()

token.ERRORTOKEN

用於指示錯誤輸入的 token 值。

tokenize 模組通常透過引發異常來指示錯誤,而不是發出此 token。它也可能發出 OPNAME 等 token,其字串稍後會被解析器拒絕。

其餘的 token 代表特定的運算子分隔符。(tokenize 模組將這些報告為 OP;有關詳細資訊,請參閱 tokenize 文件中的 exact_type。)

Token

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

"!"

提供了以下非 token 常量

token.N_TOKENS

此模組中定義的 token 型別數量。

token.EXACT_TOKEN_TYPES

一個將 token 的字串表示對映到其數字程式碼的字典。

在 3.8 版本加入。

在 3.5 版本發生變更: 添加了 AWAITASYNC token。

在 3.7 版本發生變更: 添加了 COMMENTNLENCODING token。

在 3.7 版本發生變更: 移除了 AWAITASYNC token。“async” 和 “await” 現在被標記為 NAME token。

在 3.8 版本發生變更: 添加了 TYPE_COMMENTTYPE_IGNORECOLONEQUAL。重新添加了 AWAITASYNC token(為了支援使用 feature_version 設定為 6 或更低版本的 ast.parse() 來解析舊版 Python,這些 token 是必需的)。

在 3.12 版本發生變更: 添加了 EXCLAMATION

在 3.13 版本發生變更: 再次移除了 AWAITASYNC token。