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

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

Пояснительная записка

к курсовой работе по дисциплине

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

Проверила: Опалёва Э.А.

Выполнили: Зубарев П.С.

Татаренкова Е.А.

гр.3305

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

Содержание

1 Формальная постановка задачи 3

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

2.1. Синтаксис входного языка 4

2.2. Семантика входного языка 5

2.2.1.Встроенные типы данных входного языка 5

2.2.2.Операции входного языка и их приоритет 5

2.2.3.Конструкции входного языка 6

3 Описание этапа лексического анализа 7

3.1 Описание типов лексем 7

3.2 Функции лексического анализатора 13

3.3 Тестирование лексического анализатора 13

4 Описание этапа синтаксического анализа 15

4.1 Исходная порождающая КС-грамматика 16

4.2 Разбиение исходной грамматики на подграмматики 17

4.3. Разработка ДМП-процессора, порожденного исходной грамматикой 21

4.3.1 Алгоритм разбора для LL(1)-грамматик 21

4.3.2 Взаимодействие ДМП-процессоров 22

4.3.3 Алгоритм работы ДМП-процессора 22

4.3.4 Управляющие таблицы ДМП-процессоров 24

4.3. Описание перевода во внутренний язык 36

4.3.1 Формат тетрады 36

4.3.2 Формат тетрад для представления основных операторов 36

4.3.3 Представление основных операторов(описанных в разделе семантики) с помощью тетрад 37

4.4.4 Взаимодействие АТГ с имеющимися таблицами лексического анализатора 38

4.4.5 Разработка атрибутной транслирующей грамматики 39

4.4.6 Описание используемых операционных символов 45

4.4.7 Атрибутный перевод для LL(1)-грамматик 47

4.4.8 Атрибутный ДМП-процессор 47

4.4.9 Тестовый пример 49

Выводы 52

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

Приложение 1 Тестирование ДМП-процессора 54

1 Формальная постановка задачи

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

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

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

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

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

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

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

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

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

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

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

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

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