Blame

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