token — Constantes usadas com árvores de análises do Python

Código-fonte: Lib/token.py


Este módulo fornece constantes que representam os valores numéricos dos nós das folhas da árvore de análise (tokens terminais). Consulte o arquivo Grammar/Tokens na distribuição Python para obter as definições dos nomes no contexto da gramática da linguagem. Os valores numéricos específicos para os quais os nomes são mapeados podem mudar entre as versões do Python.

O módulo também fornece um mapeamento de códigos numéricos para nomes e algumas funções. As funções espelham definições nos arquivos de cabeçalho do Python C.

Observe que o valor de um token pode depender das opções do tokenizador. Por exemplo, um token "+" pode ser relatado como PLUS ou OP, ou um token "match" pode ser NAME ou SOFT_KEYWORD.

token.tok_name

Dicionário que mapeia os valores numéricos das constantes definidas neste módulo de volta para cadeias de nomes, permitindo que seja gerada uma representação mais legível de árvores de análise.

token.ISTERMINAL(x)

Retorna True para valores de tokens terminais.

token.ISNONTERMINAL(x)

Retorna True para valores de tokens não terminais.

token.ISEOF(x)

Retorna True se x for o marcador que indica o final da entrada.

Os constantes de tokens são:

token.NAME

Valor de token que indica um identificador. Observe que as palavras reservadas também são inicialmente tokenizadas como tokens NAME.

token.NUMBER

Valor de token que indica um literal numérico

token.STRING

Valor de token que indica um literal de string ou byte, excluindo literais de strings formatadas. A string de token não é interpretada: ela inclui as aspas ao redor e o prefixo (se fornecido); contrabarras são incluídas literalmente, sem processar sequências de escape.

token.OP

Um valor de token genérico que indica um operador ou delimitador.

Este valor é relatado apenas pelo módulo tokenize. Internamente, o tokenizador usa tipos exatos de tokens em vez disso.

token.COMMENT

Valor de token usado para indicar um comentário. O analisador sintático ignora tokens COMMENT.

token.NEWLINE

Valor de token que indica o fim de uma linha lógica.

token.NL

Valor de token usado para indicar uma nova linha não terminante. Os tokens NL são gerados quando uma linha lógica de código é continuada em várias linhas físicas. O analisador sintático ignora os tokens NL.

token.INDENT

Valor de token usado no início de uma linha lógica para indicar o início de um bloco indentado.

token.DEDENT

Valor de token usado no início de uma linha lógica para indicar o fim de um bloco indentado.

token.FSTRING_START

Valor de token usado para indicar o início de um literal de f-string.

A string de token inclui o prefixo e as aspas iniciais, mas nenhum conteúdo do literal.

token.FSTRING_MIDDLE

Valor de token usado para texto literal dentro de um literal de f-string, incluindo especificações de formato.

Campos de substituição (ou seja, as partes não literais de f-strings) usam os mesmos tokens que outras expressões e são delimitados pelos tokens LBRACE, RBRACE, EXCLAMATION e COLON.

token.FSTRING_END

Valor de token usado para indicar o fim de um literal de f-string.

A string do token contém as aspas de fechamento.

token.ENDMARKER

Token value that indicates the end of input. Used in top-level grammar rules.

token.ENCODING

Valor de token que indica a codificação usada para decodificar os bytes de origem em texto. O primeiro token retornado por tokenize.tokenize() sempre será um token ENCODING.

Este tipo de token não é usado pelo tokenizador do C, mas é necessário para o módulo tokenize.

Os seguintes tipos de token não são produzidos pelo módulo tokenize e são definidos para usos especiais no tokenizador ou analisador:

token.TYPE_IGNORE

Valor de token indicando que um comentário type: ignore foi reconhecido. Tais tokens são produzidos em vez de tokens COMMENT regulares somente com o sinalizador PyCF_TYPE_COMMENTS.

token.TYPE_COMMENT

Valor de token indicando que um comentário de tipo foi reconhecido. Tais tokens são produzidos em vez de tokens COMMENT regulares somente com o sinalizador PyCF_TYPE_COMMENTS.

token.SOFT_KEYWORD

Valor de token indicando uma palavra reservada contextual.

O tokenizador nunca produz esse valor. Para verificar uma palavra reservada contextual, passe uma string do token NAME para keyword.issoftkeyword().

token.ERRORTOKEN

Valor de token usado para indicar uma entrada errada.

O módulo tokenize geralmente indica erros levantando exceções em vez de emitir este token. Ele também pode emitir tokens como OP ou NAME com strings que são rejeitadas posteriormente pelo parser.

Os tokens restantes representam operadores e delimitadores específicos. (O módulo tokenize os relata como OP; consulte exact_type na documentação tokenize para obter detalhes.)

Token

Valor

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

"!"

As seguintes constantes não-tokens são fornecidas:

token.N_TOKENS

O número de tipos de token definidos neste módulo.

token.EXACT_TOKEN_TYPES

Um dicionário que mapeia a representação de string de um token para seu código numérico.

Adicionado na versão 3.8.

Alterado na versão 3.5: Adicionados os tokens AWAIT e ASYNC.

Alterado na versão 3.7: Adicionados os tokens COMMENT, NL e ENCODING.

Alterado na versão 3.7: Removido os tokens AWAIT e ASYNC. “async” e “await” são agora tokenizados como tokens NAME.

Alterado na versão 3.8: Adicionados TYPE_COMMENT, TYPE_IGNORE, COLONEQUAL. Adicionados os tokens AWAIT e ASYNC (eles são necessários para dar suporte à análise de versões mais antigas do Python para ast.parse() com feature_version definido como 6 ou inferior).

Alterado na versão 3.12: Adicionado EXCLAMATION.

Alterado na versão 3.13: Removidos novamente os tokens AWAIT e ASYNC.