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