Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчёт по Лабораторной Работе 1

.docx
Скачиваний:
3
Добавлен:
11.01.2022
Размер:
39.67 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

им. Р.Е. АЛЕКСЕЕВА

ИНСТИТУТ ЭКОНОМИКИ И УПРАВЛЕНИЯ

Дисциплина "Формальные языки и алгоритмы"

Отчет

по лабораторной работе № 1

Выполнил: Наймушин Сергей Михайлович

студент группы: 20-САИ

Проверил: Ковригин Дмитрий Анатольевич

Нижний Новгород

Нижний Новгород 2021

Задание Лабораторной работы и её Цель.

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

Входные данные и выходные данные, метод решения.

Вход: Входной поток символов.

Выход: Список распознанные и рассортированных по категориям данных.

Метод: Для введения в программу алфавита символов, цифр и знаков, и их сортировки в основном я использовал регулярные выражения RegExp.

Благодаря им я создал лист паттернов (var patterns), для всех вводимых данных.

RetrieveId(Match) причислял данные к конкретной группе и передавал данные в конструкт Lexem.

Распределение входного потока происходило через выражение Parse, с английского разбор-разбирать, которое непосредственно рассортировывало данные.

Всё выше перечисленное находилось под отдельным классом лексического анализатора (class LexicalAnalyzer)

Вывод данных был произведён благодаря internal struct Lexem, в который записывались рассортированные данные по пронумерованным категориям.

Выводился итоговый результат в консоль, с помощью класса (class Program), данные приходили как раз из конструкта Lexem, описанного выше.

Примеры работы программы

Вводим для начала знаки различных типов.

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

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

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

Ссылка на репозиторий с полным кодом программы: https://github.com/KoniSavara/ITS-ME-KONIO/tree/Lex_Analyzer