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

46

Лабораторные работы

ЛАБОРАТОРНАЯ РАБОТА №1. РАЗРАБОТКА ЛЕКСИЧЕСКОГО АНАЛИЗАТОРА

ЛАБОРАТОРНАЯ РАБОТА №2. РАЗРАБОТКА СИНТАКСИЧЕСКОГО АНАЛИЗАТОРА

ЛАБОРАТОРНАЯ РАБОТА №3. ФОРМИРОВАНИЕ ПОСТФИКСНОЙ ЗАПИСИ

ЛАБОРАТОРНАЯ РАБОТА №4. РАЗРАБОТКА ГЕНЕРАТОРА КОДА

КУРСОВОЙ ПРОЕКТ

ТЕСТИРОВАНИЕ ПРОЕКТА

Соглашения по оформлению кода

Указания по оформлению псевдокода

ЛИТЕРАТУРА

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

Перед тем, как приступить к выполнению лабораторных работ, необходимо изучить первые 4 раздела пособия [1].

В лабораторных работах предлагается трехпроходная организация компилятора. Блок сканирования считывает исходную программу и представляет ее в форме файла лексем (Лабораторная работа №1). Синтаксический анализатор читает этот файл, разбирает (Лабораторная работа №2) и выдает новое представление программы в постфиксной форме (Лабораторная работа №3). Наконец, этот файл считывается генератором кода, который создает объектный код программы (Лабораторная работа №4).

При написании учебного транслятора важно то, что реализующие каждый проход отдельные программы легче отлаживать, чем одну большую. Во 2-й и 3-й лабораторных работах пишется одна и та же программа. В результате выполнения лабораторной работы №2 должна быть написана программа, выполняющая синтаксический анализ (включая выявление и диагностику всех синтаксических ошибок). В лабораторной работе №3 в программу добавляются функции формирования постфиксной записи.

ЛАБОРАТОРНАЯ РАБОТА №1.

РАЗРАБОТКА ЛЕКСИЧЕСКОГО АНАЛИЗАТОРА

1. Порядок выполнения работы.

    1. Создать Windows-приложение со следующими функциями:

      1. чтение и запись текстового файла с меню, панелью инструментов;

      2. разбиение текста на отдельные слова и символы и вывод их в файла;

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

      3. выделение лексем, вывод их в файла;

      4. создание таблицы, номера строк, содержащей лексемы, их классы, вывод этой таблицы в файл;

      5. выполнить п.1.1.3-4 для оператора присваивания для оператора присваивания при условии, что <Идент> ::= <Буква> (идентификатор состоит из одной буквы) <Const> ::= <Цифра> (Const состоит из одной цифры).

      6. выполнить п.1.1.3-4 для оператора присваивания для оператора присваивания при условии, что идентификатор состоит более, чем из одной буквы и Const состоит более, чем из одной цифры.

      7. выполнить п.1.1.3-4 для реализуемого языка, согласно своего варианта.

    2. Ознакомиться с разделом 5 пособия [1] и выделить в отчет определения следующих понятий:

        1. номер строки исходного текста транслируемой программы,

        2. лексема,

        3. классы лексем,

        4. признаки классов лексем,

        5. таблица, содержащая лексемы,

        6. форма Бэкуса–Наура (БНФ).

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

    4. Составить контрольные примеры на реализуемом языке. Хотя бы один пример должен проверять поведение вашей программы при наличии недопустимых символов в транслируемом файле.

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

    6. Оформить отчет.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]