
spoPresentation2
.pdf
Преобразование регулярной грамматики к автоматному виду
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