Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции и практики / все лекции.doc
Скачиваний:
70
Добавлен:
20.06.2014
Размер:
1.14 Mб
Скачать

Кс-языки и их связь с мп-автоматами. Магазинная память (мп)

Язык вида {0n 1n /n=1,2,…} не является автоматным, а является контекстно-свободным (КС) языком. Каждый автоматный язык можно распознать конечным автоматом, который допускает цепочки этого языка, т.е. любому автоматному языку соответствует конечный автомат.

Покажем, что приведённому КС-языку не соответствует ни один конечный автомат. Предположим противное. Пусть у К-автомата m состояний. Если m<n, то для запоминания первых n нулей в цепочке потребуется n состояний, что больше числа состояний автомата.

Любая КС грамматика имеет правила вида где. У укорачивающей КС-грамматики допустимо, чтобы.

Опишем укорачивающую КС-грамматику (УКС):

    1. S→aAbS

    2. S→b

    3. A→SAc

    4. A→ε

Примеры некоторых выводов:

  1. Sb

2. SaAbSaSAcbSaScbSabcbSabcbb

S*aScbS S*abcbb

Дерево вывода.

Продемонстрируем, как оно строится:

S

a A b S

S A c

ε

слева направо aScbS

Дерево вывода отражает построение цепочки. Во многих трансляторах языков программирования используют древовидное построение цепочки, и дерево строится либо снизу вверх, либо сверху вниз. В дереве порядок подстановки скрыт, поэтому может быть много выводов, соответствующих одному и тому же дереву. Однако, если на каждом шаге при выводе заменять самый левый нетерминал (или правый в зависимости от договорённости), то получается так называемый канонический вывод. Для каждого дерева существует единственный канонический вывод. Цепочке языка может соответствовать более одного дерева вывода. В этом случае говорят, что грамматика неоднозначна.

Мп-автоматы

В качестве распознавателей для КС-языков используются МП-автоматы. Если в качестве языка рассматривать конструкции конкретного алгоритмического языка, то для их распознавания использовать конечный автомат невозможно. Это связано с наличием в языках скобочных конструкций (begin-end, ( ), { }). Память МП-автомата дополняется магазином (стеком), т.е. лентой, имеющей вид:

← конец

МП-автомат – это набор М={Q,A,C,z,q0,F,δ}, где Q –множество состояний, A – входной алфавит, С – магазинный алфавит, zC – маркер магазина (признак пустоты магазина), q0Q – начальное состояние, FQ – набор принимающих (заключительных) состояний, δ – отображение следующего вида: δ:Q×A×C*→Q×C*.

Конфигурацией МП-автомата называют следующую тройку (q,ω,α), где q – состояние, ω – некоторое слово из А*, α – некоторое слово из С*.

За один такт работы автомат переходит от одной конфигурации к другой (q,aω, αz)→(q’,ω,αγz). Переход обозначает следующее: первоначально автомат находится в состоянии q и непросмотренная цепочка аω (маркер магазина z всегда находится в верхней части магазина), на вход автомату был подан символ а. В результате этого автомат перешёл в состояние q’ и непросмотренной осталась цепочка ω. В магазин была дописана цепочка γ.

Для такого такта (q,a,α)→(q’,αγ).В ситуации, когда цепочка ω-конфигурации является пустой, считается, что цепочка на входной ленте просмотрена, и работа автомата прекращается. Конфигурация (f,ε,α) является заключительной, и если fF, то это означает, что исходная цепочка принимается автоматом.

Соседние файлы в папке Лекции и практики