Compiler Theory - это приложение для редактирования и анализа кода. Оно предоставляет удобный текстовый редактор с расширенными возможностями, также включает функции анализа кода с поддержкой автодополнения и вывода ошибок компиляции.
- Лабораторная работа №1: Разработка пользовательского интерфейса (GUI) для языкового процессора
- Лабораторная работа №2: Разработка лексического анализатора (сканера)
Тема: Создание текстового редактора с возможностью последующего расширения в направлении языкового процессора.
Цель работы: Разработка графического приложения с интерфейсом пользователя для редактирования текстовых данных. Приложение предполагается использовать как основу для будущего расширения функционала в направлении языкового процессора.
Язык программирования: C#, Avalonia.
-
Меню
-
Пункт меню Подпункты Файл 
Правка 
Текст 
Справка 
-
Базовые Операции:
-
Редактирование Кода:
-
Настройки Внешнего Вида:
-
Открытие Примеров Кода:
-
Поддержка Многозадачности:
- ReactiveUI (версия 19.5.41)
- ReactiveUI.Fody (версия 19.5.41)
- Avalonia (версия 11.0.6)
- Avalonia.Controls.DataGrid (версия 11.0.6)
- AvaloniaEdit (версия 11.0.6)
- Material.Avalonia (версия 3.4.0)
- Material.Avalonia.DataGrid (версия 3.4.0)
- Material.Avalonia.Dialogs (версия 3.4.0)
- Material.Icons.Avalonia (версия 2.1.0)
Тема: разработка лексического анализатора (сканера).
Цель работы: изучить назначение лексического анализатора. Спроектировать алгоритм и выполнить программную реализацию сканера.
| № | Тема | Пример верной строки | Справка |
|---|---|---|---|
| 17 | Объявление и инициализация строковой константы на языке Rust | const NAME:&str = "GFG"; | ссылка |
В соответствии с вариантом задания необходимо:
- Спроектировать диаграмму состояний сканера.
- Разработать лексический анализатор, позволяющий выделить в тексте лексемы, иные символы считать недопустимыми (выводить ошибку).
- Встроить сканер в ранее разработанный интерфейс текстового редактора. Учесть, что текст для разбора может состоять из множества строк.
Входные данные: строка (текст программного кода).
Выходные данные: последовательность условных кодов, описывающих структуру разбираемого текста с указанием места положения и типа.
const my_str: &str = "hello world";const my_str: &str = "";const my_str: &str = "shielding \" test";-
Тест №1. Пример, показывающий все возможные лексемы, которые могут быть найдены лексическим анализатором.

- ReactiveUI (версия 19.5.41)
- ReactiveUI.Fody (версия 19.5.41)
- Avalonia (версия 11.0.6)
- Avalonia.Controls.DataGrid (версия 11.0.6)
- AvaloniaEdit (версия 11.0.6)
- Material.Avalonia (версия 3.4.0)
- Material.Avalonia.DataGrid (версия 3.4.0)
- Material.Avalonia.Dialogs (версия 3.4.0)
- Material.Icons.Avalonia (версия 2.1.0)
Примечание: Убедитесь, что все пакеты устанавливаются из указанных версий для обеспечения совместимости.
Тема: разработка синтаксического анализатора (парсера).
Цель работы: изучить назначение синтаксического анализатора, спроектировать алгоритм и выполнить программную реализацию парсера.
| № | Тема | Пример верной строки | Справка |
|---|---|---|---|
| 17 | Объявление и инициализация строковой константы на языке Rust | const NAME:&str = "GFG"; | ссылка |
В соответствии с вариантом задания на курсовую работу необходимо:
- Разработать автоматную грамматику.
- Спроектировать граф конечного автомата (перейти от автоматной грамматики к конечному автомату).
- Выполнить программную реализацию алгоритма работы конечного автомата.
- Встроить разработанную программу в интерфейс текстового редактора, созданного на первой лабораторной работе.
G[<C> = <строковая константа>]:
VT = { 'const', str’, ‘"’, '', ':', '&', '=', ';', _, ‘a’…’z’, ‘A’…’Z’, ‘0’…’9’}
VN = { <C>, I, IT, T, A, S, ST, OE, E }
P = {
- <C> → ‘const’ I
- I → '_' IT
- I → letter IT
- IT → ‘_’ IT
- IT → digit IT
- IT → letter IT
- IT → ':' T
- T → '&str' A
- A → '=' S
- S → '"' ST
- ST → symbol ST
- ST → '\"' ST
- ST → '"' OE
- OE → ';'
- E → epsilon
}
Согласно классификации Хомского, грамматика G[Z] является полностью автоматной.
Тема: нейтрализация ошибок (метод Айронса).
Цель работы: реализовать алгоритм нейтрализации синтаксических ошибок и дополнить им программную реализацию парсера.
Разрабатываемый синтаксический анализатор построен на базе автоматной грамматики. При нахождении лексемы, которая не соответствует грамматике предлагается свести алгоритм нейтрализации к последовательному удалению следующего символа во входной цепочке до тех пор, пока следующий символ не окажется одним из допустимых в данный момент разбора.
Этот алгоритм был мной уже реализован в Лабораторной работе №3. В таблице ошибок выводятся их местоположение и текст ошибки, содержащий информацию об отброшенном фрагменте.
Лабораторная работа №5: Включение семантики в анализатор. Создание внутренней формы представления программы
Тема: включение семантики в анализатор, создание внутренней формы представления программы, используя польскую инверсную запись (ПОЛИЗ).
Цель работы: дополнить анализатор, разработанный в рамках лабораторных работ, этапом формирования внутренней формы представления программы.
Тема: реализация алгоритма поиска подстрок с помощью регулярных выражений.
Цель работы: реализовать алгоритм поиска в тексте подстрок, соответствующих заданным регулярным выражениям.
Тема: реализация метода рекурсивного спуска для синтаксического анализа.
Цель работы: разработать для грамматики алгоритм синтаксического анализа на основе метода рекурсивного спуска.

















