Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
системное ПО / Лабораторная работа № 4 / Михайлов Н. Л. Изучение синтаксического анализатора.doc
Скачиваний:
26
Добавлен:
20.03.2016
Размер:
114.69 Кб
Скачать

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. Пример программы на Паскале