Входом компилятора служит цепочка символов. Лексический блок (сканер) осуществляет лексический анализ, т.е. разбивает цепочку символов на слова, из которых она состоит.
Пример: begin а:= 6; end ® begin | а |:= | 6 |; | end
Лексический блок устанавливает из каких частей состоит данная цепочка: ключевое слово begin, идентификатор переменной length, знака присваивания :=, целочисленной константы 6, точки с запятой; и ключевого слова end. Таким образом, цепочка из 21 символа была преобразована в цепочку из 6 лексем.
Лексема – совокупность форм и значений, свойственных одному и тому же слову во всех его употреблениях и реализациях.
Пример: ПИЛА – существительное, ж.р., ед.ч. или глагол, 3.л., ед.ч., пр.в.
Каждая лексема состоит из класса и его значения:
лексема= (класс, значение).
Пример: переменная а1: класс идентификатор (19), значение – указатель на элемент таблицы идентификаторов (19,4).
Указатель на таблицу идентификаторов фактически является внутренним именем переменной.
Если рассматривать таблицу лексем как словарь, то лексическая обработка аналогична группировке букв в слова и нахождению этих слов (и их значений) в словаре.
Синтаксический блок
Синтаксический блок (парсер) переводит последовательность лексем, построенную сканером, в последовательность лексем, которая непосредственно отражает порядок, в котором должны выполняться операции в программе.
Пример: A+B*C
Лексический анализ:
А (19, 1)
+ (14, 0)
B (19, 2)
* (15, 0)
C (19, 3)
Синтаксический анализ:
умнож (B, C, R1) – атом №1
слож (A, R1, R2) – атом №2
Таким образом, 5 лексем, выданных лексическим блоком преобразуются в две новые единицы, которые описывают тоже действие.
Эти единицы называют атомами. Они образуют выход блока синтаксического анализа.
Последовательность атомов отражает действия и их порядок.
Каждый атом также состоит из класса и значения.
Атом №1 может принадлежать к классу УМНОЖ и иметь значение, состоящее из трех указателей на элементы таблицы: умнож (2, 3, 1).
При этом третий операнд - указатель на таблицу вспомогательных регистров, а не на таблицу идентификаторов.
Аналогично: слож (1, 4, 2).
Во время обработки компилятором, атом будет представлен числом обозначающих умнож и тремя указателями на элементы таблиц: (5, 2, 3, 1).□
Синтаксический блок должен учитывать структуру языка, так же, как при переводе с естественного языка учитываются его грамматические особенности (место сказуемого, подлежащего и т.п.).