Основы разработки трансляторов в САПР. Коробова И.Л - 5 стр.

UptoLike

1. ТЕОРИЯ ТРАНСЛЯЦИИ
1.1. ЛЕКСИЧЕСКИЙ АНАЛИЗ
На вход компилятора, а следовательно, и лексического анализатора поступает цепочка символов
некоторого алфавита. Работа лексического анализатора заключается в том, чтобы сгруппировать оп-
ределенные символы в единые синтаксические объекты, называемые лексемами. Какие объекты счи-
тать лексемами, зависит от определения языка. Кроме терминальных символов (+, –, /, *, (,)), которые
сами по себе являются лексемами, в программе некоторые комбинации символов часто рассматрива-
ются как единые объекты. Среди типичных примеров можно указать следующие.
В некоторых языках цепочка, состоящая из одного или более пробелов, обычно рассматрива-
ется как один пробел.
В языках программирования есть ключевые слова, такие, как begin, еnd, to, do, integer и другие,
каждое из которых считается одним символом.
Каждая цепочка, представляющая цифровую константу, рассматривается как один элемент тек-
ста.
Идентификаторы, используемые имена переменных, функций, процедур, меток и т.п., также счи-
таются лексическими единицами алгоритмического языка.
Для программы на рис. 1 будем считать лексемами терминальные символы, относящиеся к ключе-
вым словам, знакам операций, разделителям (рrоgram, vаr, begin, integer, end, (,), :=, +, –, *, div, rеad, for,
write, tо, do, :, ; , .). Кроме того, возможны лексемыидентификаторы и константы.
program primer;
var sum, a, rez, i: integer;
begin
sum:=0;
for i:=1 to 100 do begin
read(a);
sum:=sum+a
end;
rez:=sum div100–a*a;
write(rez,sum)
end.
Рис. 1
Итак, лексический анализатор должен исходный текст программы (рис. 1) представить в виде по-
следовательности лексем. Для эффективности последующих действий каждая лексема обычно пред-
ставляется некоторым кодом фиксированной длины (например, целым числом), а не в виде строки сим-
волов переменной длины.
Для вышеприведенного примера можно составить кодировочную таблицу (табл. 1). Если распо-
знанная лексема является ключевым словом, разделителем или знаком операции, такая схема кодирова-
ния дает всю необходимую информацию.
В случае идентификатора или константы необходимы дополнительные данные (в простейшем слу-
чаетип и указание на адрес ячейки памяти, где они хранятся). Обычно эти данные находятся в табли-
цах символов, и в качестве дополнительной информации для лексемы типа идентификатор или констан-
та может служить указатель на соответствующий элемент таблицы.