Tampilkan postingan dengan label teknik kompiler. Tampilkan semua postingan
Tampilkan postingan dengan label teknik kompiler. Tampilkan semua postingan

free pascal dalam kompiler

Perkenalan
Free Pascal adalah sebuah kompiler gratis untuk bahasa berbasis Pascal,secara semantik persis dan kompatibel dengan Borland Turbo Pascal 7, keluaran terakhir dari Turbo Pascal yang legendaris . Muncul dengan beberapa kekeuatan dan sebuah kombinasi antara TP7 yang ortodok dengan Object Pascal dari Delphi. Sekarang, Team pengembang dari Free Pascal bekerja keras untuk membuat kompiler yang lebih baik lagi untuk penggunaan lintas platform. Anda bisa download paket instalasi semua jenis platform pada [1]. Komunitas Free Pascal akan selalu terbuka terhadap anggota baru untuk membantu mengembangkan kompiler hebat ini lebih luas.
Kebutuhan Minimal

Free Pascal bisa dijalankan minimal pada prosessor 386 pada intel 80x86.Tetapi saya lebih menyarankan untuk menggunakan processor seperti 486 keatas. Menggunakan prosessor AMD bukanlah masalah. Free Pascal berjalan sangat cepat dan mulus saat melakukan compiling untuk kedua jenis type processor tersebut.Free pascal bahkan bisa berjalan pada prosessorn Motorola. Paling tidak Anda mesti memiliki Motorola 680x0 atau 68020 untuk membuat kompiler ini berkerja. Pada seluruh platform, Saya sarankan minimal RAM 8 Megabytes , walaupun dengan 4 Megabytes kompiler ini bisa bekerja. Untuk tempat pada disk Anda membutuhkan sekitar 25 Megabyte minimal. Kompiler ini tersedia untuk berbagai macam platform system operation. Dari berita terakhir bahwasanya sekarang telah tersedia untuk sparc, AMD 64, dan akhirnya untuk arm/linux. Jika Anda tertarik untuk mengetahui berapa banyak jenis platform system dimana Free Pascal di porting , Anda bisa ke halaman download pada [1].TDisana Anda akan temukan paket untuk Linux, Win32, Amiga, Dos, QNX,Solaris, BeOS, NetBSD,FreeBSD, dan OS2.

Kenapa Pascal ,..Mengapa Free Pascal ?

Pada Linux, sebagian besar orang sepertinya harus belajar menggunakan bahasa C, dikarenakan kernel linux ditulis menggunakan C lalu banyak pengguna Linux merasa sebaiknya menggunakan C sebagai bahasa pemrograman meraka. Jadi mengapa kamu harus belajar Pascal ? Saya sudah terlibat dengan C. Tetapi sangat banyak cara yang sempurna untuk menulis kode pada Pascal. Penulisan kode yang sangat bersih. Bekerja sangat cepat, tidak membutuhkan file make apapun sangat terstruktur, kamu akan tahu dengan cepat mana sebuah blok kode, mana sebuah procedure, atau sebuah function. Kompiler bekerja sangat cepat,..walaupun Anda melakukan compile sebuah program yang besar. Satu hal yang sangat saya kagumi adalah integrasinya yang hebat dengan assembler. Beberapa tahun sebelum sekarang, Pascal mempunyai cerita indah tentang membuat kode assembler menjadi mudah dibaca dan dipahami.Untuk kompatibilitas untuk Linux, FPC mempunyai fitur yang bagus, sekali Anda menuliskan sebuah program menggunakan kompiler FPC untuk Linux, maka hasilnya akan bisa Anda jalankan diberbagai mesin atau distro Linux. Ini sangat keren!! Sejak "distribution independent" adalah hal terberat untuk dipecahkan dalam Linux.Lebih jauh lagi, FPC sangat kompatibel dengan syntax Pascal jenis apa saja. Seperti TP7, GnuPascal, bahkan dengan Delphi dan Kylix. Anda bisa menggunakan kode yang Anda buat menggunakan kompiler-kompiler tersebut lalu FPC akan memberimu kode Pascal baru beraroma FPC. Dan keunggulan terakhir , yang sangat penting dan menyenangkan adalah FPC mendukung OOP, seperti halnya Delphi dan Kylix. Bagi Anda yang sudah terlanjur terlibat dengan Object Pascal, maka tidak akan ada perbedaan mencolok dengan FPC, apakah itu kode, syntax, atau dengan kehandalannya.

FPC juga datang dengan bonus yang mantap..misalnya sebuah IDE (Integrated Development Environment) yang sangat mirip dengan IDE-nya TP7. Dan disamping seluruh keuntungan tersebut, FPC tersedia dalam berbagai platform system yang berbeda-beda. Seperti Win32,Linux, BSD,Sparc , dll. Dan berbicara soal keunggulan FPC sepertinya tidak akan pernah cukup,..maka saya berikan Anda satu lagi kompiler ini juga bisa melakukan pemrograman database dan berhubungan dengan SQL-SQL server hebat seperti like MySQL dan PostgreSQL,bahkan Interbase. Untuk membuat antarmuka GUI (banyak orang masih sangat menggilai GUI) maka FPC bisa dipadukan dengan widget software seperti GTK, Tcl/Tk, dan ncurses. Jadi..mengapa Free Pascal...mengapa tidak ?!!

Langsung Ke Instalasi

Karena saya menulis artikel ini untuk majalah Linux gratis, maka saya akan mengarahkan panduan instalasi ini khusus ke lingkungan Linux. Anda butuh satu paket instalasi untuk linux x86. Langsung saja ambil paket rpm-nya dari halaman Download. Versi terakhir pada halaman tersebut adalah rilis beta 1.9.4 atau 2.0.0-Beta3. Paket instalasi ini dinamai unik, sebagai contoh fpc-1.0.10.i386.tar; Lalu Anda perlalu meng- un-tar file inie. Lakukan saja perintah berikut:
[root@yourlinuxbox /]tar xvf fpc-1.0.10.i386.tar
Perintah ini akan mengekstrak file-file berikut :

* binary.tar
* sources.tar
* docs.tar.gz
* demo.tar.gz
* install.sh



Untuk menginstall Free Pascal, ketikkan pada direktori fpc Anda sebagai root, :
[root@yourlinuxbox /]#sh install.sh
atau
[root@yourlinuxbox /]#./install.sh
Perintah ini akan menginstall fpc baru Anda ke direktori default, tapi pada proses ini Anda akan mendapatkan lumayan banyak pertanyaan tentang path dan lokasidari beberapa file. Proses ini akan berhasil sukses diakhiri dengan terlihatnya komentar berikut :

Writing sample configuration file to /etc/fpc.cfg
End of installation.
Refer to the documentation for more information.

Proses instalasi, akan membuat beberapa direktori baru yang akan berguna untuk memulai belajar nantinya... direktori itu antara lain :

* /usr/local/doc/fpc-1.0.10
* /usr/local/src/fpc-1.0.10
* /usr/local/lib/fpc
* /usr/bin/fpc
* /usr/local/bin/fpc



Sekarang Anda bisa menikmati menulis sebuah bahasa pemrograman tingkat tinggi yang sangat terstruktur dan sempurna!


Hello World

Selanjutnya, kita akan mencoba untuk membuat contoh kode yang terkenal yang disebut "Hello World". Untuk membuatnya , tidak membutuhkan waktu atau kode yang banyak , Anda hanya butuh untuk membuat sebuah file dengan extension pp atau pas. Jadi bukalah editor favorit Anda dan buatlah seperti ini :

begin
Writeln('Hello World From Pascal..!!');
End.

Simpan file ini dengan nama "hello.pas". Lalu kita beranjak ke proses kompilasi. Untuk mengkompilasi file ini, ketikkan perintah :

fpc test.pas

Untuk menjalankan hasil kompilasi tersebut (hebatnya, keluaran dari proses kompilasi adalah file binary !!). Dan karena gambar dapat menjelaskan segalanya, maka inilah proses kompilasi dan keluaran dari eksekusi file biner yang kita buat dari file hello.pas :

