# `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

  Valor de token que indica o fim da entrada.

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`.