spoPresentation2
.pdfПостроение расширенного МП-автомата
Пример разбора цепочка (i)
( q, (i), # ) 6 ( q, i), #) ) 8 ( q, ), #(i ) 4
( q, ), #(F ) 2 ( q, ), #(E ) 7 ( q, O, #(E) ) 3 ( q, O, #F ) 2 ( q, O, #E ) 9 ( r, O )
Строка принята, т.к. автомат в заключительном состоянии и магазин пуст
В этот раз не возникало никаких неопределенностей
271
Построение автомата по НФ Грейбах
Алгоритм строит недетерминированный МП-автомат
В стеке размещается правая часть текущей сентенциальной формы, в начале это аксиома
Вершина стека слева
Автомат обладает только одним состоянием и принимает входную строку опустошением стека
272
Построение автомата по НФ Грейбах
Дано: КС грамматика G(T,N,P,S) в НФ Грейбах
Получить: эквивалентный ей МПА M =
(Q,A,Z,G, q0, z0, F), задающий тот же язык L(G)
= L(М)
Дополнительные условия:
Вершина стека находится слева
1. Q = { q }; q0 = q; F = ; Z = N, A = T, z0 = S
2. G ( q, b, X ) = { (q,D) | XobD P, b T, X N,
DN* } Эти функции позволяют замещать
нетерминал на вершине стека на цепочку
273
Построение автомата по НФ Грейбах
Пример. G = ( { +, (, ), i }, { E, F, G }, P, E)
P = { E o (EFGE | iGE | (EF | i ; F o ) ; G o + }
1. Q = {q}, q0 = q, F = , A = { +, (, ), I }, Z = { E, F,
G }, z0 = E
2.1. G ( q, (, E ) = { ( q, EFGE )1, ( q, EF )2 }
2.2. G ( q, i, E ) = { ( q, GE )3, ( q, O )4 }
2.3. G ( q, ), F ) = { ( q, O )5 }
2.4. G ( q, +, G ) = { ( q, O )6 }
274
Построение автомата по НФ Грейбах
Пример разбора цепочка (i)
( q, (i), E ) ? 1 // 1
( q, i), EFGE ) ? 3 //
( q, ), GEFGE ) ? - //
( q, i), EFGE ) ? 4
( q, ), FGE ) 5
( q, O, GE ) - // R1
( q, (i), E ) ? 2
( q, i), EF ) ? 3 // 3
( q, ), GEF ) ? - // R
275
Построение автомата по НФ Грейбах
Пример разбора цепочка (i)
( q, i), EF ) ? 4
( q, ), F ) 5
( q, O, O )
Цепочка принимается, т.к. стек пуст
276
Распознаватели без возвратов
Распознаватели без возвратов основаны на определении метода, по которому выбирается одна из возможных альтернатив
Остальные альтернативы не учитываются
Время работы обладает линейной, а не экспоненциальной зависимостью от длины входной цепочки
Такие алгоритмы могут потребовать дополнительных ограничений на правила грамматики
277
Распознаватели без возвратов
КС-грамматика G(N,T,P,S) называется S- грамматикой, если выполняются следующие требования:
p P: AoaE, A N, a T, EV*; т.е. правая
часть правил начинается с терминала,
p P: Ao a1E1 | a2E2 | … | anEn , A N, ai T, Ei V*, ai z aj , i,j = 1, 2,..., n; i z j; т.е. правые
части правил, определяющие один и тот же нетерминал, начинаются с разных терминалов
278
Распознаватели без возвратов
Первое свойство S-грамматики обеспечивает выбор очередного правила грамматики, а второе делает этот выбор однозначным, позволяя построить детерминированный распознаватель
Реализовать разбор можно различными методами, например методом рекурсивного спуска:
для каждого нетерминала А грамматики G строится процедура разбора, получающая на вход цепочку символов D и положение считывающей головки i (номер символа)279
Распознаватели без возвратов
если для символа А определено более одного правила, процедура ищет среди них правило, первый символ правой части которого бы совпадал с текущим символом входной цепочки. Если такого нет, то цепочка не принимается
Если правило найдено, то запоминается его номер, считывающая головка передвигается, и для каждого нетерминала правой части рекурсивно вызывается процедура разбора этого нетерминала
280