Курсовая работа5 / Раздел 2
.docКурсовая работа. Раздел 2.
Вариант 19
2.1.5. Преобразовать КС-грамматику G = <Т, N, S, R> в эквивалентную грамматику, не содержащую бесполезных символов.
G = < Т, N, S, R >
Терминалы : а, b, c, d
Нетерминалы : A, B, C, S
Правила :
1) S a C
2) S b A
3) A c A B
4) B a C
5) C b A
6) C d
Построим множество производящих нетерминалов:
Np={B, C, S}
После исключения непроизводящих нетерминалов получим:
G1 = <Т, N, S, R>
Терминалы : a, d
Нетерминалы : B, C, S
Правила :
1) S a C
4) B a C
6) C d
Построим множество достижимых символов
Nr={S, C, a, d}
После исключения множества недостижимых символов из G1 получим грамматику G’:
G’ = <Т, N, S, R>
Терминалы : a, d
Нетерминалы : C, S
Правила :
1) S a C
6) C d
2.2.7. Преобразовать исходную КС-грамматику G = <Т, N, S, R> в эквивалентную НКС-грамматику.
G = < Т, N, S, R >
Терминалы : а, b
Нетерминалы : A, B, S
Правила :
-
S b A
-
A b A
-
A a B
-
A ε
-
B b B
-
B ε
Nε = {A, B}
Правила :
-
S b A
-
S b
-
A b A
-
A b
-
A a B
-
A a
-
B b B
2.3.2. Преобразовать КС-грамматику G = <T, N, S, R> в эквивалентную КС-грамматику, не содержащую правил с одинаковой правой частью.
G = <T, N, S, R>
Терминалы : i, :=, (, )
Нетерминалы : A, B, F, L, P, Q, S
Правила :
-
S L A
-
S L B
-
L P :=
-
L Q :=
-
P i
-
A F
-
Q i
-
B F
-
F Q ( i )
Исключим Q i :
Правила :
-
S L A
-
S L B
-
L P :=
-
L i :=
-
P i
-
A F
-
B F
-
F i ( i )
Исключим B F :
Правила :
-
S L A
-
S L F
-
L P :=
-
L i :=
-
P i
-
A F
-
F i ( i )
2.4.4. Преобразовать НКС-грамматику G = <Т, N, S, R> в эквивалентную КС-грамматику, не содержащую цепных правил.
G = <T, N, S, R>
Терминалы : i, ̚ , ˅, &, (, )
Нетерминалы : S, T, P
Правила :
-
S S ˅ T
-
S T
-
T T & P
-
T P
-
P ̚ P
-
P ( S )
-
P i
Построим множество нетерминалов NA
NS={S, T, P} R`={S S ˅ T, S T}
NT={T, P} R`={T T & P, S T & P}
NP={P} R`={P ̚ P, S ̚ P, T ̚ P, P ( S ), S ( S ), T ( S ), P i, S i, T i}
2.5.8. Исключить левую рекурсию из КС-грамматики G = <Т, N, S, R>.
G = < Т, N, S, R >
Терминалы : а, b, c
Нетерминалы : A, S
Правила :
-
S S a A
-
S A A
-
S b
-
A ASa
-
A A d
-
A c
Добавим правила для самолеворекурсивного нетерминала S
{S1 a A S1, S1 ε, S b S1, S A A S1}
Добавим правила для самолеворекурсивного нетерминала A
{S1 a A S1, S1 ε, S b S1, S A A S1, A1 S a A1, A1 b A1, A c A1, A1 ε}
Построим множество N`=N+{S1, A1} = {S, S1, A, A1}
Запишем результат:
G`={T,N`, S, R`}
Терминалы : a, b, c
Нетерминалы : S, A, S1, A1
Правила :
-
S A A S1
-
S b S1
-
A c S1
-
S1 a A S1
-
S1 ε
-
A1 S a A1
-
A1 b A1
-
A1 ε