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

spoPresentation2

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

Преобразование регулярной грамматики к автоматному виду

1. N’ = { F,C,K }, T’ = { /,*,a,p,m }, S’ = F

2. P’ = { C o C/ | C* | Ca, K o K/ | K* | Ka }

3. P’ = P’ { p’ | Ak o Ak-1ak, k = 1,2,…,n, где An=A, A0 = X, p P | А o Xa1a2…an, n >

N, X=O либо X N, ai T, i = 1,2,…,n }, N’ = N’ { A1, A2, …, An-1 }.

3.1. F o C*/ : n = 2. N’ = N’ { A1 }, A1oA0*, A2oA1/ P’ = P’ { A1oC*, FoA1/ }.

3.2. F o Kpm : N’ = N’ {A2}, P’ = P’ { A2oKp, FoA2m }.

3.3. C o Cpm : N’ = N’ {A3}, P’ = P’ { A3oCp, CoA3m }.

111

Преобразование регулярной грамматики к автоматному виду

3.4. C o /* : N’ = N’ {A4}, P’ = P’ { A4o/, CoA4* }.

3.5. K o // : N’ = N’ {A5}, P’ = P’ { A5o/, KoA5/ }.

4-7. Правил вида АoB, либо АoO нет

112

Преобразование регулярной грамматики к автоматному виду

T’= {/,*,a,p,m}

T’= {/,*,a,p,m}

 

N’= {F,C,K,A1,A2,A3,A4,A5},

N’= {F,C,K,A,B,D,E},

 

S’=F

 

S’=F

 

P’:

P’ :

 

 

F o A1/ | A2m

F o A/ | Bm

 

CoC/ |C*|Ca|A3m|A4*

CoC/|C*|Ca|Dm|E*

 

K o K/ | K* | Ka | A5/

K o K/ | K* | Ka | E/

 

A1 o C*

A o C*

 

A2 o Kp

B o Kp

 

A3 o Cp

D o Cp

 

A4 o /,

A5 o /

E o /

113

Построение регулярного выражения, соответствующего регулярной грамматике

Дано: регулярная грамматика G(T,N,P,S)

Получить: регулярное выражение, соответствующее данной регулярной грамматике

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

Строится система уравнений с регулярными коэффициентами

Находится решение полученной системы

114

Построение регулярного выражения, соответствующего регулярной грамматике

Выражение, соответствующее аксиоме грамматики и будет искомым регулярным выражением

1. N = { X1, X2, … Xn }, Xi o XjJ, Xi o J, Xi, Xn = S,

J T*. Индексируются нетерминальные

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

115

Построение регулярного выражения, соответствующего регулярной грамматике

2. Строится система УРК:

X1 = D01 + X1D11 + X2D21 + … + XnDn1 X2 = D02 + X1D12 + X2D22 + … + XnDn2

Xn = D0n + XnD1n + X2D2n + … + XnDnn

Коэффициенты Dji = (J1 | J2 | … | Jm) | p P: Xio XjJ1 | XjJ2 | … | XjJm , i>0, jt0, X0 = O. Если

правил такого вида в грамматике не существует, то Dji =

116

Построение регулярного выражения, соответствующего регулярной грамматике

3. Решается система уравнений, полагаем вначале i = 1

3.1. В уравнениe для Xi итерационно выполняется подстановка вида Xk o EkDkk* ,1dk<i, (ранее найденное решение)

3.2. Xi = XiDii + Ei , где Ei =D0i + ¦ XkDki , k = 1, 2,

…, n, k z i. Уравнение для Xi переписывается

в виде группировки по Xi

117

Построение регулярного выражения, соответствующего регулярной грамматике

3.3. Xi = EiDii* =(D0i + Xi+1Di+1,i + … + XnDni)Dii* = =(D0i + Ei+1Di+1,i+1* Di+1,i + … + EnDnn* Dni)Dii* .

Находится решение уравнения. Для праволинейной грамматики Xi = Dii*Ei.

3.4. Если i<n, i++, перейти к п.3.1.

Если i = n, то решение для Xn будет конечным, и Dii и Ei не будут содержать в

своем составе переменных Xm. Поскольку Xn соответствует аксиоме, то решение Xn и будет искомым выражением

118

Построение регулярного выражения, соответствующего регулярной грамматике

3.5. Если есть необходимость в получении конечных решений для всех нетерминалов, в

уравнениях для Xi, i = n-1, n-2,…, 1 выполняется подстановка окончательных решений для Xk, k = n, n-1, …, i+1.

Пример. Грамматика описывает объявление многомерных массивов в С.

G ( { [,],n,i,0 }, { R,L,K }, P, R), здесь n – любой символ 1..9, 0 не включается, чтобы исключить объявления вида x[0], i – идентификатор

119

Построение регулярного выражения, соответствующего регулярной грамматике

P: R o L] L o L0 | Ln | Kn K o i[ | R[

1. L = X1, K = X2, R = X3

P: X1 o X10 | X1n | X2n; X2 o i[ | X3[ ; X3 o X1];

2.

X1 = X10 + X1n + X2n = + X1(0+n) + X2n + X3

X2 = i[ + X3[

= i[ + X1 + X2 + X3[

X3 = X1]

= + X1] + X2 + X3

120

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