PENDAHULUAN
Istilah Compiler muncul karena dulu ada program yang menggunakan subrutin-
subrutin atau pustaka-pustaka untuk keperluan yang sangat khusus yang
dikumpulkan menjadi satu sehingga diistilahkan compiled.
Belajar bahasa program hanya belajar tentang sintak (aturan) dari bahasa
sedangkan belajar memprogram akan tercakup beberapa hal yang didalamnya
terkandung tentang belajar bahasa program itu sendiri.
1.3 Tujuan
Tujuan dalam penulisan makalah ini adalah untuk mengetahui analisis sintaks
secara meluas agar dapat membantu mahasiswa dalam pembuatan sebuah
program dengan menggunakan bahasa pemograman.
BAB II
PEMBAHASAN
CFG (Context Free Grammar) atau Bahasa bebas konteks adalah sebuah
tata bahasa dimana tidak terdapat pembatasan pada hasil produksinya, contoh pada
aturan produksi :
ab
batasannya hanyalah ruas kiri (a) adalah sebuah simbol variabel. Sedangkan
contoh aturan produksi yang termasuk CFG adalah :
B CdeFg
D BcDe
Sebuah tata bahasa bebas konteks adalah suatu cara yang menunjukkan
bagaimana menghasilkan untai-untai dalam sebuah bahasa. Bahasa bebas konteks
menjadi dasar dalam pembentukan suatu parser/proses analisis sintaktik. Bagian
sintaks dalam suatu kompilator kebanyakan didefinisikan dalam tata bahasa bebas
konteks.
2.4 Pohon Sintaks
Sebuah pohon (tree) adalah suatu graph terhubung tidak sirkuler, yang
memiliki satu simpul (node)/vortex yang disebut akar (root) dan dari situ memiliki
lintasan ke setiap simpul.
Misalkan sebuah tata bahasa bebas konteks memiliki aturan produksi sebagai
berikut:
S aB | bA
A a | aS | bAA
B b | bS | aBB
a B
a B B
a B B b S
b b S b A
a B a
Proses penurunan atau parsing bisa dilakukan dengan cara sebagai berikut :
1 Penurunan Terkiri (leftmost derivation) : simbol variabel yang paling kiri
yang diturunkan terlebih dahulu.
2 Penurunan Terkanan (rightmost derivation) : simbol variabel yang paling
kanan yang diturunkan terlebih dahulu.
Contoh :
S aAS | a
A SbA | ba
Penurunan kiri : S => aAS => aSbAS => aabAS => aabbaS => aabbaa
Penurunan kanan : S => aAS => aAa => aSbAa => aSbbaa => aabbaa
Dengan demikian, sebuah tantangan yang penting dari tahap analysis syntax ini
adalah untuk mendeteksi kesalahn syntax. Bagaimanapun tidak seorangpun
menyukai compiler yang berhenti setelah pendeteksian kesalahan pertama karena
mungkin masih banyak kesalahan yang ada. Jika semua atau sebagian besar
kesalahan dapat dilaporkan ke pengguna dalam satu waktu, pengguna dapat
memeriksanya dan mengiririm kembali untuk dikompilasi. Laporan suatu kesalahan
pada suatu waktu dibutuhkan iterasi dalam jumlah yang besar. Tetapi, pada
sebagian besar bentuk, adanya kesalahan pada aliran input menjadi ujung dari
sebuah parser untuk sebuah keadaan erroneous, dari sini tidak dapat melakukan
pemmrosesan lebih jauh sebelum pekerjaan ini dibatalkan. Caranya terlibat dalam
pemrosesan Strategi ini melibatkan proses pengetahuan secara luas sebagai
error-recovery strategies.
Yang membedakan dari strategi recovery, disebutkan dengan baik sebagai berikut:
1. Panic mode
2. Phrase level
3. Error production
4. Global correction
Dalam bentuk ini, parser membuat koreksi local dari input untuk mendeteksi
kesalahan. Jadi, hasil keluaran input memberikan susunan bahasa yang baik.
Sebagai contoh dalam kategori ini termasuk mengganti koma dengan
semicolon, menyelipkan karakter yang hilang, dst. Bagaimanapun juga,
menyelipkan karakter baru dapat terselesaikan dengan baik sehimgga
kesalahan yang asing tidak dikenali dan juga penguraian algoritma dapat
diproses tanpa masalah.
3. Error production.
Meliputi modifikasi pada susunan bahasa yang mengandung keadaan error.
Dalam bentuk ini , compiler mendesain sebuah ide yang sangat baik tentang
tipe error yang mungkin terjadi sehingga dia dapat memodifikasi susunan
bahasa yang tidak sesuai. Adanya kesalahan input program disini, error
production akan membuat penambahan sehingga tercipta kesesuaaian pada
susunan bahasa yang baru. Global correction. Ini merupakan bentuk yang
hampir mendekati bentuk teoritikal. Masalahnya, disini dapat menjadi sebuah
keadaan yang mengikuti :
Memberikan aliran input x yang tidak benar pada sebuah grammar G,
menemukan aliran input lain berupa y yang bisa diterima oleh G, sehingga
jumlah token yang menjadi berubah untuk diganti dari x ke y adalah
minimum.
Untuk mendekati keadaan yang digambarkan diatas membutuhkan
biaya yang sangat mahal, dan untuk membuat program melalui cara error
recovery mungkin tidak menjadi apa yang dpikirkan programmer pada
awalnya.
Sebelum lanjut ke pembahasan berikutnya pada parser, kita
membutuhkan pengetahuan konsep yang sedikit mendasar dan cara
penulisan yang digunakan untuk menggambarkan grammar (susunan
bahasa).
Top-Down
Penelusuran dari root ke leaf atau dari simbol awal ke simbol terminal,
metode ini meliputi :
Backtrack/backup : Brute Force
No Backtrack : Recursive Descent Parser
Bottom-Up
Metode ini melakukan penelusuran dari leaf ke root
Contoh :
S aABe
A Abc | b
Bd
a A d a A d
b
Terjadi kegagalan (iii), dilakukan backtrack
(iv) S (v) S (vi) S
a A d a B a B
c c c d
Terjadi kegagalan lagi (v), dilakukan backtrack
Mencoba untuk semua aturan produksi yang ada sehingga waktu eksekusi
menjadi lambat
Mengalami kesukaran untuk melakukan pembetulan kesalahan
Banyak memakan memori, karena membuat backup lokasi backtrack
Grammar yang memiliki rekursif kiri, tidak bisa diperiksa karena akan
memngalami loop yang terus menerus. Sehingga rekursif kiri harus diubah
terlebih dahulu.
Kalaupun tidak mungkin menghilangkan rekursif kiri dalam penyusunan
aturan produksi maka produksi rekursif kiri diletakkan pada bagian belakang
atau terkanan, hal ini untuk menghindari looping pada awal proses parsing.
Metode ini digunakan untuk aturan produksi yang memiliki alternatif yang
sedikit.
PENUTUP
3.1 Kesimpulan
Analisis Sintaks adalah bagian kedua dari compiler yang bertugas memeriksa
kebenaran dan urutan dari token-token yang terbentuk oleh analisis leksikal. Dalam
tahap ini karakter atau token yang diperoleh pada analisis leksikal disusun dan
dikelompokkan dalam suatu hirarki tertentu yang secara keseluruhan mempunyai
arti tertentu.
https://www.scribd.com/doc/189972713/Teknik-Kompilasi