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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

Файл

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

Правка

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

Текст

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

Пуск

Справка

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

 

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

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

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

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

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

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

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

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

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

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

Реализация представленных ниже требований является альтернативой защите лабораторной работы:

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

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

 

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

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

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