- •Лабораторные работы по курсу «Прикладное программное обеспечение»
- •Москва 2012 Лабораторная работа №1.
- •Лабораторная работа №2. Спроектировать конечный автомат, составить диаграмму переходов ка и реализовать.
- •Лабораторная работа №3. Определить свойства ка. Построить ндка. Реализовать преобразование ндка в дка.
- •Лабораторная работа №4. Устранить из кс-грамматики бесполезные символы и ε–правила
- •Лабораторная работа №5. Устранить из kс-грамматики цепные правила и устранить левую рекурсию.
- •Лабораторная работа №6. Определить форму кс-грамматики и сделать ее приведение.
- •Лабораторная работа №8. Реализовать мп автомат для приведенной кс-грамматики
- •Лабораторная работа №9. Для ll(1) анализатора построить управляющую таблицу m
- •Лабораторная работа №10. Аналитически написать такты работы ll(1) анализатора для выведенной цепочки.
- •Лабораторная работа №11. Реализовать управляющую таблицу m для ll(k) анализатора.
- •Лабораторная работа №12.
- •Лабораторная работа №13. Определить функцию перехода g(х)
- •14.1. Построить каноническую форму множества ситуаций
- •Лабораторная работа №15. Построить управляющую таблицу для функции перехода g(х) и действий f(u).
- •Лабораторная работа №16. Реализовать lr(1)-анализатор по управляющей таблице (g,f) для lr(1) грамматики.
Лабораторная работа №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 |
|
|
|
|
|