ВУЗ:
Составители:
21
}.,;,)(,|{
*
11
VWAPXAVXXWW
iii
∈∈∈→∈∪=
−
−
βαβα
Шаг 3. Если ,
1−
≠
ii
WW то положить i:=i+1 и перейти к шагу 2, иначе счи-
тать
i
WW = .
Шаг 4. Вычислить
Б
Б
TT
N
N
PPPWVVWVVWVV
−
=
′
−
=
∩
=
′
∩
=
′
,,,
,
где PP
Б
⊆ - это множество правил, содержащих недостижимые символы
Б
VX ∈
.
Пример 4.3. Дана грамматика ),},,,{},,,({
S
P
C
B
S
cba
G
=
с правилами
:
P
′
.)5;)2;)1 cb
C
b
B
ab
S
→→→
Преобразуем ее в эквивалентную грамматику G
′
по алгоритму 4.3:
W
0
= {S};
W
1
= {S, a, b};
W
2
= {S, a, b}.
Т.к. W
1
=W
2
, то W={S, a, b}. Множество недостижимых символов
}.,,{ cCBV
Б
= Тогда после удаления недостижимых символов, получим
грамматику
),},{},,({ SPSbaG =
′
с правилом
:P
′
.ab
S
→
Алгоритм 4.4. Устранение ε-правил
Вход: КС-грамматика ),,,( SPVVG
N
T
= .
Выход: Эквивалентная КС-грамматика
),,,( SPVVG
N
T
′′
′
=
′
без ε-правил
для всех нетерминальных символов, кроме начального, который не должен
встречаться в правых частях правил грамматики.
Шаг 1. В исходной грамматике
G
найти ε-порождающие нетерминальные
символы
N
VA∈ , такие, что
ε
*⇒
A
.
1.1
Положить })(|{
0
PAAN
∈
→=
ε
.
1.2
Вычислить },)(|{
*
11
−
−
∈∈→∪=
iii
NPBBNN
αα
.
1.3
Если
1−
≠
ii
NN
, то положить i:=i+1 и перейти к пункту 1.2, иначе
считать
i
NN = .
Шаг 2. Из множества
P
правил исходной грамматики
G
перенести во
множество
P
′
все правила, за исключением ε-правил, т.е.
PAPP ∈→−=
′
){(
ε
для всех }.
N
VA
∈
Шаг 3. Пополнить множество
P
′
правилами, которые получаются из ка-
ждого правила этого множества путем исключения всевозможных комбинаций
ε-порождающих нетерминалов в правой части. Полученные при этом ε-правила
во множество
P
′
не включать.
Шаг 4. Если
N
S
∈ , то SVVSSSPP
N
N
′
∪=
′
→
′
→
′
∪
=
′
},,{
ε
, где
∅=
′
∩ }{SV ; иначе ., SSVV
N
N
=
′
=
′
Wi = Wi −1 ∪ { X | X ∈V , ( A → αXβ ) ∈ P, A ∈Wi −1; α , β ∈V *}. Шаг 3. Если Wi ≠ Wi −1, то положить i:=i+1 и перейти к шагу 2, иначе счи- тать W = Wi . Шаг 4. Вычислить VN′ = VN ∩ W , VT′ = VT ∩ W , VБ = V − W , P′ = P − PБ , где PБ ⊆ P - это множество правил, содержащих недостижимые символы X ∈VБ . Пример 4.3. Дана грамматика G = ({a, b, c}, {S , B, C}, P, S ) с правилами P′ : 1) S → ab; 2) B → b; 5) C → cb. Преобразуем ее в эквивалентную грамматику G ′ по алгоритму 4.3: W0 = {S}; W1 = {S, a, b}; W2 = {S, a, b}. Т.к. W1=W2, то W={S, a, b}. Множество недостижимых символов VБ = {B, C , c}. Тогда после удаления недостижимых символов, получим грамматику G ′ = ({a, b}, {S}, P, S ) с правилом P′ : S → ab. Алгоритм 4.4. Устранение ε-правил Вход: КС-грамматика G = (VT , VN , P, S ) . Выход: Эквивалентная КС-грамматика G ′ = (VT , VN′ , P′, S ′) без ε-правил для всех нетерминальных символов, кроме начального, который не должен встречаться в правых частях правил грамматики. Шаг 1. В исходной грамматике G найти ε-порождающие нетерминальные символы A∈V N , такие, что A ⇒ *ε . 1.1 Положить N 0 = { A | ( A → ε ) ∈ P} . 1.2 Вычислить N i = N i −1 ∪ {B | ( B → α ) ∈ P, α ∈ N i*−1} . 1.3 Если N i ≠ N i −1 , то положить i:=i+1 и перейти к пункту 1.2, иначе считать N = N i . Шаг 2. Из множества P правил исходной грамматики G перенести во множество P′ все правила, за исключением ε-правил, т.е. P′ = P − {( A → ε ) ∈ P для всех A∈V N }. Шаг 3. Пополнить множество P′ правилами, которые получаются из ка- ждого правила этого множества путем исключения всевозможных комбинаций ε-порождающих нетерминалов в правой части. Полученные при этом ε-правила во множество P′ не включать. Шаг 4. Если S ∈ N , то P′ = P ∪ {S ′ → ε , S ′ → S }, V N′ = VN ∪ S ′ , где V ∩ {S ′} = ∅ ; иначе VN′ =V N , S ′ = S . 21
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »