Реферат: Лабораторные работы по Теории вычислительных процессов и структур
Министерство образования Российской Федерации
Саратовский государственный технический университет
ЛАБОРАТОРНАЯ РАБОТА №1
Лексический анализ входного языка транслятора
лабораторная работа по курсу «Теория вычислите-
льных процессов и структур» для студентов
специальности 220400 (ПВС)
Составил доцент кафедры ПВС
Сайкин А.И.
Саратов, 2001 г.
Введение
Данная лабораторная работа предназначается для студентов специальности ПВС изучающих «Теорию вычислительных процессов и структур». Лабораторная работа рассчитана на 4 аудиторных часа и 6 часов самостоятельной работы по составлению
программы, изучение литературы и составление отчёта.
Объект исследования - трансляторы с алгоритмических языков программирования. Процесс трансляции с алгоритмического языка можно условно разбить на три этапа: лексический анализ, грамматический разбор и генерацию машинного кода. В данной работе рассматривается задача построения лексического анализатора
входного текста транслятора.
Цель работы состоит в составлении программы (сканера) производящей лексический анализ текста, соответствующего заданному алфавиту и грамматике алгоритмического языка.
Программа составляется на языках Паскаль и С++ по выбору студента в среде WINDOWS.
1. Содержание работы.
Этап лексического анализа текста исходной программы выделяется в самостоятельный этап работы транслятора, как с методической целью, так и с целью сокращения времени компиляции программы. Последнее достигается за счёт того, что
исходная программа в виде последовательности символов, преобразуется на этапе лексической обработки к некоторому стандартному виду, что облегчает дальнейший анализ.
Под лексическим анализом понимают процесс предварительной обработки исходной программы, на котором основные лексические единицы программы - лексемы: ключевые слова, идентификаторы, метки, константы приводятся к единому формату и заменяются условными кодами или ссылками на соответствующие таблицы, а коментарии исключаются из текста программы. Результатом лексического анализа является список лексем-дескрипторов и таблицы. В таблицах хранятся значения выделенных в программе лексем.
Дескриптор- это пара вида: ( <тип лексемы> . < указатель>),
где <тип лексемы>- это, как правило, числовой РєРѕРґ класса лексемы, который означает, что лексема принадлежит РѕРґРЅРѕРјСѓ РёР· конечного множества классов слов, выделенных РІ языке программирования;
<указатель>- это может быть либо начальный адрес области РѕСЃРЅРѕРІРЅРѕР№ памяти, РІ которой хранится адрес этой лексемы, либо число, адресующее элемент таблицы, РІ которой хранится значение этой лексемы.
Количество классов лексем в языках программирования может быть различным. Наиболее распространёнными классами являются:
идентификаторы;
служебные (ключевые) слова;
разделители;
константы.
Могут вводиться и другие классы. Это обусловлено в первую очередь той ролью, которую играют различные виды слов при написании исходной программы и переводе её в машинную программу. При этом наиболее предпочтительным является разбиение всего множества слов, допускаемых в языке программирования, на такие классы, которые бы не пересекались между собой. В общем случае все выделяемые классы являются либо конечными (ключевые слова, разделители и др.) - классы фиксированных для данного языка программирования слов, либо
--> ЧИТАТЬ ПОЛНОСТЬЮ <--