Dosen Pengampu:
Dr.M.Taufik,M.Pd.
Disusun Oleh:
Ivhan Syaputra 2204411592
Yusril 2204411583
Fadillah Sumanda 2204411598
Saila 2204411558
1
PRAKATA
2
BAB I
PENDAHULUAN
A. Latar Belakang
Bahasa alami atau bahasa non formal adalah bahasa komunikasi yang digunakan oleh
manusia, yaitu bahasa ucap seperti bahasa Indonesia, bahasa Inggris, bahasa Arab. Sintaks
bahasa alami sangat rumit, karena bahasa alami memiliki tata bahasa dan aturan yang lebih
luas dan luwes, sehingga tidak mungkin untuk menspesifikasikan semua aturan sintaksnya.
Bahasa formal adalah bahasa yang kaidah sintaksnya dapat dispesifikasikan secara matematis
dengan baik. Kaidah bahasa dalam teori bahasa formal tidak hanya bermanfaat untuk studi
linguistik bahasa alami seperti penterjemahan secara otomatis dari suatu bahasa ke bahasa
lain, tetapi juga berguna untuk studi bahasa pemograman.
Tata bahasa bebas konteks (Context Free Grammar atau CFG) merupakan salah satu
bahasa formal yang dapat digunakan untuk mendefinisikan sintaks bahasa pemograman.
Suatu tata bahasa bebas konteks dapat berbentuk sangat melebar, sangat menyempit, atau
terjadi rekursif kiri, yang semuanya sering dinamakan bentuk tidak normal. Suatu tata
bahasa bebas konteks dapat dimodifikasi ruas kanan aturan produksinya sedemikian
sehingga panjangnya hanya satu atau dua karakter, tentu dapat dengan mudah dibayangkan
bahwa pohon penurunan string yang terbentuk akan menjadi lebih sederhana, yaitu pohon
biner dimana setiap simpul hanya memiliki cabang satu atau dua. Tata bahasa dengan batasan
seperti ini disebut tata bahasa bebas konteks dalam bentuk normal Chomsky (Chomsky
Normal Form atau CNF)[1].
B. Rumusan Masalah
a. Apa yang dimaksud dengan Tata Bahasa Bebas Konteks?
b. Apa yang dimaksud dengan Parsing?
c. Apa yang dimaksud dengan Ambiguitas?
C. Tujuan
a. Mengetahui apa yang dimaksud dengan Tata Bahasa Bebas Konteks
b. Mengetahui apa itu Parsing
c. Mengetahui apa yang dimaksud dengan Ambiguitas
3
BAB II
PEMBAHASAN
4
B. Pohon Penurunan
Sebuah pohon (tree) adalah suatu graph terhubung tidak sirkuler, yang memiliki satu
simpul (node) / vertex disebut akar (root) dan dari situ memiliki lintasan ke setiap simpul.
Pohon sintaks / pohon penurunan (syntax tree/derivaton tree/parse tree) berguna untuk
menggambarkan bagaimana memperoleh suatu string (untai) dengan cara menurunkan
simbol-simbol variabel menjadi simbol-simbol terminal. Setiap simbol variabel diturunkan
menjadi terminal, sampai tidak ada yang belum tergantikan.
Contoh:
Langkah Pertama
S merupakan simbol awal.
Langkah Kedua
Kita harus mencari dua simbol a terminal (aa). Untuk mencarinya variabel A harus kita
turunkan karena variabel A memiliki dua turunan, yaitu aA dan a maka kita harus
memilih turunan aA supaya kita dapat mencari simbol terminal a kedua.
5
Langkah Ketiga
Setelah kita berhasil menurunkan satu simbol terminal a, selanjutnya variabel A yang
tersisa kita turunkan menjadi terminal a supaya pencarian tidak mengalami perulangan.
Langkah Keempat
Setelah dua simbol terminal a (aa) sudah kita temukan, langkah selanjutnya adalah
mencari tiga simbol terminal b (bbb). Maka seperti mencari variabel A tadi,
variabel B harus kita turunkan menjadi bB.
6
Langkah Kelima
Karena masih tersisa dua simbol terminal b yang harus kita cari, maka variabel B harus
kita turunkan kembali menjadi bB.
Langkah Keenam
Terakhir, setelah dua simbol terminal b kita temukan, maka langkah terakhir adalah
menurunkan variabel B menjadi terminal b.
7
C. Parsing
Sebuah pohon (tree) adalah suatu graph terhubung tidak sirkuler, yang memiliki satu
simpul (node)/vertex yang disebut akar (root) dan dari situ memiliki lintasan ke setiap simpul.
Gambar dibawah ini memberikan contoh sebuah tree yang menguraikan kalimat dalam
bahasa inggris.
Context Free Grammar ( CFG ) menjadi dasar dalam pembentukan suatu parser/proses
analisis sintaksis. Bagian sintaks dalam suatu kompilator kebanyakan di definisikan dalam
tata bahasa bebas konteks.
Pohon penurunan (derivation tree / parse tree) berguna untuk menggambarkan bagaimana
memperoleh suatu string (untai) dengan cara menurunkan simbol-simbol variabel menjadi
simbol – simbol terminal. Setiap simbol variabel akan diturunkan menjadi terminal, sampai
tidak ada yang belum tergantikan.
Proses Parsing merupakan tahapan analisis sintaksis yang berguna untuk memeriksa
urutan kemunculan token. Di dalam mengimplementasikan sebuah metode parsing ke dalam
program perlu diperhatikan tiga hal sebagai berikut:SA
Rentang Waktu eksekusi
Penanganan Kesalahan
Penanganan Kode
Metode Parsing digolongkan menjadi:
1. Top – Down
Metode ini melakukan penelusuran dari root/puncal ke leaf / bawah (dari symbol awal ke
symbol terminal/symbol awal S sampai kalimat x). metode ini meliputi:
Backtrack/backup : Brute Force
No Backtrack : Recursive Descent Parser
8
2. Bottom – Up
Metode ini melakukan penelusuran dari leaf ke root (dari kalimat x sampai symbol awal S).
Misalnya terdapat tata bahasa bebas konteks dengan aturan produksi (simbol awal S,
selanjutnya di dalam bab ini digunakan sebagai simbol awal untuk tata bahasa konteks adalah
S):
S AB
A aA | a
B bB | b
Akan kita gambarkan pohon penurunan untuk memeperoleh untai : ‘aabbb’. Pada pohon
tersebut simbol awal akan menjadi akar (root). Setiap kali penurunan dipilih aturan produksi
yang menuju ke solusi. Simbol – simbol variabel akan menjadi simpul - simpul yang
mempunyai anak. Simpul-simpul yang tidak mempunyai anak akan menjadi simbol terminal.
Kalau kita baca simbol terminal yang ada (pada gambar) dari kiri ke kanan akan diperoleh
untai ‘aabbb’
Proses penurunan atau parsing bila dilakukan dengan cara sebagai berikut :
1. Penurunan terkiri (leftmost derivation) : simbol variabel terkiri yang diperluas terlebih
dulu.
2. Penurunan terkanan (rightmost derivation): simbol variabel terkanan yang diperluas
terlebih dahulu.
S aAS | a
A SbA | ba
9
Untuk memperoleh untai ‘aabbaa’ dari tata bahasa bebas kontkeks diatas (‘=>’ bisa dibaca
‘menurunkan’):
- Dengan penuruna terkiri : S => aAS => aSbAS =>aabAS => aabbaS => aabbaa,
- Dengan penurunan terkanan : S => aAS => aAa => aSbAa => aSbaa => aabbaa.
Kita dapat melihat pohon penurunannya (pada gambar) meskipun proses penurunannya
berbeda, namun akan tetap memiliki pohon penurunan yang sama.
Biasanya persolaan yang diberikan berkaitan dengan pohon penurunan adalah untuk
mencari penurunan yang hasilnya menuju kepada suatu untai yang ditentukan. Daalm hal ini,
perlu untuk melakukan percobaan pemilihan aturan produksi yang bisa menuju ke solusi.
Misalkan sebuah tata bahasa bebas konteks memiliki aturan produksi sebagai berikut :
S aB |bA
A a | aS | bAA
B b | bS | aBB
Pohon penurunan untuk memperoleh ‘aaabbabbba’ bisa dilihat pada gambar.[2]
10
D. Ambiguitas
Ambiguitas / kedwiartian terjadi bila terdapat lebih dari satu pohon penurunan yang
berbeda untuk memperoleh suatu untai.
Misalkan terdapat tata bahasa bebas konteks :
S A|B
Aa
Ba
Untuk memperoleh untai ‘a’ bisa terdapat dua cara penurunan berikut ini.
S => A => a
S => B => a
S SbS | ScS | a
Kita bisa menurunkan untai ‘abaca’ dalam dua cara beirkut ini :
o S => SbS => SbScS => SbSca => Sbaca => abaca
o S => ScS => SbScS => abScS => abacS => abaca.
11
Ambiguitas terjadi bila terdapat lebih dari satu pohon penurunan yang berbeda untuk
memperoleh suatu string. Misalkan terdapat tata bahasa sebagai berikut :
SA|BAaBa
Untuk memperoleh untai ‘a’ bisa terdapat dua cara penurunan sebagai berikut :
S => A => a S => B => a
Gambar 3.
String ambigu Sebuah string yang mempunyai lebih dari satu pohon sintaks disebut string
ambigu (ambiguous). Grammar yang menghasilkan paling sedikit sebuah string ambigu
disebutgrammar ambigu.
12
Kita bisa mlihat bahwa untuk untai yang sama (‘abaca’) dapat dibuat pohon penurunan
yang berbeda, maka dapat dikatakan tata bahasa bebas konteks tersebut ambigu. Jadi, untuk
menunjukkan bahwa suatu tata bahasa bebas konteks ambigu, bisa dilakukan dengan
menemukan untai yang memungkinan pembentukan lebih dari satu pohon penurunan.
Ambiguitas dapat menimbulkan masalah pada bahasa – bahasa tertentu, baik bahasa alami
maupun pada bahasa pemograman. Bila suatu struktur bahasa memiliki lebih dari suatu
dekomposisi (penurunan), dan susunannya akan menentukan art, maka artinya menajid
ambigu. [2]
BAB III
PENUTUP
A. Kesimpulan
Tata bahasa bebas konteks adalah suatu cara yang menunjukkan bagaimana menghasilkan
untai – untai dalam sebuah bahasa, dan tidak terdapat pembatasan pada hasil produksinya.
Pohon sintaks / pohon penurunan (syntax tree/derivaton tree/parse tree) berguna untuk
menggambarkan bagaimana memperoleh suatu string (untai) dengan cara menurunkan
simbol-simbol variabel menjadi simbol-simbol terminal. Setiap simbol variabel diturunkan
menjadi terminal, sampai tidak ada yang belum tergantikan.
Pohon penurunan ( derivation tree/parse tree) berguna untuk menggambarkan simbol-simbol
variabel menjadi simbol-simbol terminal setiap simbol variabel akan di turunkan menjadi
terminal sampai tidak ada yang belum tergantikan. Proses penurunan atau parsing bisa
dilakukan dengan cara :
1. penurunan terkiri (leftmost derivation) yaitu simbol variabel terkiri yang diperluas terlebih
dahulu.
2. Penurunan terkanan (rightmost derivation) yaitu simbol variabel terkanan yang diperluas
terlebih dahulu.
Ambiguitas terjadi bila terdapat lebih dari satu pohon penurunan yang berbeda untuk
memperoleh suatu string. Sebuah string yang mempunyai lebih dari satu pohon sintaks
13
disebut string ambigu (ambiguous). Grammar yang menghasilkan paling sedikit sebuah string
ambigu disebutgrammar ambigu.
14
DAFTAR PUSTAKA
[1]F. Elsaid, “Teori Bahasa dan Otomata (Pohon Penurunan),” in Teori Bahasa dan Otomata
(PohonPenurunan), 2012.
[2]F. Utdirartatmo, Teori Bahasa Dan Otomata, 2nd ed. Yogyakarta: Graha Ilmu, 2005.
15