Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методика выполнения курсовика и задания.doc
Скачиваний:
10
Добавлен:
22.03.2016
Размер:
163.33 Кб
Скачать

3. Задания на курсовую работу

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

Язык должен обеспечивать операции над переменными и константами заданных базовых типов, а также над переменными и компонентами производного типа, которые определяются вариантом задания. Состав операций должен включать как предусмотренные базовым языком, так и перечисленные в варианте задания. В языке должна быть определена операция преобразования типов при структурной или именной эквивалентности типов. В языке должна быть предусмотрена возможность создания пользовательских типов.

Язык должен допускать использование арифметических выражений, в состав которых могут входить константы и простые переменные базовых типов, компоненты структурированного типа, круглые скобки и знаки операций: сложение, вычитание, умножение, деление. Приоритет операций - обычный.

Язык должен допускать использование логических выражений, в состав которых могут входить отношения, круглые скобки и знаки логических операций: И, ИЛИ, НЕ и, в случае наличия в языке логического типа, константы и переменные этого типа. Приоритет операций - обычный.

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

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

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

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

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

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

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

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

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

Конкретный вид операторов определяется вариантом задания.

Программа на входном языке может содержать комментарии.

  1. Задание 1

Базовый язык– Паскаль.

Базовые типы: целый, вещественный, комплексный, ограниченный.

Структурированный тип – вектор с комплексными компонентами.

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

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

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

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

Класс грамматик– грамматики простого предшествования.

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

Задание 2

Базовый язык– Паскаль.

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

Структурированный тип– булевская матрица.

Операции над булевскими матрицами:определение размеров матрицы, конъюнкция и дизъюнкция матриц, инверсия матрицы,вывод на экран.

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

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

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

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

Задание 3

Базовый язык– Паскаль.

Базовые типы: целый, символьный.

Структурированный тип– символьная матрица.

Операции над символьными матрицами:определение размеров матрицы, конъюнкция и дизъюнкция матриц, инверсия матрицы, вывод на экран.

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

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

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

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

Задание 4

Базовый язык– Паскаль.

Базовые типы: целый, рациональный, ограниченный, перечислимый.

Структурированный тип– массив.

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

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

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

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

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

Задание 5

Базовый язык– Паскаль.

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

Структурированные типы:запись, список.

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

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

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

Класс грамматик– грамматики слабого предшествования.

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

Задание 6

Базовый язык– Паскаль.

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

Структурированные типы:символьная строка, стек.

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

Операции над стеком:определение количества элементов в стеке, вталкивание элемента в стек, выталкивание элемента из стека, чтение верхушки стека.

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

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

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

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

Задание 7

Базовый язык– Паскаль.

Базовые типы: целый, вещественный, ограниченный, перечислимый.

Структурированные типы:запись, массив, массив записей.

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

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

Класс грамматик– грамматики операторного предшествования.

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

Задание 8

Базовый язык–VisualBasic.

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

Структурированный тип – массив.

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

Оператор циклаDOLOOP.

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

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

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

Задание 9

Базовый язык– Паскаль.

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

Структурированный тип – множество.

Операции над множествами:проверка принадлежности элемента множеству (in), объединение, пересечение, дополнение множеств.

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

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

Класс грамматик– грамматики операторного предшествования.

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

Задание 10

Базовый язык– Паскаль.

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

Структурированные типы:запись, указатель.

Операции над указателями:присваивание, разыменование (@ и ^), сравнение (на равенство и неравенство).

Дополнительные требования:операторыnewиdispose.

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

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

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

Класс грамматик– грамматики слабого предшествования.

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

Задание 11

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

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

Структурированный тип – вектор с вещественными компонентами.

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

Дополнительные требования:операции++,--, условный оператор присваивания, операторы присваивания+=,*=,-=,/=.

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

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

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

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

Задание 12

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

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

Структурированные типы: структура, очередь.

Операции над очередью:определение количества элементов в очереди, добавление элемента в очередь, изъятие элемента из очереди, чтение первого и последнего элемента очереди.

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

Дополнительные требования:операторы присваивания+=,*=,-=,/=.

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

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

Класс грамматик– грамматики слабого предшествования.

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

Задание 13

Базовый язык– Паскаль.

Базовые типы: целый, рациональный комплексный, перечислимый, комплексный.

Структурированный тип– массив комплексных чисел.

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

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

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

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

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

Целевой язык — машинный код X86

Задание 14

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

