# Pygments, типы токенов при подсветке кода

Основная идея подсветки кода, как это реализовано в Pygments, заключается в том, что исходный текст сначала разбивается на небольшие фрагменты — токены, а каждому токену присваивается тип токена, который определяет его семантическую роль в коде (например, ключевое слово, строка или комментарий).

Тип токена затем используется для определения того, как этот фрагмент кода должен быть стилизован (например, "красный и жирный" для ключевых слов).
В Pygments используется иерархическая система типов токенов, где каждый тип является подтипом более общего. Основные (глобальные) типы токенов и их подтипы включают: 
Основные типы токенов Pygments

| **Token**             | **Подтип**             | **Описание**                                                         |
| --------------------- | ---------------------- | -------------------------------------------------------------------- |
| **Token.Keyword**     | —                      | Ключевые слова языка программирования.                               |
|                       | Keyword.Builtin        | Встроенное ключевое слово.                                           |
|                       | Keyword.Control        | Управляющая конструкция (например, `if`, `for`).                     |
|                       | Keyword.Type           | Ключевое слово, обозначающее тип (например, `class`, `def`).         |
| **Token.Name**        | —                      | Идентификаторы: переменные, функции, классы.                         |
|                       | Name.Function          | Имя функции.                                                         |
|                       | Name.Variable          | Имя переменной.                                                      |
|                       | Name.Class             | Имя класса.                                                          |
| **Token.Literal**     | —                      | Литералы — постоянные значения.                                      |
|                       | Literal.String         | Строковый литерал (например, `"Hello"`).                             |
|                       | Literal.Number         | Числовой литерал.                                                    |
|                       | Literal.Number.Integer | Целое число.                                                         |
|                       | Literal.Number.Float   | Число с плавающей запятой.                                           |
| **Token.Comment**     | —                      | Комментарии в коде.                                                  |
|                       | Comment.Single         | Однострочный комментарий.                                            |
|                       | Comment.Multi          | Многострочный комментарий.                                           |
|                       | Comment.Doc            | Документирующий комментарий.                                         |
| **Token.Operator**    | —                      | Оператор (например, `+`, `-`, `*`, `==`).                            |
| **Token.Punctuation** | —                      | Пунктуация (например, `[`, `(`, `,`, `;`).                           |
| **Token.Text**        | —                      | Текст, не относящийся к другим токенам.                              |
|                       | Text.Whitespace        | Пробельные символы.                                                  |
| **Token.Generic**     | —                      | Специальные токены, часто для оформления вывода.                     |
|                       | Generic.Heading        | Заголовок.                                                           |
|                       | Generic.Error          | Текст ошибки.                                                        |
| **Token.Error**       | —                      | Ошибочный токен, сигнализирующий о синтаксической ошибке.            |
| **Token.Other**       | —                      | Прочие данные, не распознанные парсером (например, HTML внутри PHP). |
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9