Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Транслятор для перевода программ с языка Паскаль в текст программы на языке Си

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Создание приложения, исполняющего трансляцию программы из языка Паскаль в язык Си: разработка алгоритма реализации задачи, описание необходимых констант, переменных, функций и операторов, представление листинга программы и распечатка результатов.
Краткое сожержание материала:

Размещено на

Министерство образования и науки Российской Федерации

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

Государственное образовательное учреждение высшего профессионального образования

"Северо-Кавказский государственный технический университет"

КУРСОВОЙ ПРОЕКТ

по дисциплине "Программирование на языке высокого уровня"

Исполнитель:

Студент Даюнов Сергей

Группа АСОУ-091

Руководитель:

Братченко Н.Ю.

Ставрополь

2011

Оглавление

  • Введение
  • 1. Задание на курсовой проект
  • 2. Внешняя спецификация программы
  • 3. Описание алгоритма
  • 4. Структура программы и описание функций и операторов
  • 5. Листинг программы
  • 6. Распечатка тестов и результатов
  • Выводы
  • Список литературы

Введение

Язык программирования - формализованный язык, предназначенный для описания программ и алгоритмов решения задач на ЭВМ. Языки программирования являются искусственными; в них синтаксис и семантика строго определены, поэтому они не допускают свободного толкования выражения, что характерно для естественного языка. Языки программирования разделяются на две основные категории: языки высокого уровня и языки низкого уровня.

Появление языков программирования было связано с осознанием того факта, что перевод алгоритма, написанного на "почти" естественном языке, на машинный язык может быть автоматизирован и, следовательно, возложен на плечи машины.

Язык программирования высокого уровня -- язык программирования, разработанный для быстроты и удобства использования программистом.

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

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

Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным.

Язык программирования Си отличается минимализмом. Компиляторы Си разрабатываются сравнительно легко благодаря относительно низкому уровню языка и скромному набору элементов.

1. Задание на курсовой проект

трансляция паскаль алгоритм листинг программа

Нам необходимо написать конвертор на языке Си для перевода программ на языке Паскаль в текст программы на языке Си. Языки, операторы в исходном тексте, синтаксис арифметических и логических выражений определяются в соответствии с номером варианта.

Необходимо описать возможное и обязательное использование пробелов в исходном тексте. Все использованные операторы должны быть описаны, а также приведены синтаксические диаграммы. Исходные данные и результат хранятся в текстовых файлах, имена которых должны запрашиваться транслятором. В случае обнаружения ошибки исходного текста транслятор должен занести в выходной текст комментарий об этой синтаксической ошибке. Алгоритмы обработки отдельных операторов должны быть оформлены в виде подпрограмм.

В одной строке исходного текста может быть несколько операторов или только часть одного оператора. При формировании выходного текста можно не учитывать правило отступа.

Индивидуальное задание:

Языки, допустимые операторы в исходном тексте, синтаксис арифметических и логических выражений в соответствии с вариантом задания (табл.1):

Табл.1. Вариант задания

№ вар-та

Мини-транслятор Паскаль - Си (вид Аe, Le и номера операторов )

арифм. выраж.

логич. выраж.

тип

операторы

7

Ae1 (рис.1)

Le1 (рис.2)

boolean

while Le do

файлы

assign, rewrite, write

Рис.1. Логическое выражение ae1

Рис.2. Логическое выражение le1

2. Внешняя спецификация программы

Итак, необходимо написать транслятор текстов программы Паскаля в текст программы на языке С. В начале нужно при помощи текстого редактора создать текст программы на языке Паскаль, имеющего соответствующий тип. При запуске созданного транслятора нам выводится зарос на ввод имени входного текстового файла:"Входной файл:" . В случае ошибки при открытии файла мы получим предупреждение: "Извините файл с таким именем не существует, либо заблокирован".

