You are on page 1of 5

Compilation Techniques Russell Kenael Azaria

Assignment 5 2201742936

1. Diketahui RE: (𝑎𝑏)∗ 𝑎𝑏


Buatlah DFA secara langsung dari RE di atas.
Answer:

RE numbered:

Followpos:
1: 2
2: 1,3
3: 4
4: 5
5: -

Tree:

Table:

State 𝑎 𝑏
1,3 2,4 -
2,4 - 1,3,5*
1,3,5* 2,4 -

DFA:
Compilation Techniques Russell Kenael Azaria
Assignment 5 2201742936

2. Diketahui RE: 𝑥 ∗ 𝑦(𝑥|𝑦)+


Buatlah DFA dari 𝜀 − NFA berdasarkan RE di atas.
Answer
𝜀 − NFA:

Misalkan
𝐸(𝑠𝑖 ) = 𝜀 − closure dari state 𝑠𝑖 ,
𝛿𝜀 (𝑠𝑖 , 𝑥) = state setelah 𝑠𝑖 pada 𝜀 − NFA diberi input 𝑥,
𝛿𝐷 (𝑞𝑖 , 𝑥) = state setelah 𝑞𝑖 pada DFA diberi input 𝑥,

Maka
𝐸(𝑠0 ) = {𝑠0 , 𝑠1 , 𝑠3 }
𝐸(𝑠1 ) = {𝑠1 }
𝐸(𝑠2 ) = {𝑠1 , 𝑠2 , 𝑠3 }
𝐸(𝑠3 ) = {𝑠3 }
𝐸(𝑠4 ) = {𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }
𝐸(𝑠5 ) = {𝑠5 , 𝑠6 , 𝑠8 }
𝐸(𝑠6 ) = {𝑠6 }
𝐸(𝑠7 ) = {𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 }
𝐸(𝑠8 ) = {𝑠8 }
𝐸(𝑠9 ) = {𝑠5 , 𝑠6 , 𝑠8 , 𝑠9 , 𝑠10 , 𝑠11 }
𝐸(𝑠10 ) = {𝑠5 , 𝑠6 , 𝑠8 , 𝑠10 , 𝑠11 }
𝐸(𝑠11 ) = {𝑠11 }

𝛿𝐷 ({𝑠0 , 𝑠1 , 𝑠3 }, 𝑥) = 𝐸(𝛿𝜀 (𝑠0 , 𝑥) ∪ 𝛿𝜀 (𝑠1 , 𝑥) ∪ 𝛿𝜀 (𝑠3 , 𝑥)) = 𝐸(∅ ∪ {𝑠2 } ∪ ∅) = {𝑠1 , 𝑠2 , 𝑠3 }


𝛿𝐷 ({𝑠0 , 𝑠1 , 𝑠3 }, 𝑦) = 𝐸(𝛿𝜀 (𝑠0 , 𝑦) ∪ 𝛿𝜀 (𝑠1 , 𝑦) ∪ 𝛿𝜀 (𝑠3 , 𝑦)) = 𝐸(∅ ∪ ∅ ∪ {𝑠4 }) = {𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }

𝛿𝐷 ({𝑠1 , 𝑠2 , 𝑠3 }, 𝑥) = 𝐸(𝛿𝜀 (𝑠1 , 𝑥) ∪ 𝛿𝜀 (𝑠2 , 𝑥) ∪ 𝛿𝜀 (𝑠3 , 𝑥)) = 𝐸({𝑠2 } ∪ ∅ ∪ ∅) = {𝑠1 , 𝑠2 , 𝑠3 }


𝛿𝐷 ({𝑠1 , 𝑠2 , 𝑠3 }, 𝑦) = 𝐸(𝛿𝜀 (𝑠1 , 𝑦) ∪ 𝛿𝜀 (𝑠2 , 𝑦) ∪ 𝛿𝜀 (𝑠3 , 𝑦)) = 𝐸(∅ ∪ ∅ ∪ {𝑠4 }) = {𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }

𝛿𝐷 ({𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }, 𝑥) = 𝐸(𝛿𝜀 ({𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }, 𝑥)) = 𝐸({𝑠7 }) = {𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 }


𝛿𝐷 ({𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }, 𝑦) = 𝐸(𝛿𝜀 ({𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }, 𝑦)) = 𝐸({𝑠9 }) = {𝑠5 , 𝑠6 , 𝑠8 , 𝑠9 , 𝑠10 , 𝑠11 }

𝛿𝐷 ({𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 }, 𝑥)


= 𝐸(𝛿𝜀 ({𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 }, 𝑥)) = 𝐸({𝑠7 }) = {𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 }
Compilation Techniques Russell Kenael Azaria
Assignment 5 2201742936

𝛿𝐷 ({𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 }, 𝑦)


= 𝐸(𝛿𝜀 ({𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 }, 𝑦)) = 𝐸({𝑠9 }) = {𝑠5 , 𝑠6 , 𝑠8 , 𝑠9 , 𝑠10 , 𝑠11 }

State 𝑥 𝑦
→ {𝑠0 , 𝑠1 , 𝑠3 } {𝑠1 , 𝑠2 , 𝑠3 } {𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }
{𝑠1 , 𝑠2 , 𝑠3 } {𝑠1 , 𝑠2 , 𝑠3 } {𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 }
{𝑠4 , 𝑠5 , 𝑠6 , 𝑠8 } {𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 } {𝑠5 , 𝑠6 , 𝑠8 , 𝑠9 , 𝑠10 , 𝑠11 }
∗ {𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 } {𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 } {𝑠5 , 𝑠6 , 𝑠8 , 𝑠9 , 𝑠10 , 𝑠11 }
∗ {𝑠5 , 𝑠6 , 𝑠8 , 𝑠9 , 𝑠10 , 𝑠11 } {𝑠5 , 𝑠6 , 𝑠7 , 𝑠8 , 𝑠10 , 𝑠11 } {𝑠5 , 𝑠6 , 𝑠8 , 𝑠9 , 𝑠10 , 𝑠11 }

