В начале курсового проектирования студент должен модифицировать исходное описание языка (БНФ), выданное ему в качестве задания на лабораторные работы, добавив в него одну из конструкций языка высокого уровня (см. таблицу Б.1) в соответствии со своим вариантом.
Таблица Б.№ варианта Конструкция языка IF <Выражение> THEN <Список операторов> 1. {ELSE <Список операторов >} ENDIF FOR <Присваивание> TO <Выражение> DO 2. <Список операторов> ENDFOR WHILE <Выражение> DO 3. <Список операторов> ENDWHILE DO 4. <Список операторов> WHILE <Выражение> CASE <Идентификатор> OF <Константа>: <Список операторов> 5.
{<Список альтернатив>} ENDCASE 6. GO TO <метка> IF ( <Выражение> ) <Оператор> 7. {ELSE <Оператор >} № варианта Конструкция языка FOR <Присваивание> TO <Выражение> 8.
<Оператор> WHILE ( <Выражение> ) 9.
<Оператор> В вариантах 7-9 <Оператор> может быть простым или составным.
Конструкции, ограничивающие составной оператор (begin - end, пара фигурных скобок и пр.) выбираются студентом.
Количество возможных сочетаний вариантов заданий для лабораторных работ и вариантов языковых конструкций достаточно велико, чтобы обеспечить неповторяющимися заданиями на курсовое проектирование одновременно несколько групп студентов. Для вариантов 8-заданий на лабораторные работы не рекомендуется добавлять конструкции 24 и 8-9 при выполнении курсового проекта, т.к. составление разумных программ с циклами в языке, где имеются только логические операции и типы данных едва ли возможно.
Целью курсового проектирования является разработка транслятора с ограниченного подмножества языка высокого уровня.
Основными техническими требованиями к курсовому проекту являются:
1. Язык является расширением варианта языка для лабораторных работ, включающим одну из языковых конструкций высокого уровня.
2. Транслятор реализуется по трехпроходной схеме.
3. Исходными данными для транслятора является текст программы на заданном языке.
4. Результатом работы транслятора должен быть файл, содержащий микрокод в заданной системе команд, либо текст программы на языке Ассемблера.
5. Для разработки транслятора рекомендуется применять язык программирования С или С++.
6. При написании транслятора использовать метод рекурсивного спуска (нисходящего разбора).
Пояснительная записка к курсовому проекту должна включать:
1. Описание синтаксиса реализуемого языка в форме Бэкуса-Наура.
2. LL(1)-грамматику языка.
3. Синтаксический граф языка.
4. Описание разработанного программного обеспечения, включающее - краткое описание лексического анализатора;
- классы лексем различаемые лексическим анализатором;
- примеры входного и выходного фалов для лексического анализатора;
- краткое описание синтаксического анализатора (на уровне основных процедур и функций);
- тестовые примеры обнаружения ошибок синтаксическим анализатором, а также пример работы без синтаксических ошибок;
- краткое описание программы формирования постфиксной записи;
- пример работы программы формирования постфиксной записи (входной файл лексем и выходной файл с постфиксной записью);
- краткое описание программы генерации кода;
- тестовый пример работы генератора кода (входной файл с постфиксной записью программы, выходной файл, содержащий микрокод в заданной системе команд или инструкции языка Ассемблера.
5. Приложение (распечатки разработанного программного обеспечения).
Тестовый пример, демонстрирующий правильность работы компилятора при корректном входном коде должен обязательно включать (кроме варианта с конструкцией GO TO) следующие элементы:
Х оператор или группу операторов присваивания;
Х конструкцию языка высокого уровня, содержащую вложенную конструкцию языка высокого уровня;
Х конструкцию языка высокого уровня, внешнюю по отношению к предыдущим;
Х оператор или группу операторов присваивания.
В случае оператора GO TO, помимо операторов присваивания, должно содержаться несколько переходов как вперед, так и назад.
Pages: | 1 | ... | 10 | 11 | 12 | Книги по разным темам