Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик / Техническое задание.doc
Скачиваний:
20
Добавлен:
29.01.2015
Размер:
102.91 Кб
Скачать

5

КФБН. 00000-01 90 01-1

1. Наименование

Транслятор языка высокого уровня (упрощенной версии языка Pascal).

2. ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ

Основанием для разработки данного программного продукта является учебный план специальности 220400 (Программное обеспечение вычислительных и автоматизированных систем) по дисциплине “Теория языков программирования и методы трансляции”, утвержденный ректором СГТУ.

3. НАЗНАЧЕНИЕ РАЗРАБОТКИ

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

4. ТРЕБОВАНИЯ К ПРОГРАММЕ

4.1. Требования к функциональным характеристикам

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

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

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

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

  5. Транслятор должен обнаруживать как лексические, так и синтаксические ошибки:

    1. отсутствие текста программы;

    2. использование недопустимого символа в программе;

    3. использование лексически неверного идентификатора;

    4. неверное/повторное объявление метки;

    5. использование необъявленной метки;

    6. использование необъявленного идентификатора

    7. повторное объявление идентификатора;

    8. несоответствие типов операндов друг другу при операциях +,–,*,/

    9. отсутствие, либо неверный формат левой части присваивания;

    10. отсутствие выражения в правой части присваивания;

    11. несоответствие типа выражения справа от присваивания, типу идентификатора, участвующего в присвоении слева;

    12. отсутствие ожидаемых конструкций, таких как: ‘(‘,’)’,’:’,’;’.’.’, Program,Begin,End;

    13. несоответствие типов и количества аргументов вызываемой функции;

    14. незакрытые кавычки строковой константы;

    15. незакрытый комментарий;

    16. лишний End.

    17. отсутствие в секции Varобъявления переменных;

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

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

  3. Исходный текст программы и псевдокод должны иметь подсветку синтаксиса.

  4. Транслятор должен обеспечивать подсказку о текущем месте редактирования (строка, колонка).

  5. Встроенный интерпретатор не должен выводить сообщения об ошибках времени исполнения, а должен до конца пытаться интерпретировать полученные им данные.

  6. Язык исходного текста программы должен соответствовать следующим требованиям:

  1. Алфавит языка должен содержать только латинские буквы цифры и разделители +, -, *, /, (,), :, ;, =, {, }, пробел, но при этом допускать использование прочих символов в комментариях и текстовых константах.

  2. Язык должен допускать использование комментариев.

  3. Идентификаторы должны начинаться с буквы алфавита и могут включать буквы и цифры.

  4. Длина идентификатора выбирается по желанию пользователя

  5. Язык должен предусматривать следующие грамматические конструкции: описание заголовка и тела программы, объявление переменной, описание объявления функции, безусловный переход, присвоение значения переменной, ввод/вывод значения переменной.

  6. Язык должен содержать ключевые слова Program, Begin, Var, Real, Integer, String, Label, Goto, Function.

  7. Регистр существенен для идентификаторов, но несущественен для ключевых слов.

  8. Язык должен поддерживать системные функции ввода/вывода ReadLn/WriteLn, математические функцииSin,Cos,Tan,Exp, воспринимающие данные и вещественного, и целого типов.

  9. Язык должен поддерживать три типа данных: целый (Integer), вещественный (Real) и строковый (String).

  10. Присваивание должно обеспечиваться оператором “:=”.

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

  12. Язык должен содержать операции сложения, вычитания, умножения и деления. Приоритет операций должен соответствовать общепринятому.

  13. Тип операндов при любых операциях должен совпадать.

  14. Комментарии должны выделяться парой “{..}”.

  15. Конструкции должны отделяться друг от друга символом “;”.

  16. Использование необъявленных идентификаторов недопустимо.

  17. Заголовок программы должен начинаться с ключевого слова Program.

  18. Секция объявления переменных должна начинаться с ключевого слова Var. Формат объявления:Var идентификатор [, идентификаторы] : тип переменной;

  19. Переменные этой секции доступны только для основного блока Begin..End.

  20. Структура объявления функции должна иметь формат: Function имя_функции (идентификатор [, идентификаторы] : тип параметров) : тип_результата; Var идентификатор [, идентификаторы] : тип переменной; Begin тело_подпрограммы End;.

  21. Объявление метки должно иметь формат: Label идентификатор:

  22. Объявление безусловного перехода должно иметь формат: Goto идентификатор_метки;

  23. Объявление меток допустимо лишь в теле программы и подпрограммы;

  24. Метки должны иметь локальную видимость.

  25. Текст программы и логические блоки должны ограничиваться ключевыми словами Beginв начале иEndв конце.

  1. Язык псевдокода должен соответствовать следующим требованиям:

  1. Псевдокод должен быть разбит на четверки следующего формата: код_операции адрес_операнда_1, адрес_операнда_2, адрес_результата

  2. Язык должен содержать 2 системные переменные ax и bx.

  3. Язык должен поддерживать работу со стеком.

  4. Должны поддерживаться команды: pushX– затолкнуть в стекX,popX– забрать из стека вX,movX,Y– поместитьYвX,addX,Y,Z–X+Yпоместить вZ,subX,Y,Z– разностьXиYпоместить вZ,multX,Y,Z– произведениеXиYпоместить вZ,divX,Y,Z– частное от деленияXнаYпоместить вZ,createX,Y– завести переменную с именемXи присвоить ейY,disposeX– удалить переменную из памяти,cosX,Y,sinX,Y,tanX,Y– соответствующие математические команды, результат выполнения которых также помещается вY,callX– вызов подпрограммы,jmpX– переход на подпрограммуX.

  5. Имена подпрограмм должны начинаться с символа ‘@’;

  6. Тип введенного значения распознается автоматически;

  7. Операндами операций могут быть переменные, задаваемые своим именем или константы, задаваемые своим значением.

  8. Имена переменных являются строковыми константами, совпадающими с именами переменных в исходном коде программы.