Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпорки.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
352.68 Кб
Скачать
  1. Общие правила построения нисходящего распознающего автомата.

  1. Определяется множество входных символов (множество терминалов, дополненных маркером окончания цепочки)

  2. Определяется множество магазинных символов (множество состоит из маркера дна, а также всех нетерминальных символов, кроме крайнего левого в правой части правила).

  3. Изначально в магазин заталкивается маркер дна и начальный нетерминал

  4. Строится управляющая таблица (строки в которой помечены магазинными символами, столбцы – входными символами)

  5. Определяются правила грамматики, которые применяются для соответствующего входного символа и магазинного символа. Правила грамматики применяются тогда, когда магазинный символ является левой частью этого правила, а входной символ принадлежит его множеству выбора.

    1. Если правило имеет вид: <A> a , то пишем: Заменить( ), Сдвиг

    2. Если правило имеет вид: <A> ε, то пишем: Вытолкнуть, Держать

    3. Если имеется аннулирующее правило с нетерминалом <A> в его левой части, и элемент таблицы, соответствующий магазинному символу <A> и некоторому входному символу b не был создан, то пишем: Отвергнуть

  6. Если терминал b является магазинным символом, то элементом таблицы, находящимся на пересечении столбца b и строки <B> будет: Вытолкнуть, Сдвиг

  7. Элементом таблицы для столбца, помеченного концевым маркером и маркером дна, будет: Допустить

  8. Если некий символ {x} является магазинным символом, то тогда для него во всей строчке будет: Выполнить(x), Вытолкнуть, Держать

  9. Если после предыдущих пунктов какие-то ячейки остались незаняты, то их нужно заполнить действием: Отвергнуть.

  1. Распознающий автомат для s - грамматик.

s-грамматика (simple, separated) – контекстно-свободная грамматика, для которой выполняются следующие условия:

  • Правая часть каждого правила начинается с терминального символа

  • Если два правила имеют одинаковые левые части, то правые части начинаются с различных терминальных символов

<S> aL, где L – любая последовательность терминальных и нетерминальных символов

Lr – любая последовательность терминальных и нетерминальных символов в реверсивном порядке

Примеры некорректных для s-грамматики правил:

  • <S> ε

  • <S> <A>a

  • <S> a<A>, <S> a<B>

Грамматика:

  1. <S> ab<A>

  2. <S> b<A>b<S>

  3. <A> a

  4. <A> b<A>

Входная цепочка: abba

Шаг 1. В магазин заталкиваем стартовый нетерминал <S>

Шаг 2. Маркер устанавливаем на “a”

Шаг 3. Используем первое правило: <A> на дне магазина, “b” над <A>

М агазин:

abba abba abba abba

Цепочка корректна.

Пример некорректной цепочки: “ba”. Начинаем с использования правила 2. Магазин не останется пуст после разбора цепочки.

Алфавит: {a,b, }

Множество нетерминальных символов: {<S>,<A>, }

Операция «заменить» - верхний символ заменяем на обратную цепочку: <S> Lr

a

B

<S>

#1

#2

ошибка

<A>

#3

#4

ошибка

ошибка

Ошибка

допустить

b

ошибка

вытолкнуть, сдвиг

ошибка

#1: Заменить (<A>b), Сдвиг

#2: Заменить (<S>b<A>), Сдвиг

#3: Вытолкнуть, Сдвиг

#4: Заменить(<A>), Сдвиг

s-грамматика распознается с помощью МП-автомата с применением расширенной магазинной операции «Заменить». Аргументом этой операции является цепочка, обратная цепочке, остающейся после первого терминального символа s-правила.

  1. Q-грамматики. Множество выбора.

q-грамматика – контекстно-свободная грамматика (КСГ), для которой выполняются следующие условия:

  • Правая часть каждого правила начинается либо с терминального символа, либо является пустой цепочкой

  • Если два правила имеют одинаковые левые части, то множества выбора для этих правил не должны пересекаться (пересечения множеств выбора есть пустое множество)

q мощнее, чем s

Если в КСГ встречаются правила класса <A> ε, то для этого правила нужно найти функцию СЛЕД(<A>) во всех правилах грамматики, где встречается нетерминал <A>. Эта функция в результате дает множество, состоящее из терминальных символов и маркера окончания цепочки.

Q-грамматика:

  1. <S> a<A><S> {a}

  2. <S> b {b}

  3. <A> c<A><S> {c}

  4. <A> ε {a,b}

<A> ε СЛЕД(<A>) = {a,b}

Множество выбора правила N – это множество терминальных символов, для которых корректно применение правила N.

Входные символы: {a,b,c, }

Магазинные символы: <S>, <A>,

A

b

c

<S>

#1

#2

отвергнуть

отвергнуть

<A>

#4

#4

#3

отвергнуть *

отвергнуть

отвергнуть

отвергнуть

допустить

* - можно поступить двумя способами:

  • Применить правило #4

  • Отвергнуть (выберем это)

#1: Заменить (<S>,<A>), Сдвиг

#2: Вытолкнуть, Сдвиг

#3: Заменить (<S>,<A>), Сдвиг

#4: Вытолкнуть, Держать

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]