пометка: на странице 101 в книге Замятин, Шур, описывается нужная тема.
Задача лексического анализа состоит в выделении во входной цепочке минимальных смысловых единиц, называемых лексемами и определении соответсвующих лексемам синтаксических категорий языка - токенов. Попутно из текста исходной программы удаляются комментарии и пробелы, не имеющие смысловой нагрузки, а также обнаруживаются ошибки некоторых видов. Преобразованная лексическим анализатором программа является цепочкой уже не в исходном алфавите, а в алфавите токенов.
Если более кратко то:
$x_1 \ and \ y_{max} \rArr z_{min} \ or \ x_1$
Задача лексического анализа:
$\def\arraystretch{1.5} \begin{array}{c:c:c} \text{пример лексемы} & \text{токен} & \text{шаблон} \\ \hline y_{max} & \text{операнд.} & letter(letter + digit)^* \\ \hdashline 1,05 & \text{числа} & ДКА \end{array}$
Регистрация лексемы:
«атрибуты» - параметры для лексемы
Предположим, что на вход компилятора подана цепочка:
if a13 > 2300 then ab12:= 1400
На стадии синтаксического анализа несущественно, что слева о знака неравенства стоит переменная, имя которой есть последовательность из буквы и двух цифр, а существенно только то, что это идентификатор. Точно так же неважно, что справа от знака неравенства стоит число 2300, а не 2301, а важно только то, что это числовая константа.