Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по ТЯП. Вариант 3.doc
Скачиваний:
25
Добавлен:
01.05.2014
Размер:
735.74 Кб
Скачать

Санкт-Петербургский Государственный Электротехнический Университет

Отчет по курсовой работе

по дисциплине

Языки программирования и методы трансляции

Выполнили:

Ст. гр. 2351

Петров А.Л.

Ходырев И.А.

Проверила:

Опалева Э.А.

Санкт-Петербург

2005

1. Описание входного языка.

1.1. Общие сведения.

В курсовой работе описывается разработка компилятора для языка, являющегося подмножеством языка Си.

Вариант: 11.

Базовый язык – Си.

Базовые типы: целый, вещественный, булевский.

Производный тип – вектор с вещественными компонентами.

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

Оператор цикла – с параметром.

Перегрузка операций – разрешается.

Дополнительные требования – операции ++, --.

Эквивалентность типов – структурная.

Класс грамматик – SLR(1)-грамматики.

Промежуточный язык – тетрады.

Состав операторов языка :

  • оператор присваивания;

  • оператор ввода;

  • оператор вывода;

  • оператор безусловного перехода;

  • условный оператор, условие в котором задается отношением;

  • оператор цикла for;

  • составной оператор.

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

  • определение длины вектора;

  • сумма векторов;

  • скалярное произведение векторов;

  • умножение константы или простой переменной целого или вещественного типов на вектор;

1.2. Формализм для описания синтаксиса.

Синтаксис языка описан с помощью модифицированных форм Бэкуса-Наура:

- металингвистические переменные состоят из строчных букв русского алфавита и знаков подчеркивания; имя каждой переменной взято в <угловые скобки>;

- зарезервированные слова обозначаются словами английского языка, состоящими из строчных латинских букв;

- в [квадратные скобки] заключаются элементы, которые могут отсутствовать;

- повторяющиеся нуль или более раз элементы заключаются в {фигурные скобки};

1.3. Лексика языка.

1.3.1. Терминальные символы языка.

К терминальным символам языка относятся:

  • 26 букв латинского алфавита, строчные и прописные: A B C ... Y Z a b c ... y z

  • 33 буквы русского алфавита : А Б В ... Ю Я а б в ... ю я

  • 10 цифр : 0 1 2 3 4 5 6 7 8 9

  • 21 специальный символ : [ ] { } , . > < = ! + - * / " _ ( ) : & |

  • символа пробела

  • символа конца строки.

  • символа табуляции

1.3.2. Лексемы и соглашения о разделителях.

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

+ - * / ( ) [ ] { } , ; : = > < ! - однолитерные разделители.

а также комбинации специальных символов (двулитерные разделители)

<= знак оператора меньше или равно.

>= знак оператора больше или равно.

== знак оператора равно.

!= знак оператора не равно.

&& знак оператора and

|| знак оператора or.

  1. Комментарии.

Комментарии - любые символы, заключенные в /* */.

1.3.4. Идентификаторы.

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

Синтаксис :

<идентификатор>::=<буква> {<буква>|<цифра>}

<буква>::='_'|'a'|'b'|'c'|'d'|'e'|'f'|'g'|'h'|'i'|'j'|'k'|'l'|'m'|'n'|'o'|'p'|'q'|'r'|'s'|'t'|'u'|'v'|'w'|'x'|'y'|'z'|

|'A'|'B'|'C'|'D'|'E'|'F'|'G'|'H'|'I'|'J'|'K'|'L'|'M'|'N'|'O'|'P'|'Q'|'R'|'S'|'T'|'U'|'V'|'W'|'X'|'Y'|'Z'

<цифра>::='0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'

Строчные и заглавные буквы различаются. Ограничение на длину: длина идентификатора не может быть больше 32 символов. Идентификатор должен быть уникальным.