Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
daniel.docx
Скачиваний:
2
Добавлен:
21.09.2019
Размер:
236.18 Кб
Скачать

Лабораторная работа №12.

Построить замыкание множества ситуаций для пополненной LR(1) грамматики.

12.1. Определить пополненную LR(1) грамматику

Дана грамматика G(V, T, P, S):

V = {S, F, L},

T={i, * , :,(,)},

P = {S→(F: L), F→ L*, F→ i, L→F}

LR(k) – анализатор.

Пополненная грамматика.

(0) S’→ S

(1) S→(F: L)

(2) F→ L*

(3) F→ i

(4) L→F

12.2. Определить множество First для LR(1) грамматики

(0) S’→ S

(1) S→(F: L)

(2) F→ L*

(3) F→ i

(4) L→F

First(i) = { i }

First(*) = { * }

First( ( ) = { ( }

First( ) ) = { ) }

First( $ ) = { $ }, $-символ конца строки.

First(S’) = { ( }

First(S) = { ( }

First(L) = { i }

First(F) = { i }

First(S’→ S) = { ( }

First(S → (F: L)) = { ( }

First(L → F) = { i }

First(F → L*) = { i }

Лабораторная работа №13. Определить функцию перехода g(х)

13.1. Определить функцию перехода goto(I,х)

Определим множество CLOSURE({S’→•S}) = {S’→•S, S→•(F:L)} = I0. Включим его в систему в качестве «неотмеченного» множества. Затем должны отметить множество I0 и определить множества GOTO(I0, X).

GOTO(I0, ( )=GOTO({S→•(F:L)}, ( ) = CLOSURE({S→(•F:L)}) = {S→(•F:L), F→•L*, F→•i, L→•F } = I1

GOTO(I1, F)=GOTO({S→(•F:L), L→•F}, F) = CLOSURE({S→(F•:L), L→F•}) = { S→(F•:L), L→F•} = I2

GOTO(I0, S)=GOTO( {S’→•S }, S) = CLOSURE({S’→S• }) = {S’→S •} = I3

GOTO(I1, L)=GOTO({F→•L*}, L) = CLOSURE({F→L•*}) = {F→L•*} = I4

GOTO(I2, :)=GOTO({S→(F•:L)}, : ) = CLOSURE({S→(F: •L)}) =

{S→(F: •L),L→•F,F→•L*,F→•i } = I5

GOTO(I1,i)=GOTO( { F→•i }, i) = CLOSURE({F→i• }) = {F→i• }= I6

GOTO(I4,*)=GOTO( { F→L•*}, *) = CLOSURE({F→L*•}) = {F→L*•}= I7

GOTO(I5, F)=GOTO( { L→•F}, F) = CLOSURE({L→F• }) = { L→F•} = I8

GOTO(I5, L)=GOTO( { S→(F:L•), F→L•*}, L) = CLOSURE({S→(F:L•), F→L•*}) = {S→(F:L•), F→L•*} = I9

GOTO(I5, i )=GOTO( { F→•i}, i ) = CLOSURE({F→i• }) ={ F→i• } = I6 (такое множество уже встречалось)

GOTO(I9, ) )=GOTO( {S→(F: L•)}, ) ) = CLOSURE({S→(F:L) •}) =

{S→(F:L) •} = I10

GOTO(I9, * )=GOTO( { F→L•*}, * ) = CLOSURE({F→L*•}) =

{ F→L*•} = I7 (такое множество уже встречалось)

Лабораторная работа №14.

Построить каноническую форму множества ситуаций.

14.1. Построить каноническую форму множества ситуаций

I0

S’→•S S→•(F:L)

I1

S→(•F:L) F→•L* F→•i L→•F

I2

S→(F•:L) L→F•

I3

S’→S•

I4

F→L•*

I5

S→(F: •L) L→•F

F→•L*

F→•i

I6

F→i•

I7

F→L*•

I8

L→F•

I9

S→(F:L•)

F→L•*

I10

F→i•

I11

S→(F:L)•

I12

F→L*•

14.1. Построить диаграмму переходов автомата

*

)

i

L

F

*

i

:

L

S

F

(

Лабораторная работа №15. Построить управляющую таблицу для функции перехода g(х) и действий f(u).

f(u)

g(x)

Состояние

i

*

:

(

)

$

S’

S

F

L

0

S1

3

1

S6

2

4

2

R4

R4

S5

R4

R4

3

ДОПУСК

4

S7

5

S10

8

9

6

R3

R3

R3

R3

R3

7

R2

R2

R2

R2

R2

8

R4

R4

R4

R4

R4

9

S12

S11

10

R3

R3

R3

R3

R3

11

R1

R1

R1

R1

R1

12

R2

R2

R2

R2

R2

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