Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spoPresentation2

.pdf
Скачиваний:
6
Добавлен:
11.05.2015
Размер:
4.74 Mб
Скачать

Построение МП-автомата с возвратом

Пример

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

Построение МП-автомата с возвратом

Пример разбора цепочка (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

Построение МП-автомата с возвратом

Пример разбора цепочка (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

Восходящий синтаксический анализ

В основе лежит правосторонний разбор

Исходной сентенциальной формой является разбираемая строка языка, а целью – аксиома

Обычно восходящий анализ выполняется как последовательность операций перенос и свертка

Перенос добавляет очередной символ строки в стек

Свертка производит замену верхних символов стека, совпадающих с правой частью правила, на нетерминал левой части

264

Восходящий синтаксический анализ

Если в результате серии этих операций получена аксиома грамматики, то распознаватель принял входную строку, иначе строка не принадлежит языку

Проблема восходящего анализа

обеспечение однозначности определения строки в вершине стека для свертки

одинаковые правые части правил

эти проблемы решаются путем использования грамматик с особыми свойствами

265

Восходящий синтаксический анализ

Для реализации алгоритма работы такого МП-автомата исходная грамматика не должна содержать циклов и O-правил

Могут возникнуть альтернативы

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

когда имеется несколько правил с одинаковой правой частью, для которой требуется выполнить свертку

Для учета альтернатив используется

второй стек

266

Построение расширенного МП-автомата

Строится расширенный МП-автомат, выполняющий правосторонний разбор

Стек используется для размещения левой части текущей сентенциальной формы, в начале он пуст (используется особый маркер

# ), вершина стека справа

На каждом шаге автомат замещает строку верхних символов стека на нетерминал в соответствии с правилами грамматики или помещает в стек очередной входной символ

267

Построение расширенного МП-автомата

Автомат обладает только одним состоянием и имеет одно заключительное состояние, в котором стек пуст

Дано: КС грамматика G(T,N,P,S)

Получить: эквивалентный ей расширенный

МПА M = (Q,A,Z,G, q0, z0, F), задающий тот же

язык L(G) = L(М)

Дополнительные условия:

грамматика G не должна содержать циклов и O-правил

Вершина стека находится справа

268

Построение расширенного МП-автомата

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

Построение расширенного МП-автомата

Пример

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

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