Langsung ke konten utama

Compatibiliy Mode

Buku Referensi Teknik Kompilasi

1.    Firrar Utdirartatmo, Teknik Kompilasi,Graha Ilmu, 2005

2.    Jean Paul Tremblay & Paul G Sorenson, The Theory and Practice of Compiler Writing, McGraw Hill, 1985

Isi Materi 1 :

q  Pengertian Teknik Kompilasi

q  Manfaat Teknik Kompilasi

q  Compiler

q  Interpreter

q  Tahapan Teknik Kompilasi

Pengertian Teknik Kompilasi

Teknik :

Metode atau Cara Kompilasi:

Proses menggabungkan serta menterjermahkan sesuatu (source program) menjadi bentuk lain Teknik kompilasi dapat diartikan metode proses menggabungkan serta menteremahkan sesuatu (source program) menjadi bentuk lain

Manfaat Teknik Kompilasi :

q  Membuat compiler

q  Membuat interpreter

Compiler adalah suatu program yang menerjemahkan bahasa program ( source code) kedalam bahasa objek (obyek code). Compiler menggabungkan keseluruhan bahasa program, mengumpulkannya dan kemudian menyusunnya kembali.

Complier memerlukan waktu untuk membuat suatu program dapat di eksekusi oleh computer, program yang dieksekusi oleh compiler adalah dapat berjalan lebih cepat disbanding program yang diperoduksi oleh interpreter, disamping itu juga bersifat independen. Contoh program yang menggunakan compiler adalah Visual Basic, Borland Delphi.

Proses compiler



Interpreter adalah Perangkat lunak yang mampu mengeksekusi code program (yang ditulis oleh programmer) lalu menterjemahkannya ke dalam bahasa mesin, sehingga mesin melakukan instruksi yang diminta oleh programmer tersebut. Perintah-perintah yang dibuat oleh programmer tersebut dieksekusi baris demi baris, sambil

mengikuti logika yang terdapat di dalam kode tersebut. Proses ini sangat berbeda dengan compiler, dimana pada compiler, hasilnya sudah langsung berupa satu kesatuan perintah dalam bentuk bahasa mesin, dimana proses penterjemahan dilaksanakan sebelum program tersebut dieksekusi.

Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi

Java bytecodes dapat dijalankan pada platform yang berbeda-beda. Proses Interpreter





Tahapan Teknik Kompilasi :




xampp-win32-1.8.0.

 

Analisis leksikal merupakan bagian dari kompilasi yang menerima input berupa aliran karakter kemudian memilah program sumber menjadi besaran leksikal yang disebut dengan token. Token ini akan menjadi input bagi parser.

Scanner merupakan antarmuka antara program sumber dan analisa sintaks(parser).

Scanner melakukan pemeriksaan karakter per karakter dari teks masukan,memecah program sumber menjadi bagian-bagian terkecil yang disebut dengan token. Token adalah satuan terkecil dari bahasa sumber yaitu deretan karakter terpendek yang mengandung arti.

Token dapat dikelompokan menjadi beberapa jenis sebagai berikut

 

1.  variabel

2.  Konstanta

3.  Keyword

4.  Operator

5.  Delimiter

Untuk memahami proses analisis leksikal akan diberikan beberapa contoh sebagai berikut :

1.      Diketahui sumber teks  adalah 2x+5

Isi teks terdiri dari token konstanta dan variabel Tahap pertama proses analisis leksikal :

1.  Pembacaan sumber teks dengan merunut karakter demi karakter.


Dengan kode program php berikut, dapat membaca isi karakter teks.

<?php

print"<p style=\"margin-top:100px\">"; print "<div align=\"center\">";

print "<font size=\"6\">Program Analisis Leksikal</font>"; print"<br>";

print"<br>";

print "<form action=\"leksikal.php\" method=\"post\" name=\"input\">";

print "<font size=\"6\">Isi teks</font><input type=\"text\" name=\"teks\" size=\"40\" style=\"height:40px;font-size:30px\" >";

print"<br>"; print"<br>";

print "<input type=\"submit\" name=\"proses\" value=\"Proses\" style=\"height:40px;font- size:20px\" >";

print"<br>"; print"</form>"; if ($_POST)

{

$x=$_POST["teks"];

$kode=0; for($i=0;$i<strlen($x);$i++)

{

$y=substr($x,$i,1); print "<h2>$y</h2>";

}

}

