Aris Permana – 30108333

Aris Permana – 30108333

Aris Permana – 30108333

Aris Permana – 30108333
Aris Permana – 30108333

Berdasarkan  rancangan  bahasa  di  atas,  perhatikan  hal-hal  berikut.  Kita  tidak  bisa mengganti  kata  Budi dengan  2udi sebagaimana  kita  tidak  bisa  mengganti  token  start dengan  ?tart.  Kita  juga  tidak  bisa  merubah  susunan  kata-kata  menjadi  Budi  sebuah menendang bola sebagaimana kita tidak boleh merubah susunan token-token menjadi 9.0 if

<  a2  then  b2:=  a2.  Demikian  pula  kita  tidak  boleh  mengganti  kata  Budi dengan  lemari

sebagaimana kita tidak boleh mengganti B[i]*sin(i*pi/16.0) dengan B*sin(i*pi/16.0).

Dalam spesifikasi leksikal biasanya digunakan grammar regular (GR) dalam bentuk ekspresi  regular (ER).  Sebagai  contoh  pola  token  identifier ditentukan  oleh  grammar regular berikut :

aA½bA½…½zA½a½b½…½z, A®aA½bA½…½zA½0A½1A½…½9A½a½b½…½z½0½1½…½9

yang ekuivalen dengan ekspresi regular berikut :

I = (a½b½…½z)( a½b½…½z½0½1½…½9)* = huruf(huruf½angka)*

Dalam spesifikasi sintaks biasanya digunakan context free grammar (CFG). Sebagai contoh ekspresi if-then E adalah :

E ® ithen, L ® IOA, I = huruf(huruf½angka)*, O ® <½=½>½<=½>=, A® 0½1½…½9.

2.2.    Analisa Leksikal (Scanner)

Dalam kaitan ini aliran karakter yang membentuk program sumber dibaca dari kiri ke kanan dan dikelompokkan dalam apa yang disebut token yaitu barisan dari karakter yang dalam       suatu    kesatuan             mempunyai           suatu              arti       tersendiri.             Analisa    ini    melakukan penerjemahan  masukan  menjadi  bentuk  yang  lebih  berguna  untuk  tahap-tahap  kompilasi berikutnya.

Analisa  Leksikal  merupakan  antarmuka  antara  kode  program  sumber  dan  analisa sintaktik   (parser).   Scanner   melakukan   pemeriksaan   karakter   per   karakter   pada   teks masukan,   memecah   sumber   program   menjadi   bagian-bagian   disebut   Token.   Analisa Leksikal mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen pokok: identifier,   delimeter,  simbol-simbol          operator,

angka,                keyword,           noise         word,    blank, komentar,  dan seterusnya  menghasilkan suatu Token Leksikal yang akan digunakan pada Analisa  Sintaktik.  Model  dasar  untuk  membentuk  suatu  Analisa  Leksikal  adalah  Finite- State Automata.

Aris Permana – 30108333 2

Dua aspek penting pembuatan Analisa Leksikal adalah :

–  Menentukan token-token bahasa.

–  Mengenali token-token bahasa dari program sumber.

Token-token   dihasilkan    dengan   cara   memisahkan    program   sumber    tersebut dilewatkan  ke parser. Analisa Leksikal harus mengirim token  ke parser. Untuk mengirim token,  scanner  harus  mengisolasi  barisan  karakter  pada  teks  sumber  yang  merupakan  1 token  valid.  Scanner  juga  menyingkirkan  informasi  seperti  komentar,  blank,  batas-batas baris  dan  lain-lain  yang  tidak  penting  (tidak  mempunyai  arti)  bagi  parsing  dan  Code Generator.

Scanner juga harus dapat mengidentifikasi token secara lengkap dan membedakan keyword dan identifier. Untuk itu scanner memerlukan tabel simbol. Scanner memasukkan identifier  ke  tabel  simbol,  memasukkan  konstanta  literal  dan  numerik  ke  tabel  simbol sendiri setelah konversi menjadi bentuk internal.

Analisa Leksikal merupakan komponen kompilasi independen yang berkomunikasi dengan         parser               lewat    antarmuka                yang    terdefinisi    bagus    dan   sederhana    sehingga pemeliharaan analisa leksikal menjadi lebih mudah dimana perubahan-perubahan terhadap analisa  leksikal  tidak  berdampak  pada  pengubahan  kompilator  secara  keseluruhan.  Agar dapat memperoleh fitur ini, maka antarmuka harus tidak berubah. Kebanyakan kode yang menyusun analisa leksikal adalah sama untuk seluruh kompilator, tidak peduli bahasa.

Pada analisa leksikal yang dituntun tabel (table-driven lexical analyzer), maka satu- satunya yang berubah adalah tabel itu sendiri. Kadang diperlukan interaksi analisa leksikal dan   analisa   sintaktik   yang   lebih   kompleks.   Sehingga   analisa   leksikal   harus   dapat menganggap  string  sebagai  token  bertipe,  bukan  identifier.  Untuk  itu  perlu  komunikasi tingkat  lebih  tinggi  yang  biasanya  dilakukan  suatu  struktur  data  dipakai  bersama  seperti tabel simbol.

Analisa  Sintaktik  dapat  memasukkan   string  ke  tabel  simbol,   mengidentifikasi sebagai Type atau typedef, sehingga analisa leksikal dapat memeriksa tabel simbol untuk menentukan apakah lexeme adalah tipe token atau identifier.

Baca Juga :