- •Московский государственный институт электроники и математики
- •Курсовая работа
- •2.Оглавление
- •3.Задание на курсовую работу
- •4.Постановка задачи
- •4.1Дано
- •4.2Требуется
- •4.3Связь (примеры конвертирования)
- •5.1Вход
- •5.2Выход
- •5.3Аномалии
- •6.Метод решения задачи
- •7.Описание алгоритма
- •7.1Алгоритм решения задачи
- •5.Внешняя спецификация
- •7.2Выделение подпрограмм
- •10.Распечатка тестов и результатов работы программы
- •10.1.1Входной файл
- •10.1.2Выходной файл
- •10.2Входной файл
- •10.3Выходной файл
- •11.Выводы
- •12.Список литературы
5.Внешняя спецификация
5.1Вход
Исходный текст программы готовится заранее с помощью текстового редактора и хранится в текстовом файле, имя которого вводится в ответ на запрос программы:
введите имя входного файла: <имя входного файла> |
5.2Выход
Выходной текст формируется конвертором и запоминается в текстовом файле, имя которого вводится в ответ на запрос программы:
введите имя выходного файла: <имя выходного файла> |
Основной результат работы программы хранится в выходном файле в виде текста программы, пригодного для компиляции, а также выводится на экран. Кроме того, на экран выводится таблица:
число операторов в исходной программе = <число> |
число операторов в полученной программе = <число> |
число аномалий =<число> |
число ошибочных операторов = <число> |
5.3Аномалии
Входной файл
При отсутствии входного файла выводится сообщение:
Ошибка открытия входного файла <путь> - файл не найден; проверьте путь.. |
При вводе имени файла, не удовлетворяющего требованиям системы, выводится одно из сообщений:
Неверный путь: <путь> Ошибка открытия входного файла <путь>- файл не найден; проверьте путь. Имя файла :<путь> задано некорректно. Это не .pas файл. |
Выходной файл
При вводе имени файла, не удовлетворяющего требованиям системы, выводится одно из сообщений:
Неверный путь: <путь> Имя файла :<путь> задано некорректно. Это не .с файл. |
6.Метод решения задачи
Идентификация операторов исходного текста осуществляется путем анализа ключевого слова.
Если допустимое ключевое слово отсутствует и строка не является комментарием, то предполагается, что соответствующий оператор является оператором присваивания.
Анализ ключевых слов в исходном тексте проводится в соответствии с синтаксисом исходного языка (Pascal).
7.Описание алгоритма
В данном разделе приведено полное описание алгоритма решения поставленной задачи.
Приводится структура и алгоритм главной программы. Затем описывается алгоритм каждой подпрограммы, который включает описание исходных данных, результата, связи и текст алгоритма на псевдокоде с использованием базовых структур алгоритмов. Логические условия и действия, выполняемые в алгоритме, описываются словами.
7.1Алгоритм решения задачи
Буферы обработки
Исходный файл читается построчно, при этом ведется счетчик входных строк. Далее проводится анализ на наличие в исходнои тексте комментария. Данные входного потока распределяются в два буфера:
Буфер накопления текста на Паскале (str_buf)
Буфер комментариев (comments_buf)
По нахождении признака конца комментария во входном потоке буфер comments_buf оформляется по правилам комметария на языке С и выводится в выходной файл.
Программа последовательно извлекает из буфера накопления Паскаля str_buf очередное предложение на Паскале (ограниченное справа символом ;) и отправляет его на анализ в подпрограмму Pas_to_C.
В этой подпрограмме в зависимости от ключевого слова, с которого начинается анализируемое предложение, вызывается необходимая подпрограмма детального анализа (например, п/п Analyze_If).
Если ключевое слово не опознано, вызывается п/п Analyze_Other_Operator. В зависимости от состояния анализа (регулируемое набором глобальных флажков и счетчиков) вызывается п/п анализа оператора присваивания Analyze_Assignment либо подпрограммы продолжения анализа секций Var, Const, Uses или Label.
