token
--- 与 Python 解析树一同使用的常量¶
源代码: Lib/token.py
此模块提供表示解析树叶节点(终端符号)的数值的常量。请参阅 Python 发行版中的 Grammar/Tokens
文件,了解这些名称在语言语法上下文中的定义。名称所映射的特定数值在不同 Python 版本之间可能会发生改变。
该模块还提供了一个从数字代码到名称的映射以及一些函数。这些函数反映了 Python C 头文件中的定义。
请注意,一个 token 的值可能取决于分词器选项。例如,一个 "+"
token 可能会被报告为 PLUS
或 OP
,一个 "match"
token 可能会被报告为 NAME
或 SOFT_KEYWORD
。
- token.tok_name¶
将此模块中定义的常量的数值映射回名称字符串的字典,从而可以生成更易于人类阅读的解析树表示。
- token.ISTERMINAL(x)¶
对于终端符号值,返回
True
。
- token.ISNONTERMINAL(x)¶
对于非终端符号值,返回
True
。
- token.ISEOF(x)¶
如果 x 是表示输入结束的标记,则返回
True
。
token 常量有:
- token.STRING¶
指示字符串或字节串字面值的 token 值,不包括格式化字符串字面值。该 token 字符串不会被解释:它包含周围的引号和前缀(如果给定);反斜杠按原样包含,不处理转义序列。
- token.OP¶
-
CPython 实现细节: 此值仅由
tokenize
模块报告。在内部,分词器使用确切的 token 类型。
- token.COMMENT¶
用于指示注释的 token 值。解析器会忽略
COMMENT
token。
- token.NL¶
用于指示非终止换行的 token 值。当一个逻辑代码行跨越多个物理行时,会生成
NL
token。解析器会忽略NL
token。
- token.FSTRING_START¶
用于指示f-string 字面值开始的 token 值。
CPython 实现细节: token 字符串包括前缀和起始引号,但不包括字面值的任何内容。
- token.FSTRING_MIDDLE¶
用于f-string 字面值内部的字面文本的 token 值,包括格式说明。
CPython 实现细节: 替换字段(即 f-string 的非字面值部分)使用与其他表达式相同的 token,并由
LBRACE
、RBRACE
、EXCLAMATION
和COLON
token 分隔。
- token.TSTRING_START¶
用于指示模板字符串字面值开始的 token 值。
CPython 实现细节: token 字符串包括前缀和起始引号,但不包括字面值的任何内容。
在 3.14 版本加入。
- token.TSTRING_MIDDLE¶
用于模板字符串字面值内部的字面文本的 token 值,包括格式说明。
CPython 实现细节: 替换字段(即 t-string 的非字面值部分)使用与其他表达式相同的 token,并由
LBRACE
、RBRACE
、EXCLAMATION
和COLON
token 分隔。在 3.14 版本加入。
- token.TSTRING_END¶
用于指示模板字符串字面值结束的 token 值。
CPython 实现细节: token 字符串包含结束引号。
在 3.14 版本加入。
- 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。它也可能发出OP
或NAME
等 token,其字符串稍后会被解析器拒绝。
其余的 token 代表特定的运算符和分隔符。(tokenize
模块将这些报告为 OP
;有关详细信息,请参阅 tokenize
文档中的 exact_type
。)
Token |
值 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
提供了以下非 token 常量
- token.N_TOKENS¶
此模块中定义的 token 类型数量。
- token.EXACT_TOKEN_TYPES¶
一个将 token 的字符串表示映射到其数字代码的字典。
在 3.8 版本加入。
在 3.5 版本发生变更: 添加了 AWAIT
和 ASYNC
token。
在 3.7 版本发生变更: 移除了 AWAIT
和 ASYNC
token。“async” 和 “await” 现在被标记为 NAME
token。
在 3.8 版本发生变更: 添加了 TYPE_COMMENT
、TYPE_IGNORE
、COLONEQUAL
。重新添加了 AWAIT
和 ASYNC
token(为了支持使用 feature_version
设置为 6 或更低版本的 ast.parse()
来解析旧版 Python,这些 token 是必需的)。
在 3.12 版本发生变更: 添加了 EXCLAMATION
。
在 3.13 版本发生变更: 再次移除了 AWAIT
和 ASYNC
token。