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

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. Оформить отчет.

2. Содержание отчета.

2.1. Название работы и ее исполнители.

2.2. Цель работы.

2.3. БНФ реализуемого языка.

2.4. Список классов лексем реализуемого языка.

2.5. Описание грамматики реализуемого языка, используя общие обозначения нетерминалов и терминалов.

2.6. Краткое (по 2-3 предложения) описание процедур (функций), из которых состоит программа лексического анализа. Лучший вариант – включение описаний в текст программы в виде комментариев.

2.7. Листинг программы.

2.8. Распечатки контрольных примеров и результатов их выполнения.

2.9. Выводы по проделанной работе.

Лабораторная работа № 1. Лабораторная работа № 1.1. Создание каркаса транслятора.

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

Эти функциональные блоки стоит реализовать в отдельном проекте – библиотеке классов, которая будет предоставлять функции трансляции исходного языка. Чтобы создать библиотеку классов, необходимо воспользоваться пунктом меню MS Visual Studio «File» -> «New» -> «Project». В открывшемся диалоге выбираем тип проекта «Visual C#», шаблон проекта – «Class Library». В текстовых полях ниже задаем адекватное наименование для проекта и решения – например, Translation (здесь и далее имена проектов, классов, их полей и методов выбираются по своему усмотрению).

После нажатия кнопки «OK» среда разработки создаст библиотеку классов и добавит в нее один класс с оригинальным именем «Class1». Теперь стоит начать поочередно добавлять в наш проект классы: парсер файлов – Reader.cs, таблица идентификаторов – NameTable.cs, лексический анализатор – LexicalAnalyzer.cs, синтаксический анализатор – SyntaxAnalyzer.cs, генератор кода – CodeGenerator.cs (все классы объявляются с модификаторами public static). Вышеупомянутый Class1 можно либо удалить, либо переименовать.

Если на данном этапе все сделано правильно, то при запуске проекта (Ctrl + F5) среда разработки выдаст сообщение об ошибке – библиотека классов не относится к исполняемым типам проектов.

Для тестирования нашей библиотеки создадим в нашем решении еще один проект – GUI-приложение (в обозревателе решений щелкаем правой кнопкой по решению – «Add» -> «New Project», тип проекта «Visual C#», шаблон проекта – «Windows Forms Application», наименование - TestForm). Сделаем этот проект запускаемым по умолчанию (контекстное меню проекта -> «Set As StartUp Project») и добавим в него ссылку на нашу библиотеку. Для этого в контекстном меню проекта нужно выбрать пункт «Add Reference». В открывшемся диалоге на вкладке «Projects» выбираем нашу библиотеку и жмем «OK». После этого в коде формы подключаем пространство имен нашей библиотеки, используя директиву using.

using Translation;

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

Для отображения текстового содержимого на форме используются элементы управления RichTextBox. В них выводится соответственно содержимое исходного файла, результат обработки и сообщения хода обработки (например, ошибки синтаксиса при синтаксическом анализе). В меню необходимо реализовать, как минимум, три пункта: «Файл» -> «Открыть» (для открытия файла на исходном языке), «Файл» -> «Сохранить» (для сохранения результата), «Компиляция» -> «Выполнить» (для запуска преобразования).

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