Название: Системное программное обеспечение. Лабораторный практикум
Автор: Алексей Молчанов
Издательство: Питер
Жанр: Программирование
isbn: 978-5-469-00391-4
isbn:
• Add2KeysToList – добавление лексем типа «ключевое слово» и «разделитель» в таблицу лексем подряд.
Эти функции, по сути, являются реализацией функции, которая на графе переходов КА была обозначена F.
Еще две вспомогательные функции служат для упрощения кода. Они выполняют часто повторяющиеся действия в состояниях автомата, которые связаны со средними символами ключевых слов (в функции переходов эти состояния обозначены T2, T3, E2, E3, X2 и A2) и завершающими символами ключевых слов (в функции переходов эти состояния обозначены I2, T4, E4, O2, X3 и A3).
Построенный лексический анализатор обнаруживает три типа ошибок:
• неверный символ в лексеме (например, сочетания «2a» или «:6» будут признаны неверными символами в лексемах);
• незакрытый комментарий (присутствует открывающая фигурная скобка, но отсутствует соответствующая ей закрывающая);
• незавершенная лексема (в данном входном языке это может быть только символ «:» в конце входной программы, который будет воспринят как начало незавершенной лексемы «:=»).
Остальные ошибки входного языка должен обнаруживать синтаксический анализатор.
В качестве еще одной особенности реализации можно отметить, что переход с одной строки входного списка на другую должен восприниматься как граница текущей лексемы, так как одна лексема не может быть разбита на две строки – именно это и реализовано в конце цикла по символам текущей строки.
Текст программы распознавателя
Кроме перечисленных выше модулей необходим еще модуль, обеспечивающий интерфейс с пользователем. Как и в лабораторной работе № 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.