Задача 1. Распознаватель скобочных выражений
Рассмотрим задачу проверки корректности вложенности круглых скобок.
Определим данный АМП:
1) Множество входных символов: { (, ), ┤}.
2) Множество магазинных символов: { A, Ñ}
3) Множество состояний: t, является также и начальным состоянием автомата.
4) Алгоритм работы автомата.
- Если входная головка читает «(», то в магазин заталкивается символ А.
- Если входная головка читает «)», то из магазина выталкивается содержащийся там символ.
- Цепочка принимается, если при ее окончании всем левым скобкам нашлись правые, то есть при достижении символа ┤магазин пуст Ñ.
- Цепочка отвергается, если:
1. Количество правых скобок превысило количество левых, т.е. на входе остаются правые скобки «)», а магазин пуст Ñ.
2. Входная цепочка прочитана до конца, а левым скобкам не нашлось пары, т.е. при достижении символа ┤ в магазине остаются символы А.
Магазинные символы | Входные символы | ||
( | ) | ┤ | |
А | ↓A, → | ↑, → | Отвергнуть |
Ñ | ↓A, → | Отвергнуть | Допустить |
5) В начальном состоянии магазин содержит только маркер дна (Ñ).
Пример 1: ( ( ) ( ) )
Номер шага | Содержимое стека | Остаток вх. цепочки |
Ñ | ( ( ) ( ) ) ┤ | |
ÑA | ( ) ( ) ) ┤ | |
ÑAA | ) ( ) ) ┤ | |
ÑA | ( ) ) ┤ | |
ÑAA | ) ) ┤ | |
ÑA | ) ┤ | |
Ñ | ┤ |
Пример 2: ( ) ) )
Номер шага | Содержимое стека | Остаток вх. цепочки |
Ñ | ( ) ) ) ┤ | |
ÑA | ) ) ) ┤ | |
Ñ | ) ) ┤ |