Выходной файл транслируется из открытого нами файла, имя которого также вводится на запрос программы: "Выходной файл:". Также как и при открытии файла, в случае некорректного ввода имени файла, на экран будет выведено сообщение: "Ошибка ввода!". С помощью этого мы получим возможность многократного ввода, избежим возможного нанесения вреда данным и потери обработанной информации. После ввода имени выходного файла транслятор создаст текстовый файл на внешнем носителе, в котором будет содержаться результат трансляции входного файла. Основной результат работы программы будет храниться в выходном файле в виде текста программы, пригодного для компиляции, а также выводится на экран.

Также на экран будет выведена статистика о количестве всех оператор в исходном файле, в полученном программном коде и количестве ошибочных или необработанных операторов.

Полученная программа будет совместима с MS-DOS и со всеми операционными системами семейства Windows существующим на данное время.

3. Описание алгоритма

Транслятор -- программа или техническое средство, выполняющее преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой. Целью трансляции является преобразование текста с одного языка на другой, который понятен адресату текста. Они бывают двух разновидностей: компиляторы и интерпритаторы.

Исходное текстовое представление программы не очень пригодно для работы компилятора, поэтому во время анализа программа прежде всего разбивается на последовательность строк, или, как принято говорить, лексем. Базовое множество состоит из следующих групп лексем:

· Служебное слово. Конструкция с синтаксисом идентификатора, смысл которой предопределен в языке и, вообще говоря, отличен от смысла идентификатора.

· Идентификатор. Лексема, используемая для обозначения некоторой программной сущности, которая вводится посредством объявления или описания. В эту категорию включены также идентификаторы, обрабатываемые на фазе препроцессирования - имена директив препроцессора, имена макросов и прагм и их параметров. В зависимости от конкретного режима лексического разбора, в эту группу могут попадать и идентификаторы, формируемые на этапе препроцессирования (так называемые "склеенные" идентификаторы, образованные при обработке лексем ##).

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

· Знак операции. Лексема, обозначающая некоторую операцию, определенную в языке. (Заметим, что некоторые операции обозначаются посредством служебных слов.)

· Разделитель (пунктуатор). Лексема, используемая для отделения синтаксических конструкций друг от друга, и/или для повышения наглядности конструкций языка, и/или для снятия синтаксических неоднозначностей. В данную группу включены лексемы препроцессора # и ##, обрабатываемые на фазе препроцессирования.

· Комментарий. Дополнительная лексема, образованная согласно синтаксису короткого или длинного комментария.

Следующая принципиальная схема (рис. 3.1) иллюстрирует последовательность фаз трансляции. Ниже даются краткие комментарии по содержанию этих фаз.

Фаза 1: Предварительная обработка. Отображение символов исходного текста в базовое множество символов внутреннего представления, с заменой триграфов и формированием, при необходимости, универсальных имен-символов.

Фаза 2: "Склеивание" строк. Строка исходного текста, завершающаяся символом "обратная косая черта", соединяется (с отбрасыванием конца строки и данного символа) с последующей.

Фаза 3: Первичный лексиче...

Другие файлы:

Конвертор на языке Си для перевода программ на языке Паскаль в текст программы на языке Си
Схема разбора арифметического и логического выражения. Внешняя спецификация конвертора и алгоритм перевода программ на языке Паскаль в текст на языке...

Разработка конвертора на языке Си для перевода программ на языке Паскаль в текст программы на языке Си
Создание программы для перевода кодов с языка Pascal на язык Си. Обработка программ операторами case, assign, rewrite и write. Способы объявления файл...

Разработка конвертора на языке Си для перевода программ на языке Паскаль в текст программы на языке Си
Выбор метода проектирования транслятора с языка Паскаль на язык Си, разработка и кодирование алгоритма программы. Использование допустимых операторов...

Транслятор на языке Си для перевода текста программы с языка Паскаль на язык Си (операторы real, case, записи, указатель (на запись))
Последовательность работ при разработке объектно-ориентированных программ. Виды синтаксических анализаторов и способы их применения. Описание алгоритм...

Разработка конвертора на языке С++ для перевода программ на языке Паскаль в текст программы на языке С++
Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решени...