token --- 用于 Python 解析树的常量

源码: Lib/token.py


该模块提供了一些代表解析树的叶子节点的数字值的常量(终端形符)。 请参阅 Python 发布版中的 Grammar/Tokens 文件获取在该语言语法情境下的名称定义。 这些名称所映射的特定数字值有可能在各 Python 版本间发生变化。

该模块还提供从数字代码到名称和一些函数的映射。 这些函数镜像了 Python C 头文件中的定义。

请注意一个词元的值可能取决于分词器选项。 例如,"+" 词元可能被报告为 PLUSOP,而 "match" 词元可能被报告为 NAMESOFT_KEYWORD

token.tok_name

将此模块中定义的常量的数值映射回名称字符串的字典,允许生成更加人类可读的解析树表示。

token.ISTERMINAL(x)

对终端形符值返回 True

token.ISNONTERMINAL(x)

对非终端形符值返回 True

token.ISEOF(x)

如果 x 是表示输入结束的标记则返回 True

形符常量有:

token.NAME

表示一个 标识符 的词元值。 请注意关键字也会被初始分词化为 NAME 词元。

token.NUMBER

表示一个 数字字面值 的词元值。

token.STRING

表示一个 字符串或字节串字面值 的词元值,不包括 格式化字符串字面值。 该词元字符串不会被解读:它包括两边的引号以及前缀(如果有的话);反斜杠将按照字面值被包括,而不会处理转义序列。

token.OP

表示一个 运算符分隔符 的泛用词元。

这个值仅会由 tokenize 模块报告。 在内部,分词器会改用 实际词元类型

token.COMMENT

用于表示注释的词元值。 解析器会忽略 COMMENT 词元。

token.NEWLINE

表示一个 逻辑行 结束的词元值。

token.NL

用于表示非终结换行符的词元值。 NL 词元会在一个代码逻辑行跨越了多个物理行时被生成。 解析器会忽略 NL 词元。

token.INDENT

用于在一个 逻辑行 的开头表示 缩进块 的开始的词元值。

token.DEDENT

用于在一个 逻辑行 的开头表示 缩进块 的结束的词元值。

token.FSTRING_START

用于表示一个 格式化字符串字面值 的开始的词元值。

该词元值包括前缀和开始引号,但不包括字面值的内容。

token.FSTRING_MIDDLE

用于一个 格式化字面值 内部的字面文本包括格式说明的词元值。

替换字段(即格式化字符串的非字面值部分)使用与其他表达式相同的词元,并由 LBRACE, RBRACE, EXCLAMATIONCOLON 词元来分隔。

token.FSTRING_END

用于表示一个 格式化字符串 的结束的词元值。

该词元字符串包含结束引号。

token.ENDMARKER

表示输入结束的词元值。

token.ENCODING

指示用于将源字节解码为文本的编码的形符值。 tokenize.tokenize() 返回的第一个形符将始终是一个 ENCODING 形符。

该词元类型不被 C 分词器所使用但却是 tokenize 模块所需要的。

下列词元类型不会由 tokenize 模块产生,它们是为分词器或解析器内的特殊用处而定义的。

token.TYPE_IGNORE

指明一个 type: ignore 注释已被识别的词元值。 此种词元仅在设置了 PyCF_TYPE_COMMENTS 旗标时会代替常规的 COMMENT 词元被产生。

token.TYPE_COMMENT

指明一个类型注释已被识别的词元值。 此种词元仅在设置了 PyCF_TYPE_COMMENTS 旗标时会代替常规的 COMMENT 词元被产生。

token.SOFT_KEYWORD

指明一个 软关键字 的词元值。

分词器绝不会产生该值。 要检测一个软关键字,请将一个 NAME 词元字符串传给 keyword.issoftkeyword()

token.ERRORTOKEN

用于表示错误输入的词元值。

tokenize 模块通常用引发异常而不是发出这个词元来指明错误。 它也可以发出 OPNAME 等词元并附带将被解析器拒绝的字符串。

The remaining tokens represent specific operators and delimiters. (The tokenize module reports these as OP; see exact_type in the tokenize documentation for details.)

形符

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

"!"

The following non-token constants are provided:

token.N_TOKENS

The number of token types defined in this module.

token.EXACT_TOKEN_TYPES

将形符字符串表示形式映射到其数字代码的字典。

Added in version 3.8.

在 3.5 版本发生变更: 增加了 AWAITASYNC 形符。

在 3.7 版本发生变更: 形符 COMMENTNLENCODING 形符。

在 3.7 版本发生变更: 移除了 AWAITASYNC 形符。 "async" 和 "await" 被形符化为 NAME 形符。

在 3.8 版本发生变更: 增加了 TYPE_COMMENT, TYPE_IGNORE, COLONEQUAL。 重新增加了 AWAITASYNC 形符(需要用它们来支持解析 ast.parse()feature_version 设为 6 或更低的较旧 Python 版本)。

在 3.12 版本发生变更: Added EXCLAMATION.

在 3.13 版本发生变更: 重新移除了 AWAITASYNC 形符。