Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Постановка задачи к курсовой работе



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

1) В соответствии с номером варианта составить формальное описание модельного языка программирования с помощью:

а) РБНФ;

б) диаграмм Вирта;

в) формальных грамматик.

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

3) Составить таблицы лексем и диаграмму состояний с действиями для распознавания и формирования лексем языка.

4) По диаграмме с действиями написать функцию сканирования текста входной программы на модельном языке.

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

6) Реализовать синтаксический анализатор текста программы на модельном языке методом рекурсивного спуска.

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

8) Дополнить синтаксический анализатор процедурами проверки семантической правильности программы на модельном языке в соответствии с контекстными условиями вашего варианта.

9) Вывести примеры таблиц идентификаторов и двуместных операций.

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

11) Записать правила вывода грамматики с действиями по переводу в ПОЛИЗ программы на модельном языке.

12) Пополнить разработанное программное средство процедурами, реализующими генерацию внутреннего представления введенной программы в форме ПОЛИЗа.

13) Разработать интерпретатор ПОЛИЗа программы на модельном языке.

14) Составить набор контрольных примеров, демонстрирующих:

а) все возможные типы лексических, синтаксических и семантических ошибок в программах на модельном языке;

б) перевод в ПОЛИЗ различных конструкций языка;

в) представить ход интерпретации синтаксически и семантически правильной программы с помощью таблицы.

Требования к содержанию курсовой работы

 

Курсовая работа должна иметь следующую структуру и состоять из разделов.

Введение

1 Постановка задачи

2 Формальная модель задачи

3 Спецификация основных процедур и функций

3.1 Лексический анализатор

3.2 Синтаксический анализатор

3.3 Семантический анализатор

3.4 Генерация внутреннего представления программы

3.5 Интерпретатор программы

4 Структурная организация данных

4.1 Спецификация входных данных

4.2 Спецификация выходных данных

5 Разработка алгоритма решения задачи

5.1 Укрупненная схема алгоритма программного средства

5.2 Детальная разработка алгоритмов отдельных подзадач

6 Установка и эксплуатация программного средства

7 Работа с программным средством

Заключение

Список использованных источников

Приложение А – Текст программы

Приложение Б – Контрольный пример

 

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

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

Формальная модель задачи. Данный раздел содержит положения из теории формальных языков, грамматик и автоматов, лежащих в основе разработки компилятора модельного языка.

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

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

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

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

Установка программного средства. Описываются все действия, необходимые для установки программного средства (ПС) на ПЭВМ. Также объем, занимаемый ПС на жестком магнитном диске, минимальный объем оперативной памяти, необходимый для его эксплуатации и другие технические характеристики оборудования.

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

Заключение. В заключении приводятся основные выводы и перспективы дальнейшего развития представленного ПС.

Список использованных источников представляет собой перечень всей литературы, которая была использована при разработке ПС и оформлении документации на него. Список использованных источников формируется в том порядке, в котором были ссылки на использованную литературу, с указанием издательства, года издания и количества листов в книге согласно СТП101-00.

Приложения должны содержать текст ПС, контрольные и тестовые примеры, результаты работы ПС.

5 Индивидуальные варианты задания

 

Операции языка (первая цифра варианта) представлены в таблицах 5.1 – 5.4.

 

Таблица 5.1 - Операции группы «отношение»

 

Номер Синтаксис группы операций (в порядке следования: неравно, равно, меньше, меньше или равно, больше, больше или равно)
1 <операции_группы_отношения>:: = < > | = | < | <= | > | >=
2 <операции_группы_отношения>:: = != | = = | < | <= | > | >=
3 <операции_группы_отношения>::= NE | EQ | LT | LE | GT | GE

 

 

Таблица 5.2 - Операции группы «сложение»

 

Номер Синтаксис группы операций (в порядке следования: сложение, вычитание, дизъюнкция)
1 <операции_группы_сложения>:: = + | - | or
2 <операции_группы_сложения>:: = + | - | ||
3 <операции_группы_сложения>:: = plus | min | or

 

Таблица 5.3 - Операции группы «умножение»

 

Номер Синтаксис группы операций (в порядке следования: умножение, деление, конъюнкция)
1 <операции_группы_умножения>::= * | / | and
2 <операции_группы_умножения>:: = * | / | &&
3 <операции_группы_умножения>::= mult | div | and

 

Таблица 5.4 - Унарная операция

 

Номер Синтаксис операции
1 <унарная_операция>::= not
2 <унарная_операция>::= !
3 <унарная_операция>::= ~

 

Выражения языка задаются правилами:

 

<выражение>::= <операнд>{<операции_группы_отношения> <операнд>}

<операнд>::= <слагаемое> {<операции_группы_сложения> <слагаемое>}

<слагаемое>::= <множитель> {<операции_группы_умножения> <множитель>}

<множитель>::= <идентификатор> | <число> | <логическая_константа> |

                        <унарная_операция> <множитель> | (<выражение>)

<число>::= <целое> | <действительное>

<логическая_константа>::= true | false

 


Поделиться:



Последнее изменение этой страницы: 2019-06-09; Просмотров: 275; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь