Upload
others
View
79
Download
0
Embed Size (px)
Citation preview
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
aabb$
S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
.a a b b $
S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[ . , $ ]
.a a b b $
S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[ . , $ ]
[ . , a ]
.a a b b $
S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[ . , $ ]
[ . , a ]
.a a b b $
S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
.a a b b $S1 → ε
S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
a .a b b $S1 → ε
S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
[ . , b ]
a .a b b $S1 → ε
S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
[ . , b ]
[ . , a ]
a .a b b $S1 → ε
S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
[
.
. , b ]
a .a b b $S1 → ε S3 → ε
S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
[
.
. , b ]
[ . , b ]
a a .b b $S1 → ε S3 → ε
S4 → ε S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
[
.
. , b ]
a a .b b $S1 → ε S3 → ε S4 → ε
S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
[
.
., b ]
a a b .b $S1 → ε S3 → ε S4 → ε
S2 → S3aS4b S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
. , $ ]
a a b .b $S1 → ε S3 → ε S4 → ε S2 → S3aS4b
S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[ . , $ ]
[
.
., $ ]
a a b b .$S1 → ε S3 → ε S4 → ε S2 → S3aS4b
S → S1aS2b[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
a a b b $S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b
[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
a a b b $S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b
[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR-анализ
S
S1
ε
a S2
S3
ε
a S4
ε
b
b
[
.
, $ ]
[
.
, $ ]
[
.
, b ][ . , a ]
[ . , a ] [ . , b ]
a a b b $
S1 → ε S3 → ε S4 → ε S2 → S3aS4b S → S1aS2b
[ S [ S1[ε, a] (a) S2 [ S3[ε, a] (a) S4[ε, b] (b) , b] (b), $] , $]
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
Автомат Кнута
[S ′ → ·S , $] [S → ·SaSb, $]
[S → ·ε, $] [S → ·SaSb, a]
[S → ·ε, a]
[S ′ → S ·, $] [S → S · aSb, $]
[S → S · aSb, a]
[A→ α · Bβ, u] [B → ·γ, v ] v ∈ FIRST(βu)
ε
ε
S
ε
ε
S
ε
ε
S
ε
a
a
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
Детерминизация
[S ′ → ·S , $][S → ·SaSb, $][S → ·ε, $][S → ·SaSb, a][S → .ε, a]
[S ′ → S ·, $][S → S ·aSb, $][S → S ·aSb, a]
S a
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
Детерминизация
I0S → ·ε, $S → ·ε, a
S → ·SaSb, $S → ·SaSb, aS ′ → ·S , $
I1S → S · aSb, $S → S · aSb, aS ′ → S ·, $
I2S → ·, aS → ·, b
S → ·SaSb, aS → ·SaSb, bS → Sa · Sb, $S → Sa · Sb, a
I3S → S · aSb, aS → S · aSb, bS → SaS · b, $S → SaS · b, a
I4S → ·, aS → ·, b
S → ·SaSb, aS → ·SaSb, bS → Sa · Sb, aS → Sa · Sb, b
I5S → SaSb·, $S → SaSb·, a
I6S → S · aSb, aS → S · aSb, bS → SaS · b, aS → SaS · b, b
I7S → SaSb·, aS → SaSb·, b
S
a
S
b
a
S ba
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Стэк Вход Действие РазборI0 abab$ R: S → ε
I0SI1 abab$ S: I2 2I0SI1aI2 bab$ R: S → ε 2
I0SI1aI2SI3 bab$ S: I5 22I0SI1aI2SI3bI5 ab$ R: S → SaSb 22
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Стэк Вход Действие РазборI0 abab$ R: S → ε
I0SI1 abab$ S: I2 2
I0SI1aI2 bab$ R: S → ε 2I0SI1aI2SI3 bab$ S: I5 22
I0SI1aI2SI3bI5 ab$ R: S → SaSb 22
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Стэк Вход Действие РазборI0 abab$ R: S → ε
I0SI1 abab$ S: I2 2I0SI1aI2 bab$ R: S → ε 2
I0SI1aI2SI3 bab$ S: I5 22I0SI1aI2SI3bI5 ab$ R: S → SaSb 22
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Стэк Вход Действие РазборI0 abab$ R: S → ε
I0SI1 abab$ S: I2 2I0SI1aI2 bab$ R: S → ε 2
I0SI1aI2SI3 bab$ S: I5 22
I0SI1aI2SI3bI5 ab$ R: S → SaSb 22
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Стэк Вход Действие РазборI0 abab$ R: S → ε
I0SI1 abab$ S: I2 2I0SI1aI2 bab$ R: S → ε 2
I0SI1aI2SI3 bab$ S: I5 22I0SI1aI2SI3bI5 ab$ R: S → SaSb 22
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Стэк Вход Действие РазборI0SI1aI2SI3bI5 ab$ R: S → SaSb 22
I0SI1 ab$ S: I2 221I0SI1aI2 b$ R: S → 221
I0SI1aI2SI3 b$ S: I2 2212I0SI1aI2SI3bI5 $ R: S → SaSb 22121
Александр Рубцов LR-анализ
LR-грамматики Автомат Кнута LR(1)-анализ
LR(1)-анализатор
State a b $ SI0 R: S → ε R: S → ε I1I1 S: I2 R: S’ → SI2 R: S → ε R: S → ε I3I3 S: I4 S: I5I4 R: S → ε R: S → ε I6I5 R: S → SaSb R: S → SaSbI6 S: I4 S: I7I7 R: S → SaSb R: S → SaSb
Стэк Вход Действие РазборI0SI1 ab$ S: I2 221
I0SI1aI2 b$ R: S → 221I0SI1aI2SI3 b$ S: I2 2212
I0SI1aI2SI3bI5 $ R: S → SaSb 22121I0SI1 $ Accept 22121
Александр Рубцов LR-анализ