Dikarenakan keluaran dari proses kompilasi adalah file biner, berarti file ini bisa dijalankan langsung. Dan file ini bebas ketergantungan distribusi, Anda tidak perlu melakukan kompilasi pada berbagai mesin/jenis linux dimana Anda ingin program tersebut dijalankan. Bahkan pada platform system yang berbeda. Contoh diatas akan memberikan Anda hasil yang sama, walaupun Anda membuatnya pada Windows 98, tanpa merubah atau menambahkan kode apapun. Kecuali jika Anda mempunyai kode yang mengakses lingkungan system seperti menjalankan perintah system misalnya.

Penutup

Pada bidang Akademik maupun bisnis, menggunakan software gratis akan membuat orang berfikir bahwa itu keputusan yang buruk buat bisnis. Mereka berfikir bahwa software gratis membuat program hasilnya nanti akan lebih murah dibanding dengan menggunakan software yang komersil. Dalam banyak kasus, Saya pikir menggunakan alat-alat yang gratis, akan menurunkan ongkos pembuatan program. Kita tidak perlu untuk membayar lisensi macam-macam dari alat komersilcial dan hal itu yang akan membuat anggaran produksi kita berkembang lebih mahal. Untuk penggunaan multi fungsi, Free Pascal adalah sebuah "swiss army knife"..ya..saya pikir demikian. Anda bisa membuat alat-alat untuk linux lebih mudah dari sebelumnya karena FPC datang dengan berbagai jenis unit yang menjaga tangan kita bersih dari ribetnya kode yang mubazir.Ini pantas dicoba..percayalah pada saya.. Di masa depan , saya akan sering membuat seri pemrograman menggunakan kompiler hebat ini. Dan saya berharap sebagian besar dari Anda melakukan pemrograman bersih juga dengan kompiler yang bersih.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

merakit kompiler


Kompiler


Merakit kompiler itu tidak sulit, dan dengan semakin banyaknya perangkat pendukung, seharusnya malah menjadi semakin mudah. Halaman ini terutama akan berisi informasi mengenai topik desain kompiler dan bahasa pemrograman, sambil dengan perlahan membuat sebuah contoh konkret bahasa pemrograman beserta kompiler/interpreter yang dapat memprosesnya.

Kompiler 1: Tutorial lex & yacc [PDF] menunjukkan bagaimana cara menggunakan perangkat bantu perakitan kompiler lex & yacc --sebenarnya lex & bison-- untuk merakit sebuah (jangan terlalu berharap) interpreter ekspresi aritmetik. Topik yang mendapat bahasan [sekilas] selain implementasi kompiler adalah metode parse LL(k) dan LR(k) dan pembuatan tabel simbol sederhana.

Perangkat

The Accent Compiler Compiler (Win32 Binary Distribution)

Accent adalah pembangkit parser Earley buatan F.W. Schröer, menerima sintaks spesifikasi BNF, seperti yacc/Bison. Berbeda dengan algoritma parse LR(1) yang digunakan yacc/Bison, algoritma Earley jauh lebih kuat dan fleksibel. CFG yang baru dapat diterima yacc/Bison bila dimodifikasi untuk menghindari konflik shift-reduce atau reduce-reduce, dapat diterima Accent tanpa perubahan apapun. Accent juga menerima sintaks spesifikasi EBNF.

Telah dicoba dengan kompiler Borland C++, DJGPP dan MinGW-GCC.

  • File biner (Borland C++) [ZIP]
  • Original source code (v2006) + Bakefile + Makefile GCC & Borland C++ [ZIP]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

compiler construction

