Теория языков
Магазинные автоматы
Магазинные автоматы, известные также как автоматы с магазинной памятью или как МП-автоматы, формально определяются следующим образом.
Определение. МП-автомат - это семерка , где:
- Q - конечное множество состояний
- - конечный входной алфавит
- Г - конечный алфавит магазинных символов
- -- функция перехода, отображение множества в множество конечных подмножеств множества
- - начальное состояние управляющего устройства
- - символ, находящийся в магазине в начальный момент (начальный символ)
- - множество заключительных состояний.
Определение. Конфигурацией МП-автомата P называется тройка , где q - текущее состояние управляющего устройства, -- неиспользованная часть входной цепочки (если , то считается, что вся входная цепочка прочитана), - содержимое магазина (самый левый символ цепочки считается верхним символом магазина; если , то магазин считается пустым).
На каждом шаге работы МП-автомат может либо занести что-то в магазин, либо снять какие-то значения с его вершины. Отметим, что МП-автомат может продолжать работать в случае окончания входной цепочки, но не может продолжать работу в случае опустошения магазина.
Класс языков, распознаваемых МП-автоматами, в точности совпадает с классом языком, задаваемых КС-грамматиками (мы этого доказывать не будем).
Пример магазинного автомата
Рассмотрим магазинный автомат, распознающий язык .
Пусть , где:
Работа автомата заключается в копировании в магазин начальных нулей из входной цепочки и последующем устранении по одному нулю из магазина на каждую прочитанную единицу.
Детерминированные МП-автоматы
МП-автоматы обладают одним существенным недостатком - они недетерминированны по своей природе. На практике нам хотелось бы иметь дело с детерминированными автоматами, в которых в каждой конфигурации возможно не более одного такта:
Определение. МП-автомат называется детерминированным, если для каждых и верно одно из следующих утверждений:
- содержит не более одного элемента для каждого и
- для всех и содержит не более одного элемента
К сожалению, детерминированные МП-автоматы описывают только подмножество всего класса КС-языков - это подмножество называется детерминированными КС-языками. Этот класс языков называют также LR(k)-грамматиками, так как они могут быть однозначно разобраны путем просмотра цепочки слева направо с заглядыванием вперед не более, чем на k символов.
Детерминированные КС-языки, как и весь класс КС-языков, позволяют проверить пустоту определяемого ими языка или принадлежность заданной цепочки языку. Однако, детерминированные КС-языки не обладают некоторыми важными теоретико-множественными свойствами, например, детерминированные КС-языки не замкнуты относительно пересечения, дополнения или объединения (общий класс КС-языков также не замкнут относительно пересечения и дополнения, но замкнут относительно объединения).
Тем не менее, с точки зрения методов компиляции, класс LR(k)-грамматик чрезвычайно важен, так как на нем и некоторых его разновидностях основаны большинство современных средств синтаксического разбора. Мы рассмотрим LR(k)-грамматики в отдельной лекции.