?>

Simpan kode program dengan nama file leksikal.php. Screen shoot input program tersebut :



Sedangkan screen shoot output program :


 




Tahap kedua dari analisis leksikal

2.   Mengelompokan karakter-karakter tersebut menjadi bentuk token dan mengidentifikasi token tersebut

Dengan kode program php berikut, dapat mengelompokkan karakter karakter-karakter tersebut menjadi bentuk token dan mengidentifikasi token tersebut.variabel dan konstanta.

<?php

print"<p style=\"margin-top:100px\">"; print "<div align=\"center\">";

print "<font size=\"6\">Program Analisis Leksikal</font>"; print"<br>";

print"<br>";

print "<form action=\"leksikal2.php\" method=\"post\" name=\"input\">";

print "<font size=\"6\">Isi teks&nbsp&nbsp</font><input type=\"text\" name=\"teks\" size=\"40\" style=\"height:40px;font-size:30px\" >";

print"<br>"; print"<br>";

print "<input type=\"submit\" name=\"proses\" value=\"Proses\" style=\"height:40px;font- size:30px\" >";

print"<br>"; print"</form>";

 

if ($_POST)

{

$x=$_POST["teks"];

$kata='';

$m=0; for($i=0;$i<=strlen($x);$i++)

{

$karakter=substr($x,$i,1); if(ord($karakter)<>32)


{

 

 

if (((ord($karakter)>=65) and (ord($karakter)<=90)) or ((ord($karakter)>=97) and (ord($karakter)<=122))or

((ord($karakter)>=48) and (ord($karakter)<=57)))

$kata=$kata.substr($x,$i,1);

else

if((substr($x,$i,1)=='+') or (substr($x,$i,1)=='*'))

{

 

 

if ($kata<>'')

{

$kode=0;

$kode2=0;

 

 

for($j=0;$j<strlen($kata);$j++)

{

$karakter=substr($kata,$j,1);

if ((ord($karakter)>=48) and (ord($karakter)<=57))

 

 

$kode=$kode+1; else

$kode2=$kode2+1;

}

if (($kode>=1) and ($kode2==0))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='konstanta';

$kata='';

}

 

 

if (($kode2>=1) and ($kode==0))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='variabel';

$kata='';

}


if (($kode2>=1) and ($kode>=1))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='tidak dikenal';

 

 

$kata='';

}

 

 

}

$m=$m+1;

$nt[$m]=substr($x,$i,1);

$jt[$m]='operator';

 

 

}

else

{

 

 

if ($kata<>'')

{

$kode=0;

$kode2=0;

 

 

for($j=0;$j<strlen($kata);$j++)

{

$karakter=substr($kata,$j,1);

if ((ord($karakter)>=48) and (ord($karakter)<=57))

 

 

$kode=$kode+1; else

$kode2=$kode2+1;

}

if (($kode>=1) and ($kode2==0))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='konstanta';

$kata='';

}


if (($kode2>=1) and ($kode==0))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='variabel';

$kata='';

}

if (($kode2>=1) and ($kode>=1))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='tidak dikenal';

 

 

$kata='';

}

 

 

}

if (ord(substr($x,$i,1))<>32)

{

$m=$m+1;

$nt[$m]=substr($x,$i,1);

$jt[$m]='tidak dikenal';

}

 

 

}

 

 

}

else

{

if ($kata<>'')

{

$tanda=0;

$tanda2=0;

for($i=0;$i<strlen($kata);$i++)

{

$karakter=substr($x,$i,1);

if ((ord($karakter)>=48) and (ord($karakter)<=57))

{


$kode=1;

$tanda=$tanda+1;

}

else

{

$kode=0;

$tanda2=$tanda2+1;

}

}

if (($kode==1) and ($tanda==0))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='konstanta';

$kata='';

}

else

if (($kode==0) and ($tanda2==0))

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='variabel';

$kata='';

}

else

{

$m=$m+1;

$nt[$m]=$kata;

$jt[$m]='tidak dikenal';

$kata='';

}

 

 

}

}

 

 

}

print "<h1>Daftar Token</h1>";

print "<table border=\"1\" width=\"800\">";


print "<tr><td width=\"70\"><h1>Nomor</h1></td><td><h1>Nama Token</h1></td><td><h1>Jenis Token</h1></td></tr>"; for($k=1;$k<=$m;$k++)

