Bagian-bagian
Compiler:
a.Lexical Analiysis (scanner),
Lexical Analysis sering disebut Scanner bertugas untuk mendekomposisi
program sumber menjadi bagian-bagian kecil. Tugasnya secara detail adalah
mengindentifikasi semua besaran yang membangun suatu bahasa;
mentransformasikan, dan menentukan jenis token; menangani kesalahan dan tabel
simbol. Contoh besaran Leksikal :
1.Identifier, dapat
berupa keyword atau nama kunci, seperti IF.. ELSE, BEGIN..END (pada
Pascal), INTEGER (pascal), INT,FLOAT (bahasa C).
2.Konstanta, terdiri dari besaran
yang merupakan bilangan bulat (integer), bilangan pecahan (float/Real), boolean
(true/false), karakter, string, dan sebagainya.
3.Operator, terdiri dari operator
aritematika ( + - * /), operator logika ( < = > ).
4.Delimiter, berguna sebagai
pemisah/pembatas, seperti kurung buka, kurung tutup, titik, koma,titik dua,
titik-koma
5.White Space, pemisah yang
diabaikan oleh program seperti : enter, spasi, ganti baris, akhir file.
b.Syntax Analysis, bertugas memeriksa
kebenaran urutan dari token-token yang terbentuk oleh lexical analysis. Syntax
Analysis sering disebut Parser, sedangkan proses pen-deteksian-nya
(pengenalan token) disebut dengan parsing. Pengelompokan token-token kedalam
class syntax (bentuk syntax), seperti procedure,
Statement,dan expression.
c.Semantics Analyser, proses ini adalah
proses kelanjutan dari proses kompilasi sebelumnya, yaitu analisa leksikal
(scanning) dan analisa sintaks (parsing).Parser hanya akan mengenali
simbol-simbol '=', '+' dan '*', parser tidak mengetahui makna dari
simbol-simbol tersebut, untuk mengenali simbol-simbol tersebut Compiler
menggunakan Analysis Semantics. Pemeriksaan biasa dilakukan pada
tabel indentifier, tabel display,dan tabel block.
d.Intermediate Code, bertujuan untuk
memperkecil usaha dalam membuat compilator dari sejumlah bahasa ke sejumlah
mesin.
e.Code Optimization, bertujuan untuk
mengoptimalkan code, terdiri dari:
1.Dependensi Optimasi, bertujuan untuk
menghasilkan kode program yang berukuran lebih kecil dan cepat.
2.Optimasi Lokal, adalah optimasi yang
dilakukan hanya pada suatu blok dari source code.
3.Optimasi Global, biasanya dilakukan
dengan suatu graph terarah yang menunjukkan jalur yang mungkin selama ekskusi
programa.
f.Table Management,memiliki dua fungsi
penting yaitu :
(1)
membantu pemeriksaan kebenaran semantik dari program sumber,
(2)
membantu dan mempermudah dalam pembuatan intermediate code dan proses
pembangkitan kode. Ada beberapa jenis Tabel Informasi:
1.Tabel identifier, berfungsi
menampung semua identifier yang terdapat dalam program.
2.Tabel Array, berfungsi menampung
informasi tambahan untuk sebuah array.
3.Tabel blok, mencatat
variabel-variabel yang ada pada blok yang sama.
4.Tabel Real, menyimpan elemen tabel
bernilai real.
5.Tabel string,menyimpan informasi
string.
6.Tabel display, mencatat blok yang
aktif.
g.Error Handling, yaitu kesalahan
program dalam proses penerjemahan pada Compiler. Kesalahan program dapat berupa
:
1.Kesalahan
Leksikal karena kesalahan dalam mengetik/mengeja.
2.Kesalahan
Sintaks karena kesalahan rumus, misalnya dalam operasi aritematika dengan tanda
kurung yang jumlahnya kurang.
3.Kesalahan
Semantic karena tipe data yang salah atau variabel yang belum didefinisikan.

sangat bermanfaat
BalasHapus