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

Курсовая работа5 / Раздел 2

.doc
Скачиваний:
12
Добавлен:
01.05.2014
Размер:
110.08 Кб
Скачать

Курсовая работа. Раздел 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

Правила :

  1. S  b A

  2. A  b A

  3. A  a B

  4. A ε

  5. B  b B

  6. B  ε

Nε = {A, B}

Правила :

  1. S  b A

  2. S  b

  3. A  b A

  4. A  b

  5. A  a B

  6. A  a

  7. B  b B

2.3.2. Преобразовать КС-грамматику G = <T, N, S, R> в эквивалентную КС-грамматику, не содержащую правил с одинаковой правой частью.

G = <T, N, S, R>

Терминалы : i, :=, (, )

Нетерминалы : A, B, F, L, P, Q, S

Правила :

  1. S  L A

  2. S  L B

  3. L  P :=

  4. L  Q :=

  5. P  i

  6. A  F

  7. Q  i

  8. B  F

  9. F  Q ( i )

Исключим Q  i :

Правила :

  1. S  L A

  2. S  L B

  3. L  P :=

  4. L  i :=

  5. P  i

  6. A  F

  7. B  F

  8. F  i ( i )

Исключим B  F :

Правила :

  1. S  L A

  2. S  L F

  3. L  P :=

  4. L  i :=

  5. P  i

  6. A  F

  7. F  i ( i )

2.4.4. Преобразовать НКС-грамматику G = <Т, N, S, R> в эквивалентную КС-грамматику, не содержащую цепных правил.

G = <T, N, S, R>

Терминалы : i, ̚ , ˅, &, (, )

Нетерминалы : S, T, P

Правила :

  1. S  S ˅ T

  2. S  T

  3. T  T & P

  4. T  P

  5. P  ̚ P

  6. P  ( S )

  7. 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

Правила :

  1. S  S a A

  2. S  A A

  3. S  b

  4. A  ASa

  5. A  A d

  6. 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

Правила :

  1. S  A A S1

  2. S  b S1

  3. A  c S1

  4. S1  a A S1

  5. S1  ε

  6. A1  S a A1

  7. A1  b A1

  8. A1  ε

Соседние файлы в папке Курсовая работа5