Compiler Construction
Teknik kompilasi telah lama diberikan di lingkungan pendidikan tinggi bidang komputer di Indonesia. Pembahasan dalam mata kuliah ini biasanya berkisar pada teori automata, teori kompilasi, teori grammar. Praktek teknik kompilasi pun telah diberikan di lingkungan laboratorium, walau biasanya masih terbatas pada demonstrasi hal teori, ataupun sekedar pengenalan kompiler yang ada atau banyak digunakan. Beberapa universitas telah mulai memperkenalkan penggunaan perangkat pembangun kompiler.
Telah banyak mahasiswa menggunakan dan memanfaatkan compiler/interpreter, tapi saat ini masih belum banyak muncul nama programmer Indonesia yang terlibat dalam proyek pembuatan compiler/interpreter. Mungkin hanya KILANG nya Prof. Dali S Naga (BASIC Indonesia), yang sempat terdengar, sayang sekarang sudah tidak ada jejaknya. Mungkin merilis KILANG dalam bentuk GPL seperti BWBASIC, adalah suatu langkah menarik untuk terus mengembangkan KILANG ini lebih lanjut.
Memang ada sekelompok programmer Indonesia yang sempat akan merilis bahasa pemrograman "BATAK" tetapi hingga saat ini belum terdengar kembali. Bahasa pemrograman, JAVA, BALI, MADURA, hanyalah namanya saja yang berbau Indoensia, tapi sedikit atau malah tidak ada keterlibatan pengembang dari Indonesia.
Tentu saja akan timbul pertanyaan "apa yang salah dalam pengajaran kompilasi ???" (INGAT SAYA TIDAK INGIN MENDISKREDITKAN SIAPAPUN DALAM PERNYATAAN INI). Hanya mencoba mencari langkah perbaikan yang mungkin bisa diterapkan.
Walaupun sedikit sekali atau nyaris tidak ada "lowongan pekerjaan" yang membutuhkan kemampuan mengembangkan compiler ini (silahkan baca di koran ataupun majalah), bukan berarti pengetahuan itu sama sekali tak dibutuhkan dalam dunia pemrograman sehari-hari. Pada dasarnya pengetahuan pembuatan kompiler (compiler construction) ini merupakan pengetahuan dasar komputasi yang sangat baik sekali. Pengetahuan ini dimanfaatkan pada beragam aplikasi nantinya. Misal teknik parsing, pengenalan pola teks, optimasi kode dan lain sebagainya. Bahkan suatu database engine pun di bagian "front end" selalu menggunakan parsing ini. Pengetahuan tentang kompilasi akan dapat memberikan landasan bagi programmer untuk menyusun program yang efektif dan efisien.
Ketika seseorang melakukan pemrograman, sebetulnya secara tidak sadar dia akan melakukan proses penambahan suatu bahasa. Misal pembuatan suatu fungsi (ataupun prosedur) pada dasarnya merupakan suatu proses "penambahan kosa-kata" dari bahasa pemrograman tersebut. Dari yang tadinya tidak memiliki fungsi tersebut hingga akhirnya ditambahkan suatu "vocabulary" untuk melakukan suatu fungsi tersebut. Untuk itulah pemahaman penyusunan kompiler merupakan suatu dasar yang utama dalam bidang ilmu komputer.
Kesenjangan Teori dan Praktek
Pada kasus pemahaman teknik kompilasi seringkali mahasiswa memiliki gap antara pemahaman teori yang mendasari pembuatan kompiler, lalu masalah parsing, scanner (bukan scanner yang buat men-scan gambar atau photo) serta "bagaimana menulis compiler/interpreter sesungguhnya (misal BASIC interpreter).
Ketika bicara kompiler, rata-rata pengetahuan mahasiswa/lulusan bersifat umum yaitu "trampil" menggunakan Integrated Development Environment (IDE) berbasiskan GUI. Bahkan pengetahuan pemakaian "make", "autoconf", pun masih langka dipahami para mahasiswa (termasuk mahasiswa Univ Gunadarma). Sedangkan ketika mereka bicara teori, yang terjadi hanyalah "hafalan" teori-teori otomata, parsing, grammar. Keterkaitan antara keduanya masih belum terjalin dengan mesra.
Sebelum dianggap menyalahkan siapa-siapa termasuk menyalahkan mahasiswa (salah satu kambing hitam favorit para dosen), saya mencoba menguraikan permasalahan ini. Ketidak-tertarikan para mahasiswa mempelajari bidang pembuatan kompiler ini mungkin didasarkan pada pelajaran teknik pembuatan kompiler yang sarat dengan pemahaman teori (misal automata, grammar, bahasa formal, matematika diskrit dan sebagainya).
Teori bagi sebagian besar mahasiswa merupakan "momok" bagi para mahasiswa dan mereka kurang tertarik mempelajarinya, dianggap hanyalah pelengkap untuk lulus menjadi saja. Mahasiswa kurang betah atau sabar mendengar pelajaran teori. Mungkin hal ini disebabkan (sengaja saya gunakan kata "mungkin" karena belum pernah dilakukan survei atau penelitian secara khusus) beberapa hal antara lain :
Para mahasiswa Indonesia tidak tertarik teori, karena merasa tidak ada manfaatnya pelajaran teori tersebut. Tidak dipungkiri dunia komputer (lapangan pekerjaan) masih membutuhkan orang-orang dengan "skill praktis" sehingga kebutuhan teori ini tidak dirasakan ada. Jelas ini menunjukkan seberapa "jauh" yang namanya industri TI di Indonesia. TI di Indonesia secara umum barulah berkembang pada "menjual produk TI" ataupun konfigurasi dan perkembangan yang bersifat "kustomisasi luar".
Rasa ketertarikan terhadap teori ini makin hilang, akibat materi yang diberikan di kelas terlalu jauh dengan kondisi praktis. Artinya ada "gap" antara teori dengan aplikasi teori tersebut di dunia nyata dalam bayangan mahasiswa (misal bidang komputer) Sebagai contoh, mahasiswa komputer mungkin akan tertarik bila tahu bahwa Analisa numeris itu dimanfaatkan untuk membuat "computer game" Ketimbang kita memberikan contohnya untuk hal lainnya yang terlalu teori. Begitu juga bila kita terangkan Turing Machine, atau Automata tanpa keterkaitan dengan praktek sehari-hari akan membuat mereka hanya menghafal atau malah tidur di kelas.
Kurikulum ataupun materi pelajaran yang memang tidak memberikan jalinan antara teori dan praktek. Teori berjalan sendiri-sendiri dan praktek begitu pula. Teori tidak atau kurang mengajak melihat implementasi dari teori tersebut (misal source code nyata dari teori itu).
Perangkat bantu yang pada tahun sebelumnya sulit diperoleh di Indonesia secara massal dan murah. Perangkat bantu yang ada sangat menghabiskan waktu bila ingin digunakan untuk menyusun sistem kompiler sesungguhnya.
Kurang adanya pengajar yang memahami baik teori dan praktek 8-). Banyak pengajar yang sangat baik pengetahuan teorinya tetapi minim pengetahuan prakteknya. Hal ini melanda beberapa mata kuliah teori. Begitu juga banyak pengajar yang sudah terlalu asyik dengan praktek, malas membahas teori. Simulator Automata
Saat ini dengan ketersediaan beragam perangkat bantu bebas (GPL) maka proses mengajarkan teori ini dapat dilakukan secara lebih menarik. Misal untuk menerangkan tentang konsep mesin Turing yang abstrak itu, dapat juga digunakan suatu simulator. Memang mesin Turing dapat juga di"demonstrasikan" dengan menggunakan "tissue WC - tissue gulung" seperti dalam buku Computer Power and Human Reason karangan Joseph Weizenbaum. Tapi jelas akan lebih mudah bila digunakan program bantu yang memungkinkan siswa merancang "instruction set" dan menjalankan instruction set, dan program yg didisain untuk mesin "khayalannya" itu.
Ada juga simulator (program) yang akan menjalankan mesin Turing sesuai masukan yang diberikan pengguna. Misal dapat diperoleh di
http://www.csee.umbc.edu/~squire/cs451_sim.html#TM
Program ini tertulis dalam C++. Menerima masukan dari source kode. Sayangnya program ini tidak memberikan simulasi secara visual. Simulasi secara visual akan menarik siswa tahun ke 2-3 di Indonesia. Beberapa simulator yang memiliki tampilan visual dapat didownload dari Internet, antara lain:
Simulator Mesin Turing. Program ini memiki GUI berbasiskan Gtk.
http://www.nuclecu.unam.mx/~arturo/gTuring/.
Visual Turing. Suatu IDE yang memungkinkan pengguna mengedit, menjalankan mesin Turing. Dengan editor visual yang memberikan fungsi Cut, Copy&Paste maka akan membantu proses simulasi. Mesin dapat juga dijalankan dengan breakpoint, step by step dan variabel dapat diperiksa.
http://www.cheransoft.com/vturing/
Automaton Simulator. Program ini memungkinkan disimulasikan beberapa mesin teori termasuk deterministic finite automata, nondeterministic finite automata, deterministic push-down automata, Turing machines. Tertulis dalam bahasa JAVA.
http://www.users.csbsju.edu/~cburch/proj/autosim/
Simulator Prosesor
Di samping simulator mesin teori, seringkali dalam memahami proses kompilasi perlu penjelasan dari tingkat instruksi di level prosesor. Untuk itu penjelasan akan lebih mudah dilakukan bila memanfaatkan suatu simulator prosesor. Memang sebetulnya pengetahuan instruksion set design ataupun simulator ini diperoleh di Arsitektur Komputer. Akan tetapi simulator prosesor ini dapat juga dimanfaatkan untuk memberikan pemahaman teknik pembuatan dan ekseskusi suatu kompilasi. Sehingga tahapan "menjalankan kompiler, dan hasil kompilasi yang dibentuk dapat berupa" : Program aplikasi bahasa A

