Лист 5.2. Блок PushDown
1. Назначение
Представляет магазинный автомат (АМП) для реализации грамматики любых вложенных символов. Определяет конкретную грамматику. В проекте BSFProfVT представлен классом FPDNotMarker.
2. Базовые классы
CPushDownBase - базовый класс магазинного автомата для грамматики строк вложенных символов
3. Связи
Имеет связь с блоком, поставляющим на вход АМП символы.
4. Функционирование
Данный объект определяет поведение автомата, реализующего алгоритм распознавая строк вложенных символов.
Распознавание осуществляется в соответствии со следующим алгоритмом.
4.1. В начальном состоянии «st» ожидается поступление на вход первого символа, после прихода которого выполняется инициализация структур данных и переход в состояние «next».
4.2. В состояние «next» ожидается приход очередного символа строки, приход которого вызывает переход в состояние «АМП».
4.3. В состоянии «АМП» выполняется анализ символа. Если символ принадлежит грамматике, то осуществляется возврат в состояние приема очередного символа (сразу или через состояние «p3»), а ниче – в состояние ошибки «err».
4.4. Состояние «err» отражает ситуацию ошибки.
Примечание 1. Существенно! Распознав ошибочный символ, автомат не начинает разбор заново, а ожидает прихода нового, но уже правильного символа, продолжающего текущую подстроку.
4.5. В состоянии «p3» выполняется анализ (по состоянию вершины стека) на предмет завершения разбора текущей подстроки. Если подстрока соответствует грамматике, то выполняется переход в состояние «ok», иначе – в состояние «next» для приема очередного символа правильной подстроки.
4.6. После успешного разбора текущей подстроки автомат переходит из состояния «ok» в начальное состояние «st» для разбора следующей подстроки.
Примечание 2. Автомат выполняет разбор входящих символов до тех пор, пока активен автомат, поставляющий на вход АМП символы
Примечание 3. Существенно! Грамматика, реализуемая данным распознавателем, не содержит символа «конечного маркера», которым обычно дополняется грамматика, с целью создания соответствующего ей распознавателя на базе АМП.