Токенизация
Токенизация — это разбиение [[source-code:исходного кода]] на отдельные лексемы перед синтаксическим анализом. Каждая найденная часть получает тип, например «число», «идентификатор», «оператор» или «ключевое слово».
Токенизатор читает программу слева направо и группирует символы по правилам языка. Пробелы и комментарии обычно отделяются и не передаются дальше, если они не влияют на смысл программы. Для каждого токена могут сохраняться его текст, тип и позиция в исходном коде. Полученная последовательность используется синтаксическим анализатором, который проверяет [[programming-language-structure:структуру языка программирования]] и правильность построения конструкций.
В строке total = price + 10 токенизатор выделит: total — идентификатор, = — оператор присваивания, price — идентификатор, + — оператор сложения, 10 — числовой литерал. Пробелы между ними не являются значимыми токенами.
Лексема — это выделенная единица текста или её содержательная категория, например идентификатор total. Токенизация — процесс, который такие единицы находит и обычно классифицирует. Слово «токен» часто используют и для самой записи: «токен идентификатор со значением total».
Какие токены можно выделить в выражении a * (b + 2)?
a и b — идентификаторы, 2 — число, * и + — операторы, ( и ) — скобки.Токенизация не проверяет полностью, можно ли выполнить получившуюся конструкцию. Например, она может распознать ключевые слова, имена и знаки даже в программе с нарушенным порядком элементов. Проверка синтаксических связей выполняется на следующем этапе. В частности, оператор распознаётся как лексема, но допустимость его использования определяется структурой выражения.
Главное
- Токенизация разбивает исходный код на токены перед синтаксическим анализом.
- Токены имеют тип: идентификатор, число, ключевое слово, оператор, разделитель и другие.
- Пробелы и комментарии обычно пропускаются, а синтаксическая правильность проверяется позже.