Исходный текст → токены03 / 19

Scanner: узнаём слова языка

Разделяем символы на ключевые слова, имена, операторы и литералы.

Прежде чем понять выражение, нужно выделить его части. В const hp = 10; scanner распознаёт const, идентификатор hp, знак =, числовой литерал 10 и ;.

Пробелы помогают разделять элементы, но не все правила сводятся к пробелам. Есть строки, комментарии, Unicode, контекст для / и переносы строк, значимые для automatic semicolon insertion. Поэтому «разбить текст по пробелам» — не написать JS-parser.

const hp = 10;
// const · hp · = · 10 · ;

Scanner отвечает на вопрос «какие элементы перед нами?». Parser — на следующий: «какую конструкцию они образуют?». Обработка исходного текста и выполнение программы — разные задачи: scanner и parser не выполняют игровую логику.

В симуляции рассмотрим токены последовательно. Это фиксированный учебный пример, а не универсальный scanner.

Как сканер выделяет токены

Одно нажатие — один токен.

Исходный текст

const hp = 10;

Токены

Пока ни одного токена.

Исходный текст ещё не разобран. Начнём с первого токена.

Выделено 0 из 5
Основной вывод

Токенизация распознаёт элементы языка, но сама по себе ещё не вычисляет выражение.

Проверить по первоисточнику ↗

V8 · Scanner↗Команда V8 о токенизации и пути от текста к AST.ECMA-262 · Lexical Grammar↗Нормативные правила токенов, комментариев и переносов строк.