Министерство образования и науки РФ
ФГБОУ ВПО «Саратовский государственный технический университет имени Гагарина Ю.А.»
Кафедра «Информационная безопасность автоматизированных систем»
Пояснительная записка к курсовому проекту по дисциплине
“Теория языков программирования и методы трансляции”
Проектирование трансляторов
Выполнила: ст. гр. зПВС-51
Осипова Д.А.
Проверил: Сайкин А.И.
Саратов 2015
Содержание
-
Введение
В качестве вводной части к курсовому проекту рассмотрим теоретические аспекты лексического и синтаксического анализов.
Лексический анализ – разбиение последовательности символов входного текста на последовательность слов, или лексем. Выделение лексем из текста обычно предшествует стадии синтаксического анализа, например, при построении компилятора с какого-нибудь языка программирования, хотя может потребоваться и для решения других задач, не связанных с синтаксическим анализом текстов. Обычно все лексемы делятся на классы. Примерами таких классов являются числа (целые, восьмеричные, шестнадцатиричные, действительные и т.д.), идентификаторы, строки. Отдельно выделяются ключевые слова и символы пунктуации (иногда их называют символы-ограничители). Как правило, ключевые слова - это некоторое конечное подмножество идентификаторов. В большинстве случаев лексический анализ выполняется перед синтаксическим. Программный компонент, осуществляющий подобную операцию, называется лексическим анализатором или сканером.
Синтаксическим анализом называют разбор цепочек лексем входного текста с целью проверки того факта, что данная цепочка удовлетворяет правилам некоторого формального языка. Формальный язык – это подмножество цепочек в некотором алфавите. Допустимая цепочка называется предложением языка. Для выделения лексем цепочки обычно применяются методы лексического анализа.
Задачу реализации синтаксического анализа приходится решать при разработке трансляторов с языков программирования в машинные коды, а также при необходимости разбора входных данных, записанных по определенным правилам в виде текстовых документов. Программный компонент-синтаксический анализатор часто является «пусковым механизмом», запускающим работу остальных компонентов программы, ответственных за обработку входных данных. Анализатор принимает или отвергает предложения языка и в процессе своей работы передает информацию о принятых предложениях в другие компоненты программной системы, такие, например, как построитель внутреннего представления данных. Таким образом, входом для синтаксического анализатора являются цепочки символов входного языка, а выходными данными являются законченные предложения того же языка, которые, в свою очередь, могут нести некоторый логический смысл, доступный другим компонентам программной системы.
Выделение синтаксического анализа в отдельную задачу позволяет применить формальные методы теории языков и упростить его реализацию путем использования существующего программного кода.
2. Постановка задачи
Цель работы: Целью курсового проектирования является закрепление теоретического материала и приобретение необходимого опыта разработки трансляторов
Вариант задания: (14: 2-3-1)
-
Алфавит входного языка состоит из латинских букв;
-
К ключевым словам относятся описания операторов безусловного перехода, описатели функции, ключевые слова, обозначающие начало и конец программы, описание типа, ввод и вывод, присваивание;
-
Присутствует поддержка библиотечных функций sin, cos, tan, exp;
-
К разделителям относятся +, -, *, :, _, /, (, ), {, }, =, , , ‘ , ‘,’ и пробел;
-
Идентификаторы должны начинаться с буквы, не включать в себя разделители;
-
Текст программы должен допускать использование комментариев.
