ВУЗ:
Составители:
11
Методические указания
Грамматический разбор исходной программы на соответствующие
синтаксические классы называется лексическим анализом. Компилятор про-
сматривает исходную строку и делит ее на части, как показано на рис. 1 вер-
тикальными линиями.
Program¦WCM¦;
Var
Cost¦,¦Rate¦,¦Start¦,¦Finish¦:¦Integer¦;
Begin
Cost¦:=¦Rate¦*¦(¦Start¦-¦Finish¦)¦+¦2¦*¦Rate¦*¦(¦Start¦-¦Finish¦-¦
100¦)¦;
WriteLn¦(¦Cost¦)
End¦.
Рис. 1
При этом используются средства обработки строк. Исходная програм-
ма просматривается последовательно. Базовые элементы, или лексические
единицы, разделяются пробелами, знаками операций и специальными симво-
лами. Таким образом, выделяются идентификаторы, литералы и терминаль-
ные символы (операции и ключевые слова). Базовые элементы (идентифика-
торы и литералы) помещаются в таблицы. Поскольку другие фазы компиля-
тора определяют способ использования и значения этих элементов, вся бу-
дущая информация о них также помещается в эти таблицы.
Последующие фазы компилятора используют свойства базовых эле-
ментов и поэтому должны иметь доступ к информации о них. Этим фазам
компилятора передается или вся информация о каждом элементе, или, что
более типично, сама исходная программа преобразуется в таблицу `стандарт-
ных символов`. Стандартные символы имеют фиксированную длину и состо-
12
ят из указателя синтаксического типа и указателя элемента таблицы соответ-
ствующего базовому элементу (рис.2).
Типы стандартных символов:
• идентификаторы (IDN
• терминальные символы (TRM)
• литералы (LIT)
Тип Указатель
TRM
Æ
Program
IDN
Æ
WCM
TRM
Æ
;
TRM
Æ
Var
IDN
Æ
Сost
Рис.2
Так как все стандартные символы имеют фиксированную длину, обра-
щение к ним в последующих фазах компилятора становится более простым.
Также упрощается проверка принадлежности элемента определенному син-
таксическому классу, поскольку это можно сделать простым сопоставлением
синтаксического типа и указателя.
Лексический анализ может быть осуществлен за один просмотр исход-
ного текста. После него программа приобретает промежуточную форму в ви-
де таблицы лексических единиц. Некоторые схемы компиляторов уменьша-
ют размер таблицы, выбирая только те лексические единицы, которые необ-
ходимы, и отбрасывая ненужные. При лексическом анализе обнаруживаются
и отмечаются лексические ошибки (например, недопустимые символы и не-
правильные идентификаторы). Лексическая фаза отбрасывает также и ком-
ментарии. Другие фазы компилятора имеют дело в основном только со стан-
дартными символами, однако с помощью содержащихся в таблице указате-
лей можно получить информацию обо всех свойствах лексической единицы.
Страницы
- « первая
- ‹ предыдущая
- …
- 4
- 5
- 6
- 7
- 8
- …
- следующая ›
- последняя »