Лексический блок

Входом компилятора служит цепочка символов. Лексический блок (сканер) осуществляет лексический анализ, т.е. разбивает цепочку символов на слова, из которых она состоит.

Пример: 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).□

Синтаксический блок должен учитывать структуру языка, так же, как при переводе с естественного языка учитываются его грамматические особенности (место сказуемого, подлежащего и т.п.).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: