
- •Московский государственный институт электроники и математики
- •Требования к надежности
- •Оглавление
- •Задание на курсовую работу
- •Постановка задачи
- •Требуется
- •Связь (примеры конвертирования)
- •Внешняя спецификация
- •Аномалии
- •Метод решения задачи
- •Описание алгоритма
- •Алгоритм решения задачи
- •Выделение подпрограмм
- •Диаграммы анализа выражений
- •Распечатка тестов и результатов работы программы
- •Входной файл
- •Выходнойфайл
- •Входной файл
- •Выходной файл
- •Список литературы
Внешняя спецификация
Вход
Исходный текст программы готовится заранее с помощью текстового редактора и хранится в текстовом файле, имя которого вводится в ответ на запрос программы:
введите имя входного файла: <имя входного файла> |
Выход
Выходной текст формируется конвертором и запоминается в текстовом файле, имя которого вводится в ответ на запрос программы:
введите имя выходного файла: <имя выходного файла> |
Основной результат работы программы хранится в выходном файле в виде текста программы, пригодного для компиляции, а также выводится на экран. Кроме того, на экран выводится таблица:
число операторов в исходной программе = <число> |
число операторов в полученной программе = <число> |
число аномалий =<число> |
число ошибочных операторов = <число> |
Аномалии
Входной файл
При отсутствии входного файла выводится сообщение:
Ошибка открытия входного файла <путь> - файл не найден; проверьте путь.. |
При вводе имени файла, не удовлетворяющего требованиям системы, выводится одно из сообщений:
Неверный путь: <путь> Ошибка открытия входного файла <путь>- файл не найден; проверьте путь. Имя файла :<путь> задано некорректно. Это не .pas файл. |
Выходной файл
При вводе имени файла, не удовлетворяющего требованиям системы, выводится одно из сообщений:
Неверный путь: <путь> Имя файла :<путь> задано некорректно. Это не .с файл. |
Метод решения задачи
Идентификация операторов исходного текста осуществляется путем анализа ключевого слова.
Если допустимое ключевое слово отсутствует и строка не является комментарием, то предполагается, что соответствующий оператор является оператором присваивания.
Анализ ключевых слов в исходном тексте проводится в соответствии с синтаксисом исходного языка (Pascal).
Описание алгоритма
В данном разделе приведено полное описание алгоритма решения поставленной задачи.
Приводится структура и алгоритм главной программы. Затем описывается алгоритм каждой подпрограммы, который включает описание исходных данных, результата, связи и текст алгоритма на псевдокоде с использованием базовых структур алгоритмов. Логические условия и действия, выполняемые в алгоритме, описываются словами.
Алгоритм решения задачи
Буферы обработки
Исходный файл читается построчно, при этом ведется счетчик входных строк. Далее проводится анализ на наличие в исходнои тексте комментария. Данные входного потока распределяются в два буфера:
Буфер накопления текста на Паскале (str_buf)
Буфер комментариев (comments_buf)
По нахождении признака конца комментария во входном потоке буфер comments_buf оформляется по правилам комметария на языке С и выводится в выходной файл.
Программа последовательно извлекает из буфера накопления Паскаля str_buf очередное предложение на Паскале (ограниченное справа символом ;) и отправляет его на анализ в подпрограмму Pas_to_C.
В этой подпрограмме в зависимости от ключевого слова, с которого начинается анализируемое предложение, вызывается необходимая подпрограмма детального анализа (например, п/п Analyze_If).
Если ключевое слово не опознано, вызывается п/п Analyze_Other_Operator. В зависимости от состояния анализа (регулируемое набором глобальных флажков и счетчиков) вызывается п/п анализа оператора присваиванияAnalyze_Assignmentлибо подпрограммы продолжения анализа секцийVar,Const,UsesилиLabel.