TEKNIK KOMPILASI
GRAMMAR LL1
Oleh :
Saerah (2013020168)
Muchsin (2012020092)
Roxal Eric Dilepang (2012020102)
STMIK HANDAYANI
MAKASSAR
2015
Kata Pengantar
Puji syukur kami panjatkan kehadirat Allah SWT karena dengan rahmat, karunia,
serta taufik dan hidayah-Nya kami dapat menyelesaikan makalah tentang Grammar LL1. Dan
juga kami berterima kasih pada Bapak Supriadi Syam, S.Kom selaku Dosen mata kuliah
Teknik
Kompilasi
yang
telah
memberikan
tugas
ini
kepada
kami.
Kami sangat berharap makalah ini dapat berguna dalam rangka menambah wawasan
serta pengetahuan kita mengenai Grammar LL1. Kami juga menyadari sepenuhnya bahwa di
dalam makalah ini terdapat kekurangan dan jauh dari kata sempurna. Oleh sebab itu, kami
berharap adanya kritik, saran dan usulan demi perbaikan makalah yang telah kami buat di
masa yang akan datang, mengingat tidak ada sesuatu yang sempurna tanpa saran yang
membangun.
Semoga makalah sederhana ini dapat dipahami bagi siapapun yang membacanya.
Sekiranya laporan yang telah disusun ini dapat berguna bagi kami sendiri maupun orang yang
membacanya. Sebelumnya kami mohon maaf apabila terdapat kesalahan kata-kata yang
kurang berkenan dan kami memohon kritik dan saran yang membangun demi perbaikan di
masa depan.
BAB 1
PENDAHULUAN
A. Latar belakang
Tata bahasa yang rancu dapat diperbaiki dengan cara menghilangkan rekursi
kiri dan melakukan faktorisasi kiri.Rekursi kiri adalah aturan produksi dengan simbol
non-terminal pada sisi kiri produksi sama dengan simbol awal sisi kanan produksi,
seperti E E+E. Rekursi kiri dapat menyebabkan pengulangan tak hingga. Faktorisasi
kiri adalah pengubahan aturan-aturan produksi memiliki simbol awal sisi kanan
produksi yang sama. Contohnya E E+E dan E E*E. Faktorisasi kiri perlu
dilakukan untuk memastikan pilihan aturan produksi yang akan dipakai
Tidak rancu dan tidak memiliki rekursi kiri merupakan ciri-ciri dari tata
bahasa yang disebut tata bahasa LL(1). Kedua huruf L berasal dari left (kiri). Huruf L
pertama berarti tiap karakter masukan diproses satu per satu mulai dari kiri ke kanan.
Huruf L kedua berarti pemakain derivasi derivasi terkiri. Sedangkan angka 1 berarti
pada setiap langkah penguraian hanya membutuhkan satu token.
Penguraian tata bahasa LL(1) menggunakan teknik top-down. Dalam teknik
tersebut dilakukan proses derivasi terkiri terhadap suatu masukan . Dalam proses
derivasi tersebut dilakukan pembentukan pohon urai yang dimulai dari akar dan
membentuk simpul-simpul baru dengan urutan preorder. Contohnya tata bahasa
berikut :
S aBC
B bc| d
Ce|f
Selain pengurai top-down, ada satu jenis pengurai yang disebut pengurai
bottom-up, yaitu proses pembentukan pohonnya merupakan kebalikan dari pengurai
top-down. Pengurai top-down lebih mudah digunakan untuk pembentukan pengurai
yang efisien. Pengurai bottom-up dapat menangani tata bahasa yang lebih besar,
tetapi implementasi pengurai ini lebih sukar dibandingkan pengurai top-down.
BAB II
PEMBAHASAN
A. Pengertian
Grammar LL1 adalah grammar yang dapat di parse oleh Parser yang membaca
input dari kiri. Grammar yang bagus adalah grammar yang mempunyai nilai tunggal
untuk setiap sel M(A,a) pada Parsing Table.
Jadi, suatu grammar dikatakan LL(1) jika semua entri tabel M-nya tidak
terdefinisi lebih dari satu.
LL(1) :
Sekarang kita analisa mengapa pada ketiga contoh di atas M(A, a) tidak
bernilai tunggal. Sifat-sifat produksi pada masing-masing contoh (yaitu produksi yang
berpola
adalah :
produksi sama dengan simbol awal sisi kanan produksi, seperti E E+E
E. Top Down Parsing
Diberikan kalimat x sebagai input. Parsing dimulai dari simbol awal S sampai
kalimat x nyata (atau tidak nyata jika kalimat x memang tidak bisa diturunkan dari S)
dari pembacaan semua leaf dari pohon parsing jika dibaca dari kiri ke kanan.
Ada 2 kelas metoda parsing top-down yaitu kelas metoda dengan backup dan
kelas metoda tanpa backup. Contoh metoda kelas dengan backup adalah metoda
Brute-Force sedangkan contoh metoda kelas tanpa backup adalah metoda recursive
descent.
1. Metoda Brute-Force
Kelas metoda dengan backup termasuk metoda Brute-Force adalah kelas
metoda parsing yang menggunakan produksi alternatif, jika ada, ketika hasil
penggunaan sebuah produksi tidak sesuai dengan simbol input. Penggunaan
produksi sesuai dengan nomor urut produksi.
Contoh :
Diberikan grammar G = {S aAd|aB, A b|c, B ccd|ddc}. Gunakan
metoda Brute Force untuk melakukan analisis sintaks terhadap kalimat x = accd
Kelas metoda tanpa backup, termasuk metoda recursive descent, adalah kelas
metoda parsing yang tidak menggunakan produksi alternatif ketika hasil akibat
penggunaan sebuah produksi tidak sesuai dengan simbol input. Jika produksi A
mempunyai dua buah ruas kanan atau lebih maka produksi yang dipilih untuk
digunakan adalah produksi dengan simbol pertama ruas kanannya sama dengan
input yang sedang dibaca. Jika tidak ada produksi yang demikian maka dikatakan
bahwa parsing tidak dapat dilakukan.
Ketentuan produksi yang digunakan metoda recursive descent adalah : Jika
terdapat dua atau lebih produksi dengan ruas kiri yang sama maka karakter
pertama dari semua ruas kanan produksi tersebut tidak boleh sama. Ketentuan ini
tidak melarang adanya produksi yang bersifat rekursi kiri.
Contoh :
Diketahui grammar G = {S aBA, A a, B bd}. Gunakan
metoda recursive descent untuk melakukan analisis sintaks terhadap kalimat x
= ac.
BAB III
PENUTUP
Demikian Makalah Grammar LL1 ini kami susun. Tentu banyak kekurangan dan
kelemahan kerena terbatasnya pengetahuan dan kurangnya rujukan atau referensi yang kami
peroleh hubungannya dengan makalah ini.
Penulis banyak berharap kepada para pembaca yang budiman memberikan kritik
saran yang membangun kepada kami demi sempurnanya makalah ini. Semoga makalah ini
dapat bermanfaat bagi penulis dan pembaca pada khususnya.
Penulis