IF-UTAMA 1
Penurunan (Derivation)
Pertemuan : 5 Dosen Pembina : Danang Junaedi
IF-UTAMA 2
Penurunan (Derivation)
[2]• Berfungsi untuk menggambarkan atau mengetahui bagaimana memperoleh suatu string dari dari suatu tata bahasa dengan cara menurunkan simbol-simbol variabel menjadi simbol-simbol terminal.
• Proses penurunan dilakukan dengan cara :
– Leftmost derivation : simbol variabel paling kiri yang diturunkan terlebih dahulu
– Rightmost derivation : simbol variabel paling kanan yang diturunkan terlebih dahulu
• Jenis Penurunan
– Derivation string / Penurunan String : dimulai dengan simbol awal dan menggunakan tanda “⇒” yang menunjukan hasil penurunannya.
– Derivation tree / Pohon Penurunan, disebut juga derivation
(parse) tree : root dari pohon penurunan adalah simbol awal,
sedangkan node (daun) dari pohon penurunan adalah simbol-simbol non terminal atau terminal dari tata bahasa tersebut atau kemungkinan simbol ε
Formally, let G = (V, T, P, S) be a CFG, a parse
tree for G must be such that:
• Every vertex has a label from V
∪
T
∪
{
ε
}.
• The root is labeled S.
• The label of any internal vertex is in V.
• If a vertex is labeled
ε
, it must be a leaf and has
no sibling.
• If a vertex is labeled A and its children are
labeled X
1, X
2, ..., X
kfrom left to right, then A
→
X
1X
2…
X
3is a production in P.
Parse Tree
[1]Contoh Penurunan
[1]Misalkan diketahui sebuah context free
grammar G
3dengan aturan produksi sebagai
berikut:
E → E + E
E → E - E
E → (E)
E → V
V → x
V → z
V → y
IF-UTAMA 5
Contoh Penurunan (contd)
Kita bisa membuat pohon penurunan sebagai berikut :
Derivation String
:
E ⇒ E + E
⇒
V + E
⇒
x + E
⇒
x + (E)
⇒
x + (E - E)
⇒
x + (V - E)
⇒
x + (y - E)
⇒
x + (y - V)
⇒
x + (y - z)
String x+(y-z) diperoleh dengan cara membaca node daun) dari cabang paling bawah kiri ke kanan.
E E + E V ( E ) E - E V V x y z CFG G3: E → E + E | E - E | (E) | V V → x | y | z IF-UTAMA 6
Contoh Penurunan (contd)
Leftmost Derivation E ⇒ E + E ⇒V + E ⇒x + E ⇒x + (E) ⇒x + (E - E) ⇒x + (V - E) ⇒x + (y - E) ⇒x + (y - V) ⇒x + (y - z) E E + E V ( E ) E - E V V x y z Rightmost derivation E ⇒ E + E ⇒E + (E) ⇒E + (E - E) ⇒E + (E - V) ⇒E + (E - z) ⇒E + (V - z) ⇒E + (y - z) ⇒V + (y - z) ⇒x + (y - z) E E + E V ( E ) E - E V V x y z• Each parse tree has one unique leftmost derivation and one unique rightmost derivation.
• A grammar is ambiguous if some strings in it have more than one parse trees, i.e., it has more than one leftmost derivations (or more than one rightmost derivations). • Consider the following grammar G:
S → AS | a | b A → SS | ab
A string generated by this grammar can have more than one parse trees. Consider the string abb:
Ambiguity
[1] A S S S b a b S A S a b b S E ⇒ E + E ⇒x + E ⇒x + E + E ⇒x + y + E ⇒x + y + z E ⇒ E + E ⇒E + E + E ⇒x + E + E ⇒x + y + E ⇒x + y + z E + E x y E z + E + E x y + z EAs another example, consider the following grammar:
E
→
E + E | E * E | (E) | x | y | zThere are 2 leftmost derivations for x + y + z:
IF-UTAMA 9
• Note that a CFL L can be generated by several
different grammars, e.g., the language L={a
nb
m| n
> m > 0) can be generated by both G
1and G
2:
G
1: S
→
aS’b S’
→
aS’b|A A
→
aA|a
G
2: S
→
AB A
→
aA|a
B
→
aBb|ab
• A CFL L is said to be inherently ambiguous if all
its grammars are ambiguous. If any one of them is
unambiguous, L is unambiguous.
Ambiguity
[1]IF-UTAMA 10
1. Consider the grammar of an if-statement:
<if> → if <cond> then <stat>
<if> → if <cond> then <stat> else <stat> <cond> → P | Q
<stat> → <if> | R | S Consider the following if-statement:
if P then if Q then R else S
This grammar is ambiguous since the above statement can have two parse trees. What are they?
2. Consider the grammar:
S →aB | bA A →a | aS | bAA B →b | bS | aBB
– Generate 4 strings from this grammar.
– Do you know what language does this CFG represent?
Studi Kasus
[1]Penyederhanaan
[5]• Tujuan : Melakukan pembatasan sehingga tidak
menghasilkan pohon penurunan yang memiliki kerumitan yang tidak perlu atau aturan produksi yang tidak berarti. • Contoh :
S AB | a A a
Kelemahan CFG di atas, aturan produksi S AB tidak berarti karena B tidak memiliki penurunan.
• Untuk CFG berikut :
S A A B B C
C D D a | A
Memiliki kelemahan terlalu panjang jalannya padahal berujung pada S a, produksi D A juga
menyebabkan kerumitan.
Penyederhanaan
[5] (contd)• Suatu CFG dapat disederhanakan dengan melakukan : 1. Penghilangan produksi ε
2. Penghilangan produksi unit
IF-UTAMA 13
Penghilangan Produksi ε
[5]• Produksi ε adalah produksi dalam bentuk α ε
• Atau bisa dianggap sebagai produksi kosong (empty). • Penghilangan produksi ε dilakukan dengan
melakukan penggantian produksi yang memuat variabel yang bisa menuju produksi ε, atau biasa disebut nullable.
• Contoh
S bcAd A ε
A nullable serta A ε satu-satunya produksi dari A, maka variabel A bisa ditiadakan
Hasil penyederhanaan tata bahasa bebas konteks menjadi:
S bcd
IF-UTAMA 14
Penghilangan Produksi ε
[5] (contd) • ContohS bcAd A bd | ε
– A nullable, tapi A ε bukan satu-satunya produksi dari A
– hasil penyederhanaan:
S bcAd | bcd A bd • Contoh
S Ab | Cd A d C ε
– Variabel yang nullable adalah variabel C.
– Karena penurunan C ε merupakan penurunan satu-satunya dari C, maka kita ganti S Cd menjadi S d – Kemudian produksi C ε kita hapus.
– Setelah penyederhanaan menjadi:
S Ab | d A d
Penghilangan Produksi Unit
[5]• Produksi dimana ruas kiri dan kanan aturan produksi hanya berupa satu simbol variabel, misalkan: A B, C D. • Keberadaannya membuat tata bahasa memiliki kerumitan
yang tak perlu.
• Penyederhanaan dilakukan dengan melakukan penggantian aturan produksi unit.
• Contoh:
S Sb S C C D C ef D dd Dilakukan penggantian berturutan mulai dari aturan produksi yang paling dekat menuju ke penurunan terminal-terminal (‘⇒’ dibaca ‘menjadi’):
C D => C dd S C => S dd | ef
Sehingga aturan produksi setelah penyederhanaan: S Sb
S dd | ef
Penghilangan Produksi Unit [5] (contd)
• Contoh:S A S Aa A B B C
B b C D C ab D b
Penggantian yang dilakukan : – C D => C b
– B C => B b | ab,
karena B b sudah ada, maka cukup dituliskan B ab
– A B => A ab | b – S A => S ab | b
– Sehingga aturan produksi setelah penyederhanaan:
IF-UTAMA 17
Penghilangan Produksi Useles
[5]• Produksi useless didefinisikan sebagai :
– Produksi yang memuat simbol variabel yang tidak memiliki penurunan yang akan menghasilkan terminal-terminal seluruhnya.
– Produksi yang tidak akan pernah dicapai dengan penurunan apapun dari simbol awal, sehingga produksi itu redundan (berlebih)
• Contoh :
S aSa | Abd | Bde A Ada B BBB | a Maka :
– Simbol variabel A tidak memiliki penurunan yang menuju terminal, sehingga bisa dihilangkan
– Konsekuensi : aturan produksi S Abd tidak memiliki penurunan
– Penyederhanaan menjadi:
SaSa | Bde B BBB | a
IF-UTAMA 18
Penghilangan Produksi Useles
[5] (contd) • Contoh :S Aa | B Aab | D B b | E
C bb E aEa
Maka :
– Aturan produksi A D, simbol variabel D tidak memiliki penurunan.
– Aturan produksi C bb, Penurunan dari simbol S, dengan jalan manapun tidak akan pernah mencapai C
– Simbol variabel E tidak memiliki aturan produksi yang menuju terminal
– Konsekuensi no (3) Aturan produksi B E, simbol variabel E tidak memiliki penurunan.
Maka produksi yang useless:
A D C bb E aEa B E
Penyederhanaannya menjadi:
S Aa | B A ab B b
Studi Kasus
Buat penyederhanaan untuk aturan-aturan produksi berikut ini :
1.Aturan Produksi 1 :
S aAb | cEB A dBE | eeC B ff
C ae D h 2.Aturan Produksi 2 : S Cba | D A bbC B Sc | ddd C eAn | f | C D E | SABC E gh 3.Aturan Produksi 3 : S AaCD A CD | AB B b | ε C d | ε D ε
Berdasarkan ke tiga aturan di atas buat string hasil penurunannya