
практика за 1 курс / практика за 1 курс / Полина отчет / 6
.doc3.1 Структура текста программы
BEKUS.PAS
BL_LEKS.PAS
3.2 Алгоритмы реализации модулей 3.2.1 Блок транслитерации
Блок транслитерации разработан в виде детерминированного конечного автомата, который выполняет обработку и распознавание входной символьной цепочки.
Обработка входной цепочки заключается в выполнении транслитерации - формировании цепочки лексем вида ("символ цепочки", "класс символа цепочки"). Во время распознавания, данный автомат отвергает все символьные цепочки, содержащие символы, которые заведомо не удовлетворяют формам Бэкуса-Наура из условия задачи (например, буквы кириллицы, символы @,#, и др.).
В таблице 1 приведена спецификация транслитератора для распознавания символьной цепочки.
Символы |
Класс |
a..z, A..Z |
Буква |
0..9 |
Цифра |
= |
Равно |
|
тчкзпт |
+, - |
знак |
|
Двоеточие |
пробел |
Пробел |
другие |
Ошибка |
Табл. 1 Транслитерация символьной цепочки
3.2.2 Лексический блок
Выполняя работу этого блока программа сначала проверяет на наличие ошибок в Если ошибки будут найдены то она выводит сообщение о найденной ошибки и завершает работу блока и переходит к следующему.
Если ошибки не будут найдены то начинается выполнение блока.
Запускается цикл по длине строки (длина строки определяется в главной программе и записывается в переменную к), и определяется что за символ находится в этой цепочке.
Например, если символ - это буква, то понятно, что это будет либо идентификатор, либо ключевое слово, либо подпрограмма. Если цифра - то либо идентификатор, либо целое, либо вещественное число. Так и с остальными символами. Пробелы в этом блоке игнорируются, переходя на очередной виток цикла