Теория формальных языков и компиляторов - лабораторные работы АВТ-214, АП-226 — Лабораторная работа 1 "Разработка пользовательского интерфейса (GUI) для языкового процессора"

Тема: Разработка пользовательского интерфейса (GUI) для языкового процессора.

Цель работы: Разработать приложение – текстовый редактор. 

В дальнейшем он будет дополнен функциями языкового процессора. Приложение должно иметь графический интерфейс пользователя.

Язык реализации и среда разработки приложения выбираются студентом самостоятельно. 

На рисунке приведен пример рабочего окна текстового редактора.

 

Текстовый редактор должен иметь следующие элементы:

1 – основное меню программы;

2 – панель инструментов;

3 – окно/область ввода/редактирования текста;

4 – окно/область отображения результатов работы языкового процессора (в этой области ввод текста запрещен).

Панель инструментов содержит кнопки вызова часто используемых пунктов меню:

  • Создание документа 
  • Открытие документа 
  • Сохранение текущих изменений в документе 
  • Отмена изменений 
  • Повтор последнего изменения
  • Копировать текстовый фрагмент 
  • Вырезать текстовый фрагмент
  • Вставить текстовый фрагмент 
  • Запуск синтаксического анализатора
  • Вызов справки - руководства пользователя
  • Вызов информации о программе
Пример панели инструментов.png

Главное меню программы имеет следующую структуру:

Файл

  • Создать
  • Открыть
  • Сохранить
  • Сохранить как
  • Выход

Правка

  • Отменить
  • Повторить
  • Вырезать
  • Копировать
  • Вставить
  • Удалить
  • Выделить все

Текст

  • Постановка задачи
  • Грамматика
  • Классификация грамматики
  • Метод анализа
  • Диагностика и нейтрализация ошибок
  • Тестовый пример
  • Список литературы
  • Исходный код программы

Пуск

Справка

  • Вызов справки
  • О программе

 

В первой лабораторной работе необходимо, чтобы работали все функции из меню «Файл», «Правка» и «Справка».

Меню «Текст» будет реализовано в последующих лабораторных работах и курсовой работе. При вызове команд этого меню должны открываться окна с соответствующей информацией.

Команда «Пуск» предназначена для запуска анализатора текста. Она также будет реализована в последующих лабораторных работах.

Приложение должно иметь справочную систему, запускаемую командой «Вызов справки». В первой лабораторной работе справка должна содержать описание всех реализованных функций меню. В курсовой работе справка обязательно включает информацию из пунктов меню «Текст».

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

В область отображения результатов выводятся сообщения и результаты работы языкового процессора. 

Учтите, что в курсовой работе, если сообщение относится к ошибке в тексте из окна редактирования, то при щелчке на сообщении курсор в окне редактора должен устанавливаться в позицию ошибки (возможно выделение ошибочного фрагмента).

Интерфейс может содержать дополнительные элементы (строка состояния) и возможности работы с несколькими файлами в отдельных вкладках или окнах (см. раздел “Дополнительное задание”).

Выполнение представленных ниже требований является обязательным для получения оценки за лабораторную работу:

  1. Приложение имеет графический интерфейс пользователя.
  2. Приложение запускается и корректно работает на компьютере без установленной среды разработки (IDE), все необходимые модули поставляются вместе с программой.
  3. В заголовке окна отображается корректное название приложения.
  4. Дизайн интерфейса соответствует примеру (см. раздел “Интерфейс текстового редактора”), содержит все необходимые элементы. 
  5. Программа корректно реализует все заданные функции меню “Файл”, “Правка” и “Справка” и панели инструментов.
  6. Окно приложения корректно реагирует на изменение размера. Предусмотрены ограничения размера, если это необходимо.
  7. Пользователь может изменять соотношение размеров области редактирования и области вывода результатов.
  8. В окне редактирования и области вывода результатов, при необходимости, появляется полоса прокрутки.
  9. При открытии нового файла или выходе из программы приложение должно предлагать сохранить изменения в файле, если пользователь редактировал текст.

В случае, если студент берет дополнительное задание, то он сообщает об этом преподавателю на паре, на которой была выдана лабораторная работа. 

Реализация представленных ниже требований является дополнительной работой, за которую можно получить максимально 5 бонусных баллов:

  1. Изменение размеров текста в окне редактирования и окне вывода результатов.
  2. Интерфейс с вкладками, позволяющий одновременно работать с несколькими текстами (для окна редактирования).
  3. Выбор языка интерфейса приложения (интернационализация).
  4. Нумерация строк в окне редактирования текста.
  5. Открытие файла при перетаскивании иконки в окно программы.
  6. Наличие строки состояния для отображения текущей информации о состоянии работы приложения.
  7. Базовая подсветка синтаксиса в окне редактирования.
  8. Интерфейс с вкладками, позволяющий работать с разными модулями программы (для окна вывода результатов)
  9. Отображение ошибок в окне вывода результатов в виде таблицы.
  10. Горячие клавиши для быстрых команд.
Пример интерфейса.png

Студент, выполнивший задание на лабораторную работу, прикрепляет ссылку на git-репозиторий с кодом программы в системe DiSpace в контролирующее мероприятие “Лабораторная работа 1”. По желанию студента в README-файле может быть продублирована информация, содержащаяся в руководстве пользователя (справке) к программе.

 

Оценка за выполнение лабораторной работы выставляется, если:

  1. выполнены требования контрольного списка.
  2. работа программы продемонстрирована преподавателю.
  3. в ходе разговора с преподавателем студент ответил на все вопросы.
  4. ссылка на репозиторий проекта прикреплена к контролирующему мероприятию (срок - 3-4 недели).

Для защиты лабораторной работы студенту необходимо ознакомиться с теоретическим материалом, представленным в лекции 1 (составитель Достовалов Д.Н.), а также быть готовым к вопросам в конце лекции. Рекомендуется ознакомиться с главой 1 учебного пособия “Теория языков программирования: проектирование и реализация”.