КФБН 11178-01 90 01-1
1. ВВЕДЕНИЕ
Данный программный продукт – транслятор языка высокого уровня (упрощенной версии языка Pascal).
2. ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ
Основанием для разработки данного программного продукта является учебный план специальности 220400 (Программное обеспечение вычислительных и автоматизированных систем) по дисциплине “Теория языков программирования и методы трансляции”, утвержденный ректором СГТУ.
3. НАЗНАЧЕНИЕ РАЗРАБОТКИ
Транслятор предназначен для транслирования программы, написанной на языке высокого уровня, в объектный псевдокод, с дальнейшей его интерпретацией и получением результата работы программы.
4. ТРЕБОВАНИЯ К ПРОГРАММЕ
4.1 Требования к функциональным характеристикам:
-
Транслятор должен работать в оконном графическом режиме и поддерживать работу, как клавиатуры, так и манипулятора типа "мышь”.
-
Окно транслятора должно содержать поля ввода программы, вывода псевдокода, вывода результата интерпретации, вывода сообщений об ошибках или успешной трансляции.
-
Транслятор должен поддерживать как ручной ввод текста в поле программы, так и загрузку текста программы из файла.
-
Транслятор должен поддерживать сохранение составленной программы, полученного псевдокода, результата работы интерпретированной программы.
-
Транслятор должен обнаруживать как лексические, так и синтаксические ошибки:
-
отсутствие текста программы;
-
использование недопустимого символа в программе;
-
использование лексически неверного идентификатора;
-
неверное/повторное объявление метки;
-
использование необъявленной метки;
-
использование необъявленного идентификатора
-
повторное объявление идентификатора;
-
несоответствие типов операндов друг другу при операциях +,–,*,/
-
отсутствие, либо неверный формат левой части присваивания;
-
отсутствие выражения в правой части присваивания;
-
несоответствие типа выражения справа от присваивания, типу идентификатора, участвующего в присвоении слева;
-
отсутствие ожидаемых конструкций, таких как: ‘(‘,’)’,’:’,’;’.’.’, Program, Begin,End;
-
несоответствие типов и количества аргументов вызываемой функции;
-
незакрытые кавычки строковой константы;
-
незакрытый комментарий;
-
лишний End.
-
отсутствие в секции Var объявления переменных;
-
В сообщении об ошибке должен обязательно присутствовать номер строки, где эта ошибка была найдена и прочая вспомогательная информация (имя ошибочного идентификатора, операция, операнды которой несовместимы по типам и т.п.)
-
При двойном щелчке мышью на строке ошибки должна подсвечиваться строка в программе, где произошла эта ошибка.
-
Исходный текст программы и псевдокод должны иметь подсветку синтаксиса.
-
Транслятор должен обеспечивать подсказку о текущем месте редактирования (строка, колонка).
-
Встроенный интерпретатор не должен выводить сообщения об ошибках времени исполнения, а должен до конца пытаться интерпретировать полученные им данные.
-
Язык исходного текста программы должен соответствовать следующим требованиям:
-
Алфавит языка должен содержать только латинские буквы цифры и разделители +, -, *, /, (,), :, ;, =, {, }, пробел, но при этом допускать использование прочих символов в комментариях и текстовых константах.
-
Язык должен допускать использование комментариев.
-
Идентификаторы должны начинаться с буквы алфавита и могут включать буквы и цифры.
-
Длина идентификатора выбирается по желанию пользователя
-
Язык должен предусматривать следующие грамматические конструкции: описание заголовка и тела программы, объявление переменной, описание объявления функции, безусловный переход, присвоение значения переменной, ввод/вывод значения переменной.
-
Язык должен содержать ключевые слова Program, Begin, Var, Real, Integer, String, Label, Goto, Function.
-
Регистр существенен для идентификаторов, но несущественен для ключевых слов.
-
Язык должен поддерживать системные функции ввода/вывода ReadLn/WriteLn, математические функции Sin,Cos,Tan,Exp, воспринимающие данные и вещественного, и целого типов.
-
Язык должен поддерживать три типа данных: целый (Integer), вещественный (Real) и строковый (String).
-
Присваивание должно обеспечиваться оператором “:=”.
-
Тип значения, вводимого пользователем при интерпретации программы должен автоматически приводиться к требуемому типу.
-
Язык должен содержать операции сложения, вычитания, умножения и деления. Приоритет операций должен соответствовать общепринятому.
-
Тип операндов при любых операциях должен совпадать.
-
Комментарии должны выделяться парой “{..}”.
-
Конструкции должны отделяться друг от друга символом “;”.
-
Использование необъявленных идентификаторов недопустимо.
-
Заголовок программы должен начинаться с ключевого слова Program.
-
Секция объявления переменных должна начинаться с ключевого слова Var. Формат объявления: Var идентификатор [, идентификаторы] : тип переменной;
-
Переменные этой секции доступны только для основного блока Begin..End.
-
Структура объявления функции должна иметь формат: Function имя_функции (идентификатор [, идентификаторы] : тип параметров) : тип_результата; Var идентификатор [, идентификаторы] : тип переменной; Begin тело_подпрограммы End;.
-
Объявление метки должно иметь формат: Label идентификатор:
-
Объявление безусловного перехода должно иметь формат: Goto идентификатор_метки;
-
Объявление меток допустимо лишь в теле программы и подпрограммы;
-
Метки должны иметь локальную видимость.
-
Текст программы и логические блоки должны ограничиваться ключевыми словами Begin в начале и End в конце.
-
Язык псевдокода должен соответствовать следующим требованиям:
-
Псевдокод должен быть разбит на четверки следующего формата: код_операции адрес_операнда_1, адрес_операнда_2, адрес_результата
-
Язык должен содержать 2 системные переменные ax и bx.
-
Язык должен поддерживать работу со стеком.
-
Должны поддерживаться команды: push X – затолкнуть в стек X, pop X – забрать из стека в X, mov X,Y – поместить Y в X, add X,Y,Z – X+Y поместить в Z, sub X,Y,Z – разность X и Y поместить в Z, mult X,Y,Z – произведение X и Y поместить в Z, div X,Y,Z – частное от деления X на Y поместить в Z, create X,Y – завести переменную с именем X и присвоить ей Y, dispose X – удалить переменную из памяти, cos X, Y, sin X, Y, tan X,Y – соответствующие математические команды, результат выполнения которых также помещается в Y, call X – вызов подпрограммы, jmp X – переход на подпрограмму X.
-
Имена подпрограмм должны начинаться с символа ‘@’;
-
Тип введенного значения распознается автоматически;
-
Операндами операций могут быть переменные, задаваемые своим именем или константы, задаваемые своим значением.
-
Имена переменных являются строковыми константами, совпадающими с именами переменных в исходном коде программы.
4.2. Требования к надежности
-
Программа должна обрабатывать ошибки в тексте исходной программы согласно оговоренным выше правилам и выдавать сообщения пользователю посредством интерфейса.
4.3. Требования к составу и параметрам технических средств
-
Программное обеспечение разрабатывается для персональной вычислительной техники типа IBM PC со процессором класса Pentium.
-
ЭВМ должна работать под управлением операционной системы из семейства Windows (не ниже чем Windows 98) и иметь установленный .Net FrameWork;.
-
Требования к программной документации
Курсовая работа должна включать следующую документацию:
- техническое задание КФБН 00000-01 90 01 (ГОСТ 19.201-78);
- программу и методику испытаний КФБН 00000-01 51 01 (ГОСТ 19.301-79);
- руководство оператора КФБН 00000-01 34 01 (ГОСТ 19.505-79).
- руководство программиста КФБН 00000-01 33 01 (ГОСТ 19.504-79).
6.Стадии и этапы разработки.
Стадии разработки, этапы и содержание работ указаны в таблице 1.
Таблица 1
-
Стадии
Разработки
Этапы работ
Содержание работ
Ответственный
за выполнение
Сроки сдачи
Техническое задание
Обоснование необходимости разработки программы
Научно-исследовательские работы
Разработка и утверждение технического задания
Постановка задачи.
Сбор исходных материалов. Выбор и обоснование критериев эффективности и качества разрабатываемой программы. Обоснование необходимости проведения научно–исследовательских работ.
Предварительный выбор методов решения задач.
Определение требований к техническим требованиям. Обоснование принципиальной возможности решения поставленной задачи.
Определение требований к программе. Определение стадий, этапов и сроков разработки программы и документации на нее. Выбор языков программирования.
Определение необходимости проведения научно-исследовательских работ на последующих стадиях. Согласование и утверждения технического задания.
Осипова
Д. А.
Осипова
Д. А.
Разработчик:
Осипова
Д. А.
Приемщик:
Сайкин
А. И.
Рабочий проект
Разработка программы
Разработка программной документации.
Испытания программы
Программирование и отладка программы.
Разработка программных документов согласно ГОСТ 19.101-77
Разработка, согласование и утверждение программы и методики испытаний. Проведение предварительных государственных, межведомственных, приемо-сдаточных и других видов испытаний. Корректировка программы и программной документации по результатам испытаний.
Осипова
Д. А.
Осипова
Д. А.
Разработчик:
Осипова
Д. А.
Приемщик:
Сайкин
А. И.
Внедрение
Подготовка и передача программы
Подготовка и сдача программы и программной документации. Оформление и утверждение акта о передаче программы на сопровождение. Передача программы в фонд алгоритмов и программ.
Разработчик:
Осипова
Д. А.
Приемщик:
Сайкин
А. И.