V
Kompiler/interpreter bahasa A

V
Bahasa mesin prosesor X

V
Simulator prosesor X

V
Sistem Operasi "Host" (misal Windows, Linux dll)
Dengan cara itu mahasiswa dapat mempelajari bagaimana proses kompilasi dilakukan dan bagaimana dijalankan pada mesin virtualnya. Sehingga pengamatan dapat dilakukan dg mudah. Faktor lain adalah dg menggunakan "prosesor virtual" maka kita dapat mendefinisikan :
Prosesor X adalah suatu prosesor virtual yg sederhana
Bahasa A merupakan bahasa yg didisain mahasiswa secara sederhana (misal hanya bisa interger, dan operasi sederhana saja)
Kompiler yg disusun akan menghasilkan "kode biner" untuk proesor X yg sederhana tersebut (misal register terbatas, dan metoda pengalamatan terbatas)
Dengan cara di atas, student tidak dihadapi oleh "instruction set" yang kompleks, dan architecture processor, dan juga bahasa pemorgraman yg rumit. Tetapi konsep kompilasi dapat lebih mudah dipahami secara mendasar. ketimbang harus menggunakan prosesor "real" dan bahasa "real" yang jelas memiliki scope sangat luas.
Berikut ini adalah beberapa simulator prosesor yang dapat dimanfaatkan dalam memberikan pemahaman lebih dalam mengenai teori dan praktis kepada para mahasiswa.
mic1. mic1 ini berbasiskan Java yang mengimplementasikan arsitektur mikro Mic-1 pada Bab 4 buku Andrew S. Tanenbaum, Structured Computer Organization,
http://www.ontko.com/mic1/
DLXOS. Merupakan suatu sistem "komputer" yang dijelaskan pada buku Arsitektur oleh Hennessy & Patterson. Sistem ini terdiri dari DLX Processor (instruction set dan spesifikasi), DLX hardware simulator, DLX compiler dan assembler, DLX Operating System. Karena semua tersedia source code, jadi dapat menjelaskan secara gamblang, bagaimana suatu sistem komputer dibangun, dari "prosesor" hingga "sistem operasi".
http://www.cse.ucsc.edu/~elm/Software/Dlxos/index.shtml
MIX. Emulator ini ditulis oleh David A Smallberg (1982), dan mensimulasikan prosesor MIX (yang diteragnkan dalam buku milik Donald Knuth).
http://www.swiss.ai.mit.edu/~adler/MIX/
MIXAL. Merupakan lingkungan mensimulasikan kerja MIX, MIX adalah model komputer yang merupakan penyederhanaan model CISC (Complex Instruction Set Computer), assembly dari model ini mirip dengan komputer sesungguhnya. Di situ ini terdapat tutorial dan juga SIMULASI GRAFIS.
http://www.gnu.org/software/mdk/mdk.html
MMIX MMIX merupakan prosesor teoritis ciptaan Prof. Donald Knuth, yang merupakan penmgembangan dari MIX. Prosesor bertipe Reduced Instruction Set Computer (RISC).
http://bitrange.com/mmix/ Untuk informasi lainnya tentang prosesor ini dapat dibaca di URL berikut inihttp://www-cs-faculty.stanford.edu/~knuth/mmix.htmlhttp://mmixmasters.sourceforge.net/
Demonstrasi Visual
Untuk mendemonstrasikan beberapa pronsep dasar tentang mekanisme kompilasi, maka dapat juga diginakan beberapa perangkat bantu al:
Pate. Pate merupakan perangkat bantu visual dan interatkfi untuk melakukan parsing, dan transformasi grammar. Pate dapat menyajikan secara tekstual ataupun visualisasi grafis dari turunan suatu grammar. Pada visualisasi grafis suatu tree parsing akan ditampilkan juga. Ditulis dalam JAVA.
http://www.cs.duke.edu/~rodger/tools/pateweb/
JFLAP. JFLAP merupakan suatu paket grafis yang dapat digunakan untuk mengajarkan konsep Bahasa Formal dan Teori Automata. Awalnya ditulis dg C/C++ tapi sekarang tersedia dalam Java.
http://www.cs.duke.edu/~rodger/tools/jflap/index.html
Literatur online
Dengan adanya Internet jelas memudahkan kita untuk memperbaiki materi, karena beberapa materi telah ada dan siap di-download (jadi alasan tidak ada dana buat beli buku, bisa dicoret, dan tidak ada sarana buat download bisa diabaikan karena hanya perlu ke kampus Margonda). Kalau alasan "malas baca" ya mau tidak bisa dan tidak perlu dibahas lagi.
Beberapa buku online ataupun materi kuliah berkaitan dengan teknik kompilasi dapat diperoleh di URL berikut ini.
Let's Build a Compiler, by Jack Crenshaw. Bahasa yang digunakan dalam bukut teks ini adalah PASCAL. Walau sudah cukup lama 1988-1996, materi ini cukup ringan ditulis sebagai pengantar pembuatan kompiler. Tersedia juga berkas siap download dalam format ZIP.
http://compilers.iecc.com/crenshaw/
Compilers and Compiler Generators an introduction with C++ oleh P.D. Terry, Rhodes University, 1996.
http://scifac.ru.ac.za/compilers/
Advanced Programming Language Design oleh Raphael Finkel.
http://cseng.aw.com/book/related/0,3833,0805311912+20,00.html
Parsing Techniques - A Practical Guide oleh Dick Grune dan Ceriel J.H. Jacobs
http://www.cs.vu.nl/~dick/PTAPG.html
Introduction to Compilers (University of Manitoba - Canada) Di site ini juga tersedia catatan kuliah, dan slidenya. Sehingga dapat dimanfaatkan setelah dilakukan modifikasi bobot dan bahasanya.
http://www.cs.umanitoba.ca/~cs329/notes.html
Introduction to Compilers. (Brown University) Ini adalah materi kuliah dari Brown University.
http://www.cs.brown.edu/courses/cs126/
Automata and Formal Language Course. Materi dari Warwick University. Menggunakan JavaCC
http://www.dcs.warwick.ac.uk/~pwg/cs203/cs203index.html
A Bibliography of Compiler Construction
http://www.cs.qub.ac.uk/~D.McKeever/csc303/Reference/Bibliography.html
An Introduction to the Theory of Computation Eitan Gurari, Ohio State University
http://www.cis.ohio-state.edu/~gurari/theory-bk/theory-bk.html
Review of existing LanguagesPerbandingan beberapa bahasa pemorgraman. Situs ini memberikan informasi singkat serta URL yang berkaitan dengan bahasa pemrograman.
http://tunes.org/Review/Languages.html
Programming Language Research. Berisi tentang informasi mengenai riset, dan pengembangan bahasa pemrograman.
http://www-2.cs.cmu.edu/~mleone/language-research.html
Tentu saja akan lebih memudahkan bila materi-materi buku tersebut di atas di "mirror" di server Univeristas-universitas. Sehingga memudahkan para dosen/mahasiswa untuk mencari materi. Saya memiliki daftar buku gratis/online lainnya, bila ada yang tertarik.
Perangkat bantu
Tentu saja, setelah perbaikan materi perkuliahan, materi praktikum atau latihan yang diberikan kepada para mahasiswa, sebaiknya disesuikan sehingga mahasiswa dapat lebih mudah mempelajari, bagaimana proses pembuatan suatu kompiler. Mahasiswa sebaiknya diajak bukan saja menggunakan suatu perangkat kompiler, tetapi juga melihat "ke dalam source code" suatu kompiler sesungguhnya. Jangan "silau dan terpaku" dengan bahasa pemrograman yg penuh dg "hype" sehingga tidak mempelajari hal mendasar ini.
Suatu compiler tentu saja biasanya ditulis dengan memanfaatkan bahasa pemrograman lain misal C, atau C++. Untuk memudahkan proses pengajaran bagaimana menulis kompiler, tentu tidak mungkin dilakukan dari awal menulis semua perangkat bantu (misal scanner dlsb). Untuk itu digunakan beberapa perangkat bantu untuk mempermudah proses pembuatan kompiler.
Perangkat bantu yang lazim digunakan untuk memberikan materi compiler biasanya adalah perangkat bantu scanner, lexical analyzer dlsb. Dapat digunakan seperti Flex, Bison, Lex, Yacc. Perangkat bantu ini tersedia secara bebas (FREE), ada yang dapat juga digunakan di atas platform DOS atau Linux yang tak membutuhkan perangkat keras terlalu tinggi. Jadi nggak perlu pakai alasan menunggu upgrade hardware) Beberapa informasi yang berkaitan dengan perangkat bantu ini :
Free Compiler Construction Tools
http://www.thefreecountry.com/developercity/compiler.html
Gnu C Compilter (GCC). Banyk informasi mengenai compiler (terutama GCC)
http://www.gnu.org/software/gcc/readings.html
Compiler Construction using Flex and Bison
http://cs.wwc.edu/~aabyan/464/Book/
A Compact Guide to Lex & Yacc by Thomas Niemann
http://epaperpress.com/lexandyacc/index.html
TASSKAF. Bahasa TASSKAF ini merupakan subset dari Java. Dapat disusun suatu program ke byte code yang dapat dijalankan di Java Virtual Machine (JVM). Pada site tersebut juga tersedia informasi materi kuliah dengan LEX, YACC
http://rw4.cs.uni-sb.de/~martin/COMP/TK/
GENTLE. Gentle ini merupakan perangkat bantu (toolkit) modern untuk menulis compier dan mengimplemntasikannya pada bahasa tertentu. Perangkat bantu ini mendukung semua proses translasi, dari definisi tree sintaks abstrak, pater matching, smart traversal dan lain sebagainya. Toolkit ini telah digunakan secara luas di riest dan industri.
http://www.first.gmd.de/gentle/
ELI. Merupakan suatu lingkungan pemrograman yang memungkinkan membuat suatu implementasi bahasa pemrograman secara lengkap dari suatu sepsifikasi. Perangkat bantu ini menangani struktural analisis, analisis nama, type, value dlsb dan akan menghasilkan kode C.
http://www.cs.colorado.edu/~eliuser/
SUIF. Tool ini merupakan perangkat bantu yang digunakan di proyek National Compiler Infrastructure di USA.
http://suif.stanford.edu/suif/suif2/doc/

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments