Разработка текстового редактора с функциями языкового процессора.
-
Лабораторная работа №1 "Разработка пользовательского интерфейса (GUI) для языкового процессора"
-
Лабороторная работа №2 "Разработка лексического анализатора (сканера)"
-
Лабороторная работа №3 "Разработка синтаксического анализатора (парсера)"
-
Лабороторная работа №4 "Нейтрализация ошибок (метод Айронса)"
-
Лабороторная работа №6 "Реализация алгоритма поиска подстрок с помощью регулярных выражений"
-
Лабороторная работа №7 "Реализация метода рекурсивного спуска для синтаксического анализа"
Тема: разработка текстового редактора с возможностью дальнейшего расширения функционала до языкового процессора.
Цель работы: разработать приложение с графическим интерфейсом пользователя, способное редактировать текстовые данные. Это приложение будет базой для будущего расширения функционала в виде языкового процессора.
Язык реализации: C#.
- Меню
Пункт меню Подпункты меню Файл Правка Текст Пуск __ Справка - Панель инструментов
- Создать
- Открыть
- Сохранить
- Отменить
- Повторить
- Копировать
- Вырезать
- Вставить
- Пуск
- Вызов справки
- О программе
- Увеличить размер текста
- Уменьшить размер текста
- Область редактирования
Область для ввода текста. При открытии файла отображает текст из него. - Область отображения результатов
Область отображения результатов выводит сообщения и результаты работы языкового процессора.
Подпункт | Содержание |
---|---|
Вызов справки | ![]() |
О программе | ![]() |
При нажатии кнопки "Вызов справки" открывается вкладка веб-браузера с содержимым справки программы.
Тема: разработка текстового редактора с возможностью дальнейшего расширения функционала до языкового процессора.
Цель работы: Изучить назначение лексического анализатора. Спроектировать алгоритм и выполнить программную реализацию сканера.
В соответствии с вариантом задания необходимо:
- Спроектировать диаграмму состояний сканера (примеры диаграмм представлены в прикрепленных файлах).
- Разработать лексический анализатор, позволяющий выделить в тексте лексемы, иные символы считать недопустимыми (выводить ошибку).
- Встроить сканер в ранее разработанный интерфейс текстового редактора. Учесть, что текст для разбора может состоять из множества строк.
Входные данные - строка (текст программного кода). Выходные данные - последовательность условных кодов, описывающих структуру разбираемого текста с указанием места положения и типа ("число", "идентификатор", "знак", "недопустимый символ" и т.д.).
№ | 4 |
Тема | Объявление комплексного числа с инициализацией на языке C# |
Пример верной строки | Complex c1 = new Complex(1.2, 6.0); |
Complex c1 = new Complex(1.2, 2.3);
Complex complex = new Complex(-12.8, -2.0);
Complex temp = new Complex(125.0, -2.36);
Complex c2 = new Complex(-5.0, 45.23);
Язык реализации: C#.
Ввод нескольких верных строк (продолжение)
Ввод нескольких верных строк (продолжение)
Тема: Разработка синтаксического анализатора (парсера).
Цель работы: Изучить назначение синтаксического анализатора. Спроектировать алгоритм и выполнить программную реализацию парсера.
Язык реализации: C#.
В соответствии с вариантом задания на курсовую работу необходимо:
- Разработать автоматную грамматику.
- Спроектировать граф конечного автомата (перейти от автоматной грамматики к конечному автомату).
- Выполнить программную реализацию алгоритма работы конечного автомата.
- Встроить разработанную программу в интерфейс текстового редактора, созданного на первой лабораторной работе.
G[<КОМП> = <Комплексное_число>]:
VT = { ‘Complex’, ‘a’…’z’, ‘A’…’Z’, ‘0’…’9’, ‘.’, ‘(’, ‘)’, ‘,’, ‘;’, ‘ ‘, ‘=’, ‘new’ }
VN = { <КОМП>, IDENT, TYPE, ASSIGN, NEW, CONSTRUCTOR, REAL, IMAGIN, DOT, DIGIT, END, SIGN, SEPARATOR }
P = {
<КОМП> -> ‘Complex’ IDENT
IDENT -> letter IDREM
IDREM -> letter IDREM|digit IDREM|_IDREM|'='NEW
NEW -> 'new' TYPE
TYPE -> 'Complex' CONSTRUCTOR
CONSTRUCTOR -> '(' SIGN
SIGN -> '-' NUM|digit NUM
NUM -> digit REAL|'.'NUM|',' IMAGINARY
REAL -> digit REALREM
REALREM -> digit REALREM|','IMAGINARY
IMAGINARY -> digit INTIMAGINARY
INTIMAGINARY -> digit INTIMAGINARY|'.'INTIMAGINARY|')'END
END -> ';'
letter → ‘a’ | ‘b’ | … | ‘z’ | ‘A’ | ‘B’ | … | ‘Z’
digit → ‘0’ | ‘1’ | … | ‘9’
}
Объяснение:
<КОМП> - начальный символ, представляет полное объявление комплексного числа.
TYPE - определяет тип данных как "Complex".
IDENT - представляет идентификатор переменной (имя переменной).
ASSIGN - представляет оператор присваивания "=" с пробелами вокруг.
NEW - ключевое слово "new" для создания нового объекта.
CONSTRUCTOR - вызов конструктора "Complex" с двумя числами в качестве аргументов.
SIGN - представляет знак "+" или "-".
REAL - представляет действительную часть комплексного числа, возможно с знаком (+ или -), за целой частью следует точка и мнимая часть.
IMAGIN - представляет мнимую часть комплексного числа.
DOT - представляет точку.
DIGIT - представляет цифру от 0 до 9.
END - представляет точку с запятой, обозначающую конец оператора.
Лабораторная работа №5 "Включение семантики в анализатор. Создание внутренней формы представления программы."
Тема: Включение семантики в анализатор. Создание внутренней формы представления программы..
Цель работы: Дополнить анализатор, разработанный в рамках лабораторных работ, этапом формирования внутренней формы представления программы.
Язык реализации: C#.
Вариант | 2 |
Описание | В качестве внутренней формы представления программы выберем тетрады. Тетрада имеет четыре поля: op, arg1, arg2 и result. |
Задание | 1) Дополнить парсер грамматикой G[<АВ>]. Реализовать данную КС-граммматику методом рекурсивного спуска: 1. E → TA 2. A → ε |
Тема: Реализация алгоритма поиска подстрок с помощью регулярных выражений.
Цель работы: Реализовать алгоритм поиска в тексте подстрок, соответствующих заданным регулярным выражениям.
Язык реализации: C#.
Задание:
- Построить РВ для поиска номеров социального страхования
США (SSN), которые представляют собой 9-значные номера в формате
XXX-XX-XXXX, где каждый X может быть любой цифрой [0-9].
2.Построить РВ, описывающее имя пользователя (набор букв и цифр длиной от 2 до 15 символов, первым символом должен быть @). - Построить РВ, описывающее одно- и многострочные комментарии (язык C++).
Пример работы программы
Задание №1
Задание №2
Задание №3
Тема: Реализация метода рекурсивного спуска для синтаксического анализа.
Цель работы: Разработать для грамматики алгоритм синтаксического анализа на основе метода рекурсивного спуска.
Язык реализации: C#.
Вариант 17
Для грамматики G[Program] разработать и реализовать алгоритм
анализа на основе метода рекурсивного спуска.
G[Program]:
- Program -> ε | Instr Program
- Instr -> '+' | '-' | '*' | '/' | '_' | '=' | '>' | '&' | '|' | '~' | '$' | '%' | '' | '@' | '['
Program ']'
Примечание: данными продукциями описывается эзотерический язык программирования FALSE.
Пример работы программы