13
ИНФОРМАЦИОННЫЕ СТРУКТУРЫ И ИХ
ПРЕОБРАЗОВАНИЕ
При выполнении полного лексического анализа происходит разбор
входного текста на подмножества формальных языков и исходная программа
содержится в таблице в форме внутренних представлений. На данном этапе
анализатору совершенно не важно, какой идентификатор ему встретился,
важно лишь то, что это идентификатор.
Составленная таблица передается синтаксическому анализатору.
Строчка исходной программы А=В+С+10 будет разобрана
Служебные
слова
Идентифи-
каторы
Целые числа Оператор
Разделитель
i
i
i
10
=
+
Исходя из этой таблицы, предложение превратится в: i=i+i+10. Это
задача сканера – проанализировав предложение, построить цепочку.
Но данный вид лексического анализа менее эффективен, так как
необходимо хранить ис-ходную программу в форме внутренних
представлений.
Более целесообразно использовать подпрограмму, к которой
обращается синтаксический анализатор всякий раз, когда ему необходим
новый символ. Сканер формирует лексему исходной программы и отсылает
ее на синтаксический анализ. Сканер может быть задан конечным автоматом.
В принципе построение языка программирования может быть
построено (освоено) с помощью языка регулярной грамматики.
Символы исходного языка
Символами в языке являются разделители и операторы ( /, +, –,
∗
, (, ), и
//), служебные слова (BEGIN, ABS и END), идентификаторы (которые не
могут быть служебными словами), и целые числа. По крайней мере, один
пробел должен отделять смежные идентификаторы, целые числа и/или
служебные слова. Ни одного пробела не должно появляться между литерами
в слове.
Идентификаторы и целые числа имеют вид
буква {буква | цифра} и цифра {цифра}.