Базовые типы: целый, вещественный, перечислимый.

Структурированные типы:массив, указатель.

Операции над указателями:присваивание, разыменование (*. и ->), сравнение (на равенство и неравенство).

Дополнительные требования:операторыnew иdelete, операции++,--, условный оператор присваивания, операторы присваивания+=,*=,-=,/=, функции.

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

Класс грамматик– грамматики простого предшествования.

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

Задание 15

Базовый язык– Java.

Базовые типы: целый, вещественный, перечислимый.

Структурированный тип:матрицы с вещественными компонентами.

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

Дополнительные требования:операции++,--, условный оператор присваивания, операторы присваивания+=,*=,-=,/=.

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

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

Класс грамматик– грамматики операторного предшествования.

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

Задание 16

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

Базовые типы: целый, вещественный, рациональный.

Структурированные типы:массив, указатель.

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

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

Дополнительные требования:операторыnew иdelete, операции++,--, условный оператор присваивания, операторы присваивания+=,*=,-=,/=.

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

Класс грамматик– грамматики простого предшествования.

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

Задание 17

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

Базовые типы: целый, вещественный, символьный.

Структурированный тип:массив.

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

Дополнительные требования: операции++,--, условный оператор присваивания, операторы присваивания+=,*=,-=,/=.

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

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

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

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

Задание 18

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

Базовые типы: целый, вещественный, символьный, перечислимый.

Структурированный тип:битовая строка.

Операции над битовыми строками:сложение, вычитание, умножение, деление битовых строк (как двоичных чисел), доступ к элементу строки по индексу, доступ к подстроке, конкатенация строк, преобразование битовой строки к целому числу и обратно.

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

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

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

Задание 19

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

Базовые типы: целый, вещественный, символьный.

Структурированный тип:символьная строка.

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

Дополнительные требования: функции, операторnew, операции++,--, условный оператор присваивания.

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

Класс грамматик– грамматики операторного предшествования.

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

Задание 20

Базовый язык–Java.

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

Структурированный тип – матрицы с комплексными компонентами.

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

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

Дополнительные требования:функции, операторnew, операции++,--.

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

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

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

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

Задание 21

Базовый язык–Java.

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

Структурированный тип– вектор с рациональными компонентами.

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

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

Дополнительные требования:функции, операторnew, операции++,--.

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

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

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

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

Задание 22

Базовый язык–C.

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

Структурированный тип – массив.

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

Дополнительные требования: функции, операторnew, операции++,--, условный оператор присваивания.

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

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

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

Задание 23

Базовый язык–Basic.

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

Структурированный тип – очередь с приоритетом.

Операции над очередью:определение количества элементов в очереди, добавление элемента в очередь, изъятие элемента из очереди, чтение первого элемента очереди.

Дополнительные требования: функции, операторnew, операции++,--, условный оператор присваивания.

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

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

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

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

Задание 25

Базовый язык–C++.

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

Структурированный тип – массив комплексный.

Операции над комплексными числами:доступ к вещественной и мнимой частям, определение модуля числа + операции над комплексными массивами: + *.

Дополнительные требования: функции, операторnew, операции++,--, условный оператор присваивания.

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

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

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

Список литературы

  1. Опалева Э.А., Самойленко В.П., Семенова О.Н. Формальные методы описания перевода: Учеб. пособие /СПбГЭТУ. СПб., 2000.

  2. Опалева Э.А., Самойленко В.П., Семенова О.Н. Методы синтаксического анализа: Метод. указания к лабораторным работам/ СПбГЭТУ. СПб., 1995.

  3. Опалева Э.А., Самойленко В.П. Формальные грамматики и распознающие автоматы: Учеб. пособие /ЛЭТИ. Л., 1991.

  4. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов /Пер. с англ. М.: Мир, 1979.

  5. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции: В 2 т. Т. 1/ Пер. с англ. М.: Мир, 1978.

  6. Ахо А., Сети Р., Ульман Дж. Компиляторы: принципы, технологии и инструменты /Пер. с англ. М.: Изд. дом «Вильямс», 2001.

  7. Эллис М., Строуструп В. Справочное руководство по языку программирования С++ с комментариями. Проект стандарта ANSI /Пер. с англ. М.:Мир, 1992.

  8. Шмидт В. Visual Basic 5.0 / М.: «АБФ», 1997.

  9. Ноутон П., Шилдт Г. JavaTM2/Пер. с англ. СПб.: «БХВ-Петербург», 2001.

23