
Кс-языки и их связь с мп-автоматами. Магазинная память (мп)
Язык вида {0n 1n /n=1,2,…} не является автоматным, а является контекстно-свободным (КС) языком. Каждый автоматный язык можно распознать конечным автоматом, который допускает цепочки этого языка, т.е. любому автоматному языку соответствует конечный автомат.
Покажем, что приведённому КС-языку не соответствует ни один конечный автомат. Предположим противное. Пусть у К-автомата m состояний. Если m<n, то для запоминания первых n нулей в цепочке потребуется n состояний, что больше числа состояний автомата.
Любая
КС грамматика имеет правила вида
где
.
У укорачивающей КС-грамматики допустимо,
чтобы
.
Опишем укорачивающую КС-грамматику (УКС):
S→aAbS
S→b
A→SAc
A→ε
Примеры некоторых выводов:
S
b
2.
SaAbS
aSAcbS
aScbS
abcbS
abcbb
S*aScbS
S
*abcbb
Дерево вывода.
Продемонстрируем, как оно строится:
S
a A b S
S A c
ε
слева направо aScbS
Дерево вывода отражает построение цепочки. Во многих трансляторах языков программирования используют древовидное построение цепочки, и дерево строится либо снизу вверх, либо сверху вниз. В дереве порядок подстановки скрыт, поэтому может быть много выводов, соответствующих одному и тому же дереву. Однако, если на каждом шаге при выводе заменять самый левый нетерминал (или правый в зависимости от договорённости), то получается так называемый канонический вывод. Для каждого дерева существует единственный канонический вывод. Цепочке языка может соответствовать более одного дерева вывода. В этом случае говорят, что грамматика неоднозначна.
Мп-автоматы
В
качестве распознавателей для КС-языков
используются МП-автоматы. Если в качестве
языка рассматривать конструкции
конкретного алгоритмического языка,
то для их распознавания использовать
конечный автомат невозможно. Это связано
с наличием в языках скобочных конструкций
(begin-end, ( ), { }). Память МП-автомата дополняется
магазином (стеком), т.е. лентой, имеющей
вид:
← конец
МП-автомат
– это набор М={Q,A,C,z,q0,F,δ},
где
Q –множество состояний, A – входной
алфавит, С – магазинный алфавит, zC
– маркер магазина (признак пустоты
магазина), q0
Q
– начальное состояние, F
Q
– набор принимающих (заключительных)
состояний,δ
– отображение
следующего вида: δ:Q×A×C*→Q×C*.
Конфигурацией МП-автомата называют следующую тройку (q,ω,α), где q – состояние, ω – некоторое слово из А*, α – некоторое слово из С*.
За один такт работы автомат переходит от одной конфигурации к другой (q,aω, αz)→(q’,ω,αγz). Переход обозначает следующее: первоначально автомат находится в состоянии q и непросмотренная цепочка аω (маркер магазина z всегда находится в верхней части магазина), на вход автомату был подан символ а. В результате этого автомат перешёл в состояние q’ и непросмотренной осталась цепочка ω. В магазин была дописана цепочка γ.
Для
такого такта (q,a,α)→(q’,αγ).В
ситуации, когда цепочка ω-конфигурации
является пустой, считается, что цепочка
на входной ленте просмотрена, и работа
автомата прекращается. Конфигурация
(f,ε,α)
является
заключительной, и если fF,
то это означает, что исходная цепочка
принимается автоматом.