Blame

8854ed feagor 2025-12-07 11:38:22 1
# Pygments, типы токенов при подсветке кода
b68e25 feagor 2025-12-07 11:27:03 2
3
Основная идея подсветки кода, как это реализовано в Pygments, заключается в том, что исходный текст сначала разбивается на небольшие фрагменты — токены, а каждому токену присваивается тип токена, который определяет его семантическую роль в коде (например, ключевое слово, строка или комментарий).
4
5
Тип токена затем используется для определения того, как этот фрагмент кода должен быть стилизован (например, "красный и жирный" для ключевых слов).
6
В Pygments используется иерархическая система типов токенов, где каждый тип является подтипом более общего. Основные (глобальные) типы токенов и их подтипы включают:
7
Основные типы токенов Pygments
105c78 feagor 2025-12-07 11:29:38 8
ba67c2 feagor 2025-12-07 11:29:03 9
| **Token** | **Подтип** | **Описание** |
10
| --------------------- | ---------------------- | -------------------------------------------------------------------- |
11
| **Token.Keyword** | — | Ключевые слова языка программирования. |
12
| | Keyword.Builtin | Встроенное ключевое слово. |
13
| | Keyword.Control | Управляющая конструкция (например, `if`, `for`). |
14
| | Keyword.Type | Ключевое слово, обозначающее тип (например, `class`, `def`). |
15
| **Token.Name** | — | Идентификаторы: переменные, функции, классы. |
16
| | Name.Function | Имя функции. |
17
| | Name.Variable | Имя переменной. |
18
| | Name.Class | Имя класса. |
19
| **Token.Literal** | — | Литералы — постоянные значения. |
20
| | Literal.String | Строковый литерал (например, `"Hello"`). |
21
| | Literal.Number | Числовой литерал. |
22
| | Literal.Number.Integer | Целое число. |
23
| | Literal.Number.Float | Число с плавающей запятой. |
24
| **Token.Comment** | — | Комментарии в коде. |
25
| | Comment.Single | Однострочный комментарий. |
26
| | Comment.Multi | Многострочный комментарий. |
27
| | Comment.Doc | Документирующий комментарий. |
28
| **Token.Operator** | — | Оператор (например, `+`, `-`, `*`, `==`). |
29
| **Token.Punctuation** | — | Пунктуация (например, `[`, `(`, `,`, `;`). |
30
| **Token.Text** | — | Текст, не относящийся к другим токенам. |
31
| | Text.Whitespace | Пробельные символы. |
32
| **Token.Generic** | — | Специальные токены, часто для оформления вывода. |
33
| | Generic.Heading | Заголовок. |
34
| | Generic.Error | Текст ошибки. |
35
| **Token.Error** | — | Ошибочный токен, сигнализирующий о синтаксической ошибке. |
36
| **Token.Other** | — | Прочие данные, не распознанные парсером (например, HTML внутри PHP). |