diff --git a/README.md b/README.md index 7cf83ae..f2742df 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ ### Интерфейс текстового редактора -![Главное окно программы](/README_images/main_window.png) +![Главное окно программы](/README_images/main_window_new.png) #### Получившийся текстовый редактор имеет следующие элементы: 1. Заголовок окна. @@ -110,6 +110,7 @@ ```sql DECLARE product_price CONSTANT INTEGER = 150; +expense_1_amount CONSTANT INTEGER := -50; ``` ```sql @@ -162,13 +163,15 @@ DECLARE productPrice3 CONSTANT INTEGER := 150; DECLARE expense_amount_4 CONSTANT | ------ | ------ | ------ | ------ | | 42 | Объявление и инициализация целочисленной константы в СУБД PostgreSQL | DECLARE product_price CONSTANT INTEGER := 150; | [ссылка](https://www.commandprompt.com/education/constants-in-postgresql-explained-with-examples/) | +[Примеры допустимых строк](#примеры-допустимых-строк) + **В соответствии с вариантом задания на курсовую работу необходимо:** 1. Разработать автоматную грамматику. 2. Спроектировать граф конечного автомата (перейти от автоматной грамматики к конечному автомату). 3. Выполнить программную реализацию алгоритма работы конечного автомата. 4. Встроить разработанную программу в интерфейс текстового редактора, созданного на первой лабораторной работе. -**Автоматная грамматика** +### Грамматика G[Z] = { VT, VN, P, Z } @@ -191,6 +194,30 @@ P = { } +### Классификация грамматики + + Согласно классификации Хомского, грамматика G[Z] является автоматной. Отметим, что правила должны быть либо только леворекурсивными, либо только праворекурсивными. Комбинация тех и других не допускается. Однако данная грамматика содержит одновременно леворекурсивные (2)-(3) и праворекурсивные продукции (5)-(6), и, следовательно, не является полностью автоматной. + +### Граф конечного автомата + +![Граф конечного автомата](/README_images/finite_state_machine.jpg) + +### Тестовые примеры + +1. **Тест №1.** Все выражения написаны корректно. + + ![Тест 1](/README_images/main_window_new.png) +3. **Тест №2.** Пример ошибок. + + > При нажатии на лексему в таблице, соответствующий фрагмент текста подсвечивается в поле редактирования. + + ![Тест 2](/README_images/parser_test_1.png) +6. **Тест №3.** Пример ошибок. + + > При нажатии на лексему в таблице, соответствующий фрагмент текста подсвечивается в поле редактирования. + + ![Тест 3](/README_images/parser_test_2.png) + ## Лабораторная работа №4: Нейтрализация ошибок (метод Айронса) ## Лабораторная работа №5: Включение семантики в анализатор. Создание внутренней формы представления программы