Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные этапы трансляции.doc
Скачиваний:
7
Добавлен:
19.11.2019
Размер:
413.18 Кб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

Уфимский государственный авиационный технический университет

ОСНОВНЫЕ ЭТАПЫ ТРАНСЛЯЦИИ

Лабораторный практикум

по дисциплине

«Системное программное обеспечение»

Уфа 2008

Составитель Ю.Г. Строкина

УДК 004.43(07)

ББК 32.973-018.1(я7)

Основные этапы трансляции: Лабораторный практикум по дисциплине «Системное программное обеспечение» / Уфимск. гос. авиац. техн. ун-т.; Сост. Ю.Г. Строкина. − Уфа, 2008. − 31 с.

Лабораторный практикум включает две лабораторные работы, которые рассматривают основные фазы этапов трансляции – лексический анализ и генерацию и оптимизацию объектного кода.

Предназначен для студентов специальности 230101 «Вычислительные машины комплексы, системы и сети».

Табл. 5. Ил. 2. Библиогр.: 3 назв.

Рецензенты : канд. техн. наук, доц. Д.И. Кардаш;

канд. техн. наук, доц. Р.Н. Уразбахтин

© Уфимский государственный

авиационный технический университет, 2008

Содержание

Введение 4

ЛАБОРАТОРНАЯ РАБОТА № 1 5

ПОСТРОЕНИЕ ЛЕКСИЧЕСКОГО АНАЛИЗАТОРА 5

1. Цель работы 5

2. Краткие теоретические сведения 5

3. Примеры 6

3.1. Лексический анализатор целочисленных констант языка С 6

3.2. Лексический анализатор для поиска строк в исходном тексте программы 11

4. Содержание работы 15

5. Контрольные вопросы 16

Лабораторная работа № 2 17

Генерация и оптимизация кода 17

1. Цель работы 17

2. Краткие теоретические сведения 17

3. Примеры 17

3.1. Схемы СУ – перевода 17

3.2. Схема СУ–перевода дерева операций на язык ассемблера 18

3.3. Схема СУ - перевода дерева операций в последовательность триад 22

3.4. Методы оптимизации кода 24

3.5. Свертка объектного кода 24

3.6. Исключение лишних операций 26

4. Содержание работы 28

5. Контрольные вопросы 30

Список литературы 30

Введение

Реальное применение языка программирования невозможно без соответствующей системы программирования, основу которой составляет транслятор.

Транслятор – это программа, которая переводит программу на исходном (входном) языке в эквивалентную ей программу на результирующем (выходном) языке.

Компилятор – это транслятор, который осуществляет перевод исходной программы в эквивалентную ей результирующую программу на языке машинных команд или языке ассемблера.

Освоение методов программирования трансляторов дает студентам возможность применять полученные знания, как при решении конкретных практических задач, так и при разработке и реализации входных языков прикладных систем.

ЛАБОРАТОРНАЯ РАБОТА № 1

ПОСТРОЕНИЕ ЛЕКСИЧЕСКОГО АНАЛИЗАТОРА

1. Цель работы

Целью лабораторной работы является закрепление теоретических знаний и приобретение практических навыков при построении лексических анализаторов.

2. Краткие теоретические сведения

Лексический анализатор (сканер) - разбивает программу на простые элементы-слова, называемые лексемами. Лексемами являются имена, служебные слова, числа, разделители, знаки операций. Удаляет из программы комментарии. Компилятор может иметь в своем составе несколько лексических анализаторов, каждый из которых предназначен для выборки и проверки определенного типа лексем. Обобщенный алгоритм работы простейшего лексического анализатора можно описать следующим образом:

  • из входного потока выбирается очередной символ, в зависимости от которого запускается тот или иной сканер (символ может быть также проигнорирован либо признан ошибочным);

  • запущенный сканер просматривает входной поток символов программы на исходном языке, выделяя символы, входящие в требуемую лексему, до обнаружения очередного символа, который может ограничивать лексему, либо до обнаружения ошибочного символа;

  • при успешном распознавании информация о выделенной лексеме заносится в таблицу лексем и таблицу идентификаторов, алгоритм возвращается к первому этапу и продолжает рассматривать входной поток символов с того места, на котором остановился сканер;

  • при неуспешном распознавании выдается сообщение об ошибке, а дальнейшие действия зависят о реализации сканера – либо его выполнение прекращается, либо делается попытка распознать следующую лексему (идет возврат к первому этапу алгоритма).

Техника построения сканеров основывается на моделировании работы детерминированных и недетерминированных КА с дополнением функций распознавателя вызовами функций обработки ошибок, а также заполнения таблиц лексем и таблиц идентификаторов. Такая техника не требует сложной математической обработки и важных преобразований входных грамматик. Для разработчиков сканера важно только решить, где кончаются функции сканера и начинаются функции синтаксического разбора.