![](/user_photo/2706_HbeT2.jpg)
spoPresentation2
.pdf![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ261x1.jpg)
Построение МП-автомата с возвратом
Пример
G = ( { +, (, ), i }, { E, F }, P, E)
P = { E o F+E | F; F o (E) | i }
1. Q = {q}; q0 = q; A = {+, (, ), i }; Z = { +, (, ), i, E, F }; z0 = E; F =
2.1. G ( q, O, E ) = { ( q, F+E )1, ( q, F )2 }
2.2. G ( q, O, F ) = { ( q, (E) )3, ( q, i)4 }
3. G ( q, +, + ) = ( q, O )5; G ( q, (, ( ) = ( q, O )6; G ( q, ), ) ) = ( q, O )7; G ( q, i, i) = ( q, O )8
261
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ262x1.jpg)
Построение МП-автомата с возвратом
Пример разбора цепочка (i)
( q, (i), E ) " 1 // 1
( q, (i), F+Е ) ?3 // 2
( q, (i), (E)+Е ) 6
( q, i), E)+Е ) ? 1 // 3
( q, i), F+Е)+Е ) ? 3 //
( q, i), (Е)+Е)+Е ) ? -
( q, i), F+Е)+Е ) ? 4
( q, i), i+Е)+Е ) 8
( q, ), +Е)+Е ) ? - // R3
262
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ263x1.jpg)
Построение МП-автомата с возвратом
Пример разбора цепочка (i)
( q, i), E)+Е ) ? 2
( q, i), F)+Е ) ? 3 // 5
( q, i), (E))+Е ) ? –
…
( q, (i), E ) " 2 ( q, (i), F ) ? 3 ( q, (i), (E) ) 6 ( q, i), E) ) ? 2 ( q, i), F) ) ? 4 ( q, i), i) ) 8
( q, ), ) ) 7 (q,O,O)
263
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ264x1.jpg)
Восходящий синтаксический анализ
В основе лежит правосторонний разбор
Исходной сентенциальной формой является разбираемая строка языка, а целью – аксиома
Обычно восходящий анализ выполняется как последовательность операций перенос и свертка
Перенос добавляет очередной символ строки в стек
Свертка производит замену верхних символов стека, совпадающих с правой частью правила, на нетерминал левой части
264
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ265x1.jpg)
Восходящий синтаксический анализ
Если в результате серии этих операций получена аксиома грамматики, то распознаватель принял входную строку, иначе строка не принадлежит языку
Проблема восходящего анализа
обеспечение однозначности определения строки в вершине стека для свертки
одинаковые правые части правил
эти проблемы решаются путем использования грамматик с особыми свойствами
265
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ266x1.jpg)
Восходящий синтаксический анализ
Для реализации алгоритма работы такого МП-автомата исходная грамматика не должна содержать циклов и O-правил
Могут возникнуть альтернативы
при определении, сколько символов с вершины стека заменять на левую часть правила
когда имеется несколько правил с одинаковой правой частью, для которой требуется выполнить свертку
Для учета альтернатив используется
второй стек |
266 |
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ267x1.jpg)
Построение расширенного МП-автомата
Строится расширенный МП-автомат, выполняющий правосторонний разбор
Стек используется для размещения левой части текущей сентенциальной формы, в начале он пуст (используется особый маркер
# ), вершина стека справа
На каждом шаге автомат замещает строку верхних символов стека на нетерминал в соответствии с правилами грамматики или помещает в стек очередной входной символ
267
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ268x1.jpg)
Построение расширенного МП-автомата
Автомат обладает только одним состоянием и имеет одно заключительное состояние, в котором стек пуст
Дано: КС грамматика G(T,N,P,S)
Получить: эквивалентный ей расширенный
МПА M = (Q,A,Z,G, q0, z0, F), задающий тот же
язык L(G) = L(М)
Дополнительные условия:
грамматика G не должна содержать циклов и O-правил
Вершина стека находится справа
268
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ269x1.jpg)
Построение расширенного МП-автомата
1. Q = {q, r}; q0=q; F = { r }; Z=T N {#}, A=T, z0=#
2. G ( q, O, E ) = { (q, X) | XoE P, X N, E V* }
правая часть правила, находящаяся на вершине стека замещается на нетерминал
3. G ( q, a, O ) = ( q, a ), a T .Очередной символ
помещается в стек, если только в нем не находится правая часть какого-либо правила и перемещается указатель чтения
4. G ( q, O, #S ) = ( r, O ). Добавляется функция
для перевода автомата в заключительное состояние
269
![](/html/2706/349/html_t5ntllEH4A.0VbF/htmlconvd-jsXsvJ270x1.jpg)
Построение расширенного МП-автомата
Пример
G = ( { +, (, ), i }, { E, F }, P, E )
P = { E o F+E | F; F o (E) | i }
1. Q = {q,r}; q0=q; A = {+,(,),i }; Z = { +, (, ), i, E, F, # } ; z0= #; F = r
2. G (q,O,F+E) = (q,E)1; G (q,O,F) = (q,E)2; G ( q,O,(E) ) = (q,F)3; G (q,O,i) = (q,F)4
3. G (q,+,O) = (q,+)5; G (q,(,O) = (q,( )6; G (q,),O) = ( q,) )7; G (q,i,O) = (q,i)8
4. G ( q,O,#E ) = ( r,O )9
270