Системное программное обеспечение. Лабораторный практикум. Алексей Молчанов

Системное программное обеспечение. Лабораторный практикум - Алексей Молчанов


Скачать книгу
качестве еще одной особенности реализации можно отметить, что переход с одной строки входного списка на другую должен восприниматься как граница текущей лексемы, так как одна лексема не может быть разбита на две строки – именно это и реализовано в конце цикла по символам текущей строки.

      Текст программы распознавателя

      Кроме перечисленных выше модулей необходим еще модуль, обеспечивающий интерфейс с пользователем. Как и в лабораторной работе № 1, этот модуль (FormLab2) реализует графическое окно TLab2Form на основе класса TForm библиотеки VCL и включает в себя две составляющие:

      • файл программного кода (файл FormLab2.pas);

      • файл описания ресурсов пользовательского интерфейса (файл FormLab2.dfm).

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

      Интерфейсная форма, описанная в модуле, содержит следующие основные органы управления:

      • многостраничную вкладку (PageControll) с двумя закладками (SheetFile и SheetLexems) под названиями «Исходный файл» и «Таблица лексем» соответственно;

      • на закладке SheetFilе:

      – поле ввода имени файла (EditFile), кнопка выбора имени файла из каталогов файловой системы (BtnFile), кнопка чтения файла (BtnLoad);

      – многострочное поле для отображения прочитанного файла (Listldents);

      • на закладке SheetLexems:

      – сетка (GridLex) с тремя колонками для отображения данных о прочитанных лексемах;

      • кнопка завершения работы с программой (BtnExit).

      Внешний вид двух закладок этой формы приведен на рис. 2.3 и 2.4.

      Рис. 2.3. Внешний вид первой закладки интерфейсной формы для лабораторной работы № 2.

      Рис. 2.4. Внешний вид второй закладки интерфейсной формы для лабораторной работы № 2.

      Чтение содержимого входного файла организовано точно так же, как в лабораторной работе № 1.

      После чтения файла создается таблица лексем (ссылка на нее запоминается в переменной listLex) и вызывается функция MakeLexList, результат работы которой помещается во временную переменную iErr.

      Если обнаружена ошибка, пользователю выдается сообщение об этом и указатель в списке строк позиционируется на место, где обнаружена ошибка.

      Если ошибок не обнаружено, то на основании считанной таблицы лексем listLex заполняется сетка GridLex, которая очень удобна для наглядного представления таблицы лексем:

      • первая колонка – порядковый номер лексемы;

      • вторая колонка – тип лексемы (ее внешний вид);

      • третья колонка – информация о лексеме.

      Полный текст программного кода модуля интерфейса с пользователем приведен в листинге П2.4 в приложении 2, а описание ресурсов пользовательского интерфейса – в листинге П2.5 в приложении 2.

      Полный текст всех программных модулей, реализующих рассмотренный пример для лабораторной работы № 2, приведен в приложении 2.

      Выводы по проделанной работе

      В результате лабораторной работы № 2 построен лексический анализатор на основе конечного автомата.


Скачать книгу