Скачиваний:
25
Добавлен:
27.01.2015
Размер:
48.13 Кб
Скачать

5

КФБН. ___________

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

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

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

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

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

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

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

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

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

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

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

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

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

    1. использование символа не входящего в алфавит языка;

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

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

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

    5. идентификатор не должен включать в себя разделители;

    6. длина идентификатора не должна превышать 14 символов;

    7. использование необъявленной переменной;

    8. повторное объявление переменной;

    9. разные типы операндов при операциях +, -, *,/;

    10. отсутствие левой части при операции присваивание;

    11. отсутствие правой части при операции присваивание;

    12. неверная запись левой части при операции присваивание:

- должна быть только объявленная переменная;

    1. разные типы операндов при операции присваивание;

    2. отсутствие ожидаемых конструкций, таких как: ‘(‘,’)’,’:’,’;’.’.’, ПРОГРАМ, БЕГИН, ЕНД, ФОР, ТО, ДУ, СИН, КОС, ЕКС, ВВОД, ВЫВОД;

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

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

    5. лишний ЕНД.

    6. отсутствие в секции ВАР объявления переменных;

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

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

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

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

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

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

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

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

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

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

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

  6. Язык должен содержать ключевые слова ПРОГРАМ, НАЧАЛО, ВАР, РЕАЛ, ИНТЕЖЕР, ВВОД, ВЫВОД, ФОР, СИН, КОС, ТАН, ЕКС.

  7. Язык должен поддерживать системные функции ввода/вывода ВВОД/ВЫВОД, математические функции СИН, КОС, ТАН, ЕКС, воспринимающие данные и вещественного, и целого типов.

  8. Язык должен поддерживать два типа данных: целый (ИНТЕЖЕР), вещественный (РЕАЛ).

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

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

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

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

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

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

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

  16. Заголовок программы должен начинаться с ключевого слова ПРОГРАМ.

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

  18. Переменные этой секции доступны только для основного блока БЕГИН...ЕНД.

  19. Текст программы и логические блоки должны ограничиваться ключевыми словами БЕГИН в начале и ЕНД в конце.

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

  21. Структура объявления цикла ФОР должна иметь формат:

ФОР пар_цик :=нач_знач TO кон_знач ДУ БЕГИН оператор [,операторы] ЕНД;

  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. Имена переменных являются строковыми константами, совпадающими с именами переменных в исходном коде программы.

Соседние файлы в папке Kurs_1