9
Министерство образования рф
РЫБИНСКАЯ
ГОСУДАРСТВЕННАЯ АВИАЦИОННАЯ
ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ
КАФЕДРА
"ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ"
Н. Л. МИХАЙЛОВ
ИЗУЧЕНИЕ
СИНТАКСИЧЕСКОГО
АНАЛИЗАТОРА
Лабораторная
работа по курсу:
"Системное
программное обеспечение"
РЫБИНСК
2000
Цель работы:
ознакомиться с принципами работы
синтаксического анализатора.
1. Методические
указания к выполнению
лабораторной
работы
1.1. Компиляция
программы
Реализация языка
программирования на конкретной
электронной вычислительной машине
заключается в создании некоторого
способа преобразования произвольного
текста на этом языке в программу для
данной машины. С этой целью разрабатываются
трансляторы.
Под транслятором
понимается специальная программа,
которая переводит исходную
программу
в эквивалентную ей объектную
программу.
Транслятор,
преобразующий текст на языке высокого
уровня в объектную программу на языке
низкого уровня (близкого к машинному)
называется компилятором.
После компиляции объектная программа
обычно не может быть исполнена
непосредственно. Дальнейшая ее обработка
связана с применением специальной
программы - загрузчика,
которая преобразует программу на языке,
близком к машинному, таким образом,
чтобы она могла быть размещена в
оперативной памяти для исполнения.
Предложения
исходной программы удобнее представлять
в виде последовательности лексем
(tokens),
чем просто как строку символов. Например,
лексемой может быть ключевое слово, имя
целой переменной, арифметический
оператор и т. д. Просмотр исходного
текста, распознавание и классификация
различных лексем называются лексическим
анализом.
Часть компилятора, которая выполняет
эту функцию, обычно называют сканером
или лексическим
анализатором.
Как только лексемы
выделены, каждое предложение программы
может быть распознано как некоторая
конструкция языка, как, например,
декларативные операторы или оператор
присваивания, описанные с помощью
грамматики. Процесс, называемый
синтаксическим
анализом
или синтаксическим
разбором,
осуществляется той частью компилятора,
которая обычно называется синтаксическим
анализатором
(parser).
Последним шагом
базовой схемы процесса трансляции
является генерация объектного кода.
Большинство компиляторов генерирует
непосредственно программу в машинных
кодах, а не программу на ассемблере,
предназначенную для последующей
трансляции в машинные коды.
Изучение принципов
работы синтаксического анализатора
будем проводить на примере компиляции
программы, приведенной на рис. 1:
1 PROGRAM STATS;
2 VAR
З
SUM, SUMSQ, I, VALUE, MEAN, VARIANCE : INTEGER;
4 BEGIN
5 SUM := 0;
6 SUMSQ := 0;
7 FOR I = 1 TO 100 DO
8 BEGIN
9 READ(VALUE);
10 SUM := SUM +
VALUE;
11 SUMSQ := SUMSQ
+ VALUE * VALUE
12 END;
13 MEAN := SUM DIV 100;
14 VARIANCE := SUMSQ
DIV 100 - MEAN * MEAN;
15 WRITE(MEAN,
VARIANCE)
16 END.
Рис. 1. Пример
программы на Паскале