Задача 1. Распознаватель скобочных выражений

Рассмотрим задачу проверки корректности вложенности круглых скобок.

Определим данный АМП:

1) Множество входных символов: { (, ), }.

2) Множество магазинных символов: { A, Ñ }

3) Множество состояний: t, является также и начальным состоянием автомата.

4) Алгоритм работы автомата.

- Если входная головка читает «(», то в магазин заталкивается символ А.

- Если входная головка читает «)», то из магазина выталкивается содержащийся там символ.

- Цепочка принимается, если при ее окончании всем левым скобкам нашлись правые, то есть при достижении символа магазин пуст Ñ.

- Цепочка отвергается, если:

1. Количество правых скобок превысило количество левых, т.е. на входе остаются правые скобки «)», а магазин пуст Ñ.

2. Входная цепочка прочитана до конца, а левым скобкам не нашлось пары, т.е. при достижении символа в магазине остаются символы А.

Магазинные символы Входные символы
( )
А ↓A, → ↑, → Отвергнуть
Ñ ↓A, → Отвергнуть Допустить

5) В начальном состоянии магазин содержит только маркер дна (Ñ).

Пример 1: (() ())

Номер шага Содержимое стека Остаток вх. цепочки
  Ñ (() ()) ┤
  ÑA () ()) ┤
  ÑAA ) ()) ┤
  ÑA ()) ┤
  ÑAA )) ┤
  ÑA ) ┤
  Ñ

Пример 2: ()))

Номер шага Содержимое стека Остаток вх. цепочки
  Ñ ())) ┤
  ÑA ))) ┤
  Ñ )) ┤

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: