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.