if ($nt[$k]<>'')

print "<tr align=\"center\"><td width=\"70\"><h1>$k</h1></td><td><h1>$nt[$k]</h1></td><td><h1>$jt[$k]</h1></td></tr>"; print"</table>";

}

?>

Simpan kode program dengan nama file leksikal2.php. Screen shoot input program tersebut :

Sedangkan screen shoot output program :


 

Program dapat juga mengidentifikasi bila ada token yang tidak dikenal. Contoh diketahui isi teks 2x+5. Maka 2x adalah token yang tidak dikenal Screen shoot input program :


 

Sedangkan screen shoot output :


 

Program dapat juga mengidntifikasi jika karakter konstanta lebih dari atau karakter variabel lebih dari 1

Input dan output masing-masing kasus dapat ditampilkan di bawah : Screen Shoot Input :


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Screen Shoot Output :


 

Screen Shoot Input


 

Screen Shoot Output :


 

 

 

 

 

 

Screen Shoot Input :


 

Screen Shoot Output :


Komentar

Postingan populer dari blog ini

Jelajahi layanan data relasional di Azure

  Perkenalan Selesai Database adalah kumpulan data. Database bisa sesederhana spreadsheet desktop, atau serumit sistem global yang memegang petabyte informasi yang sangat terstruktur. Data dapat disusun dengan berbagai cara. Pendekatan umum adalah menyimpan data dalam format tabular, dengan baris dan kolom. Anda dapat menentukan hubungan antara tabel. Database ini disebut database  relasional. Database juga dapat semi-terstruktur atau tidak terstruktur, yang terdiri dari data semi-diproses atau tidak diproses. Database ini biasanya disebut sebagai  non-relasional.  Database dikelola menggunakan sistem manajemen database (DBMS). DBMS menangani aspek fisik dari database, seperti di mana dan bagaimana disimpan, siapa yang dapat mengaksesnya, dan bagaimana memastikan bahwa itu tersedia bila diperlukan. Banyak organisasi bergantung pada informasi yang tersimpan dalam database mereka untuk membantu membuat keputusan bisnis yang penting. Di masa lalu, organisasi-organisasi ...

Mengkueri data relasional di Azure

  Pengantar Dengan Azure, Anda bisa membuat database relasional menggunakan sejumlah teknologi, termasuk Azure SQL Database, Azure Database for PostgreSQL, Azure Database for MySQL, dan Azure Database for MariaDB. Bayangkan bahwa Anda bekerja sebagai pengembang untuk jaringan supermarket besar yang bernama Contoso. Perusahaan telah membuat penyimpanan data yang akan digunakan untuk menyimpan inventaris produk. Tim pengembangan telah menggunakan database Azure SQL untuk menyimpan datanya. Mereka perlu tahu cara mengkueri dan memanipulasi data ini menggunakan SQL. Dalam modul ini, Anda akan mempelajari cara menggunakan layanan database ini untuk menyimpan dan mengambil data. Anda akan memahami cara menggunakan beberapa alat umum yang tersedia untuk sistem manajemen database ini untuk menyambungkan ke layanan database yang dijalankan di Azure. Pengantar SQL Selesai SQL adalah singkatan dari Structured Query Language. SQL digunakan untuk berkomunikasi dengan database relasional. Ini ad...

Jelaskan konsep data relasional

Perkenalan Selesai Pada tahun-tahun awal database, setiap aplikasi menyimpan data dalam struktur uniknya sendiri. Ketika pengembang ingin membangun aplikasi untuk menggunakan data itu, mereka harus tahu banyak tentang struktur data tertentu untuk menemukan data yang mereka butuhkan. Struktur data ini tidak efisien, sulit dipertahankan, dan sulit dioptimalkan untuk memberikan kinerja aplikasi yang baik. Model database relasional dirancang untuk memecahkan masalah beberapa struktur data sewenang-wenang. Model relasional menyediakan cara standar untuk mewakili dan query data yang dapat digunakan oleh aplikasi apapun. Sejak awal, pengembang mengakui bahwa kekuatan utama dari model database relasional adalah dalam penggunaan tabel, yang merupakan cara intuitif, efisien, dan fleksibel untuk menyimpan dan mengakses informasi terstruktur. Model relasional sederhana namun kuat digunakan oleh organisasi dari semua jenis dan ukuran untuk berbagai kebutuhan manajemen informasi. Database relasional...