Pygments, типы токенов
Основная идея подсветки кода, как это реализовано в Pygments, заключается в том, что исходный текст сначала разбивается на небольшие фрагменты — токены, а каждому токену присваивается тип токена, который определяет его семантическую роль в коде (например, ключевое слово, строка или комментарий).
Тип токена затем используется для определения того, как этот фрагмент кода должен быть стилизован (например, "красный и жирный" для ключевых слов).
В Pygments используется иерархическая система типов токенов, где каждый тип является подтипом более общего. Основные (глобальные) типы токенов и их подтипы включают:
Основные типы токенов Pygments
Общий тип токена (Parent 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-кода).