DFA:

3. 𝑋 → 𝑎𝐵𝑐 | 𝑋𝑍 | 𝑎𝐵𝑑 | 𝑍𝑝 | 𝑍𝑜𝑝


𝑌 → 𝑐𝑋 | 𝑑𝑌 | 𝑌𝑌
𝑍 →𝑎|𝑏
a. Lakukan Left Factoring terhadap production di atas!
b. Lanjutkan dengan menghilangkan bentuk Left Recursion!
Answer:
a. Step 1:
𝑋 → 𝑎𝐵𝐶 | 𝑋𝑍 | 𝑍𝑝 | 𝑍𝑜𝑝
𝐶 →𝑐|𝑑
𝑌 → 𝑐𝑋 | 𝑑𝑌 | 𝑌𝑌
𝑍 →𝑎|𝑏

Step 2:
Compilation Techniques Russell Kenael Azaria
Assignment 5 2201742936

𝑋 → 𝑎𝐵𝐶 | 𝑋𝑍 | 𝑍𝐷
𝐶 →𝑐|𝑑
𝐷 → 𝑝 | 𝑜𝑝
𝑌 → 𝑐𝑋 | 𝑑𝑌 | 𝑌𝑌
𝑍 →𝑎|𝑏

Completed.
Result = Step 2.

b. Step 1:
𝑋 → 𝑎𝐵𝐶𝑋 ′ |𝑍𝐷𝑋′
𝑋′ → 𝑍𝑋 ′ | 𝜀
𝐶 →𝑐|𝑑
𝐷 → 𝑝 | 𝑜𝑝
𝑌 → 𝑐𝑋 | 𝑑𝑌 | 𝑌𝑌
𝑍 →𝑎|𝑏

Step 2:
𝑋 → 𝑎𝐵𝐶𝑋 ′ |𝑍𝐷𝑋 ′
𝑋′ → 𝑍𝑋 ′ | 𝜀
𝐶 →𝑐|𝑑
𝐷 → 𝑝 | 𝑜𝑝
𝑌 → 𝑐𝑋𝑌 ′ | 𝑑𝑌𝑌′
𝑌 ′ → 𝑌𝑌 ′ | 𝜀
𝑍 →𝑎|𝑏

Completed.
Result = Step 2.

4. 𝑂 → 𝐾𝑂′
𝑂′ → +𝐾𝑂′ | 𝜀
𝐾 → 𝐸𝐾 ′
𝐾 ′ →∗ 𝐸𝐾 ′ | 𝜀
𝐸 → /𝐸 | (𝑂) | 𝑦 | 𝑎

a. Carilah First dari Grammar tersebut


b. Carilah Follow dari Grammar tersebut
c. Buatlah Parsing Table dari Grammar tersebut
d. Untuk input 𝑦/𝑎 ∗ 𝑦 + 𝑎, gambarkan pergerakan parsingnya
Answer:
a, b.

Variable First Follow


𝑂 {/, (, 𝑦, 𝑎} {$, )}
𝑂’ {+, 𝜀} {$, )}
Compilation Techniques Russell Kenael Azaria
Assignment 5 2201742936

𝐾 {/, (, 𝑦, 𝑎} {+, $, )}
𝐾’ {∗, 𝜀} {+, $, )}
𝐸 {/, (, 𝑦, 𝑎} {∗, +, $, )}

c. Parsing Table
/ ( ) y a + * $
𝑂 𝑂 → 𝐾𝑂′ 𝑂 → 𝐾𝑂′ 𝑂 → 𝐾𝑂′ 𝑂 → 𝐾𝑂′

𝑂’ 𝑂′ → 𝜀 𝑂′ → +𝐾𝑂′ 𝑂′ → 𝜀

𝐾 𝐾 → 𝐸𝐾′ 𝐾 → 𝐸𝐾′ 𝐾 → 𝐸𝐾′ 𝐾 → 𝐸𝐾′

𝐾’ 𝐾′ → 𝜀 𝐾′ → 𝜀 𝐾 ′ →∗ 𝐸𝐾′ 𝐾′ → 𝜀

𝐸 𝐸 →/𝐸 𝐸 → (𝑂) 𝐸→𝑦 𝐸→𝑎

d. Pergerakan parsing

Stack Input Output


$𝑂 𝑦/𝑎 ∗ 𝑦 + 𝑎$ 𝑂 → 𝐾𝑂′
$𝑂′𝐾 𝑦/𝑎 ∗ 𝑦 + 𝑎$ 𝐾 → 𝐸𝐾′
$𝑂′𝐾′𝐸 𝑦/𝑎 ∗ 𝑦 + 𝑎$ 𝐸→𝑦
$𝑂′𝐾′𝑦 𝑦/𝑎 ∗ 𝑦 + 𝑎$ 𝑝𝑜𝑝 𝑦
$𝑂′𝐾′ /𝑎 ∗ 𝑦 + 𝑎$ 𝑁𝑜𝑡 𝑓𝑜𝑢𝑛𝑑
Parsing gagal.
Input gagal diterima.

You might also like