PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

dokumen-dokumen yang mirip
ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

BAB I PENDAHULUAN. 1.1 Latar Belakang

BAB II DASAR TEORI. 2.1 Kompilator

Komponen sebuah Kompilator

Aplikasi Translator Kode Dari Bahasa C ke Pascal

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

Implementasi Dan Pengujian

ANALISIS PEMECAHAN MASALAH

UNIVERSITAS GUNADARMA

Pendahuluan. Tujuan Pembelajaran :

Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state

TEORI BAHASA DAN AUTOMATA

LANGUAGES AND TRANSLATOR

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

BAB 1 PENDAHULUAN 1.1. Latar Belakang Masalah

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

TEORI BAHASA DAN OTOMATA [TBO]

TEKNIK KOMPILASI. Firrar Utdirartatmo

PENGANTAR TEKNIK KOMPILASI

TEKNIK KOMPILASI Bahasa Regular

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

TEKNIK KOMPILASI. Oleh. Hartono

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

BAB II ANALISA LEKSIKAL (SCANNER)

ALGORITMA PEMROGRAMAN 1C SINTAKS

Pengayaan Software/Hardware dan Pengantarmukaan

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

Compiler & Interpreter

BAB I PENDAHULUAN 1.1 Latar Belakang

Teori Komputasi 10/15/2015. Bab 1: Pendahuluan. Teori Komputasi dan Teknik Kompilasi. Teori Komputasi dan Teknik Kompilasi

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

PENGUBAHAN SINGKATAN PADA PESAN SINGKAT TELEPON SELULER DENGAN MEMANFAATKAN POHON KEPUTUSAN C4.5

SEMANTIK. Int vector[10];

SATUAN ACARA PERKULIAHAN STMIK UBUDIYAH INDONESIA SEMESTER GENAP TAHUN AKADEMIK 2013/2014

PENDAHULUAN. Terdapat tiga topik utama di teori otomata yaitu:

BAB II SINTAKS 2.1. SINTAKS

Pembangunan Interpreter Bahasa Simulasi GPSS

Aplikasi Rekursif dalam Analisis Sintaks Program

Deteksi Otomatis Plagiarisme Source Code

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI

BAB 1 PENDAHULUAN. sederhana adalah kelas bahasa reguler (regular languages). Bahasa reguler dapat dengan

PERANCANGAN DAN PEMBUATAN SISTEM VALIDASI XHTML 1.0

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

Pengamanan Transmisi Hasil dan Data Query Basis Data dengan Algoritma Kriptografi RC4

Fase-fase proses sebuah kompilasi

SATUAN ACARA PERKULIAHAN (SAP) MATA KULIAH PENGANTAR TEKNIK KOMPILASI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

TEORI BAHASA DAN OTOMATA [TBO]

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs

FTIK / PRODI TEKNIK INFORMATIKA

PERANCANGAN SISTEM PERBAIKAN ERROR KODE SUMBER PROGRAM OTOMATIS

Kata Pengantar... Daftar Isi... Daftar Padan Kata Inggris - Indonesia Pengantar ke Algoritma... 1

BAB 2. ANALISIS LEKSIKAL

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Teori Bahasa & Otomata

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

PEMBANGUNAN APLIKASI MULTIMEDIA INTERAKTIF UNTUK SIMULASI DETERMINISTIC PUSH DOWN AUTOMATA (DPDA)

PENGEMBANGAN CODE GENERATOR BERBASIS WEB UNTUK MEMBANGKITKAN KODE MODUL APLIKASI WEB

Universitas Bina Nusantara. Jurusan Teknik Informatika Program Studi Ilmu Komputer Skripsi Sarjana Komputer Semester Ganjil 2007 / 2008

Bab III Semantik. Konsep Semantik Bahasa Pemrograman (Semantik Analisis)

PEMANFAATAN TEKNIK STEMMING UNTUK APLIKASI TEXT PROCESSING BAHASA INDONESIA SKRIPSI. Oleh : SEPTIAN BAGUS WAHYONO NPM :

BAB I PENDAHULUAN. Sebesta (2002) memaparkan kriteria evaluasi terhadap sebuah bahasa

Tujuan perancangan bhs program

BAB I PENGENALAN TEKNIK KOMPILASI

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI

TEKNIK KOMPILASI Konsep & Notasi Bahasa

TEORI BAHASA DAN OTOMATA PENGANTAR

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

PERANCANGAN SISTEM INFORMASI EKSEKUTIF PADA PT DIHITAL JAYA SOLUSI

Pemodelan CNF Parser dengan Memanfaatkan Pohon Biner

Pengenalan Bahasa C++, Algoritma Pemrograman, Integrated Development Equipment (IDE) Visual C++ dan Dasar Dasar Bahasa C++

BAB I PENDAHULUAN 1-1

Universitas Bina Nusantara. Jurusan Teknik Informatika Skripsi Sarjana Komputer Semester Ganjil tahun 2005/2006

1, 2, 3

BAHASA PEMROGRAMAN. Merupakan prosedur/tata cara penulisan program.

Aplikasi Pengolah Bahasa Alami Untuk Operasi Boolean Antar Citra Agus Purwo Handoko 5)

BAB I PENDAHULUAN 1.1 Latar Belakang

TEORI BAHASA DAN AUTOMATA

PEMBANGUNAN ADD-ON PADA MOZILLA THUNDERBIRD UNTUK ENKRIPSI SURAT ELEKTRONIK DENGAN CORRECTED BLOCK TINY ENCRYPTION ALGORITHM

Pendahuluan. Kuliah online : Tekkom [2013/VI]

BAB III ANALISIS DAN PERANCANGAN

MODEL SISTEM PENJADWALAN DEPENDENCY PADA BASIS DATA DEDUKTIF

Algoritma dan Struktur Data

UNIVERSITAS BINA NUSANTARA. Program Ganda Teknik Informatika Matematika Skripsi Sarjana Program Ganda Semester Genap 2003/2004

MAKALAH MODEL DESAIN DAN DOKUMENTASI DESAIN. NAMA : RANI JUITA NIM : DOSEN : WACHYU HARI HAJI. S.Kom.MM

OPTIMASI JARINGAN SARAF TIRUAN PADA OPTICAL CHARACTER RECOGNITION DENGAN MENGGUNAKAN IMAGE PREPROCESSING DAN ALGORITMA GENETIK

Transkripsi:

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL LAPORAN TUGAS AKHIR Disusun Sebagai Syarat Kelulusan Tingkat Sarjana oleh : Ipam Fuaddina Adam / 13502079 PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TEKNIK ELEKTRO DAN INFORMATIKA INSTITUT TEKNOLOGI BANDUNG 2008

i Lembar Pengesahan Program Studi Sarjana Informatika Pengembangan Prototipe Aplikasi Konversi Kode Dari Bahasa C Ke Pascal Tugas Akhir Program Studi Sarjana Informatika ITB Oleh Ipam Fuaddina Adam / 13502079 Telah disetujui dan disahkan sebagai laporan tugas akhir di Bandung, pada tanggal 17 Juni 2008 Pembimbing Ir. Rinaldi Munir, M.T NIP. 132084796

Abstraksi Tugas Akhir ii Tugas akhir ini bertujuan membangun program yang melakukan proses konversi kode sumber program dari bahasa C ke Pascal. Proses translasi dilakukan dengan membuat rule yang mencocokkan grammar dari C dan Pascal, rule ini kemudian dipakai untuk memproduksi kode yang ekivalen dengan kode masukan. Beberapa komponen program dibangun dengan bantuan kakas scanner generator dan parser generator. Pada akhir proses pengembangan, dilakukan pengujian untuk mengetahui kebenaran jalannya program. Tidak semua komponen bahasa C ditranslasi, fitur-fitur yang kompleks seperti C preprocessing, function pointer, tipe kompleks ( pointer to pointer ), dll, tidak ditranslasi. Alur kerja dari program konversi kode dibagi menjadi tiga bagian : preprocessing ( dilakukan dengan memanggil program eksternal ), scanning parsing ( komponen ini dikembangkan dengan menggunakan kakas ) dan code generation, yaitu proses penerjemahan dan pembangkitan kode, yang merupakan inti dari tugas akhir. Seluruh komponen program konversi kode dikembangkan dengan bahasa C. Hasil akhir dari tugas akhir ini adalah prototipe perangkat lunak translator yang mampu mengkonversi kode dari bahasa C ke Pascal. Program menerima inputi berupa berkas ( file ) yang berisi kode sumber program dalam bahasa C, dan menghasilkan keluaran berupa file yang berisi kode program yang ekivalen dalam bahasa Pascal. Nama file keluaran selalu sama dengan nama file masukan, hanya berbeda ekstensi menjadi.pas. Program konversi kode dioperasikan lewat console dan berjalan pada sistem operasi Linux/Unix. Kata kunci : kompilator, translator, grammar, penganalisis leksikal (scanner), penganalisis sintaks ( parser ), pembangkit kode ( code generator ), tabel simbol ( symbol table ).

iii Kata Pengantar Puji syukur penulis panjatkan kepada Tuhan YME atas berkat dan rahmat-nya, tugas akhir ini dapat diselesaikan dengan lancar. Selama pelaksanaan tugas akhir ini, penulis mendapatkan banyak dukungan dari berbagai pihak, tanpa mereka tugas akhir ini tidak akan selesai. Penulis ingin mengucapkan terima kasih, kepada : 1. Bapak dan ibu yang tiada hentinya memberikan dukungan moral, kasih, dan sumbangan pemikiran 2. Bapak Ir. Rinaldi Munir, M.T. yang telah bersedia menjadi dosen pembimbing selama tugas akhir ini dilaksanakan 3. Adikku Deka yang aku sayangi, yang selalu menanyakan perkembangan tugas akhir ini 4. Semua staf dosen dan karyawan teknik informatika ITB 5. Semua civitas akademika teknik informatika ITB yang menemani hari demi hari selama penulis menimba ilmu di ITB Sebagai penutup, penulis menyadari bahwa tugas akhir ini adalah karya yang jauh dari sempurna, oleh karenanya penulis selalu mengharapkan kritik dan saran dari pembaca, demi proses perbaikan di masa yang akan datang. Bandung, 12 Juni 2008 Penulis

Daftar Isi iv Lembar Pengesahan... ii Abstraksi Tugas Akhir... ii Kata Pengantar... iii Daftar Isi... iv Daftar Gambar... vii Daftar Tabel... viii BAB I PENDAHULUAN... 11 1.1 Latar Belakang... 11 1.2 Rumusan Masalah... 13 1.3 Tujuan... 13 1.4 Batasan Masalah... 14 1.5 Metodologi... 14 1.6 Sistematika Laporan... 15 BAB II DASAR TEORI... 16 2.1 Kompilator... 16 2.2 Penganalisis Leksikal / Lexical Analyzer... 18 2.3 Penganalisis Sintaks / Grammar... 18 2.3.1 Bottom-up Parser... 19 2.3.2 Top-down Parser... 20 2.4 Pembangkitan Kode... 20 2.5 Tabel Simbol... 21 2.6 C dan Pascal... 23 2.6.1 Struktur Program... 24 2.6.2 Tipe String... 24 2.6.3 Komentar... 25 2.6.4 Deklarasi... 25 2.6.5 Operator Assignment... 26 2.6.6 Standar Input Output... 26 2.6.7 Statement for... 27 2.6.8 Macro... 27

v 2.6.9 Senarai... 28 2.6.10 Subrutin... 29 2.7 Kakas Parser Generator dan Scanner Generator... 29 BAB III ANALISIS PEMECAHAN MASALAH... 31 3.1 Alur Kerja Global... 31 3.2 Spesifikasi Grammar Bahasa C... 32 3.3 Proses Parsing... 36 3.4 Konfigurasi Kakas Flex dan Yacc... 41 3.5 Proses Konversi... 44 BAB IV ANALISIS DAN PERANCANGAN PERANGKAT LUNAK... 50 4.1 Analisis Aliran Data... 50 4.1.1 Diagram level 0... 50 4.1.2 Diagram level 1... 51 4.1.3 Diagram Level 2 Proses 3... 52 4.2 Analisis Modul... 52 4.3 Perancangan Struktur Data... 54 4.3.1 Specifier dan Declarator... 54 4.3.2 Representasi Tipe... 56 4.3.3 Implementasi Tabel Simbol... 57 4.3.4 Elemen Tabel Simbol... 59 4.3.5 Struktur Tabel Simbol... 60 4.3.6 AST ( Abstract Syntax Tree )... 60 4.4 Perancangan Antarmuka dan Perintah... 62 BAB V Implementasi Dan Pengujian... 63 5.1 Implementasi... 63 5.1.1 Lingkungan Perangkat Lunak... 63 5.1.2 Lingkungan Perangkat Keras... 63 5.2 Batasan Implementasi... 64 5.3 Implementasi Struktur Data... 65 5.3.1 Implementasi Tabel Simbol... 65 5.3.2 Implementasi Simbol dan Sistem tipe... 66 5.3.3 Implementasi Fungsi Hash... 67

vi 5.3.4 Implementasi AST... 67 5.4 Implementasi modul... 68 5.5 Pengujian... 68 5.5.1 Metode Pengujian... 68 5.5.2 Hasil Pengujian... 68 BAB VI Kesimpulan dan Saran... 72 6.1 Kesimpulan... 72 6.2 Saran... 73 DAFTAR PUSTAKA... 74 LAMPIRAN... 75

vii Daftar Gambar Gambar I-1 Alur Kerja Kompilator Empat Fase... 12 Gambar II-1 Kompilator Empat Fase... 17 Gambar II-2 Pohon Parsing... 20 Gambar III-1 Alur Kerja Global... 31 Gambar IV-1 diagram DFD level 0... 50 Gambar IV-2 Diagram DFD level 1... 51 Gambar IV-3 Diagram DFD level 2 proses 3... 52 Gambar IV-4 Struktur modul program... 53 Gambar IV-5 Representasi tipe... 56 Gambar IV-6 Tabel simbol... 58 Gambar IV-7 Struktur item tabel simbol... 59 Gambar IV-8 Stuktur AST... 61 Gambar IV-9 Pemanggilan program dari console... 62

Daftar Tabel viii Tabel II-1 Contoh Tabel Simbol... 22 Tabel II-2 Perbandingan C dan Pascal... 23 Tabel II-3 Pebandingan Struktur Program... 24 Tabel II-4 String pada C dan Pascal... 25 Tabel II-5 Deklarasi Variabel... 26 Tabel II-6 Input dan Output... 27 Tabel II-7 Pengulangan for... 27 Tabel II-8 Efek preprocessing... 28 Tabel II-9 Penggunaan Senarai pada C dan Pascal... 28 Tabel II-10 Subrutin pada C dan Pascal... 29 Tabel III-1 Spesifikasi Grammar... 33 Tabel III-2 Pemrosesan Deklarasi Struktur... 37 Tabel III-3 Pemrosesan Deklarasi Enumerasi... 38 Tabel III-4 Pemrosesan Definisi Fungsi... 39 Tabel III-5 Pemrosesan Ekspresi... 40 Tabel III-6 Konfigurasi input untuk Kakas Lex/Flex... 42 Tabel III-7 Konfigurasi input untuk Kakas Yacc/Bison... 43 Tabel III-8 Konversi typedef... 44 Tabel III-9 Pemakaian Nama Tipe sebagai identifier... 45 Tabel III-10 Konversi storage class... 45 Tabel III-11 Penanganan duplikasi visibilitas variabel... 46 Tabel III-12 Pemrosesan struktur... 47 Tabel III-13 Pemrosesan union... 48 Tabel III-14 Pemorsesan typedef... 48 Tabel III-15 Ekspresi Kondisional... 49 Tabel IV-1 keterangan entitas dan proses untuk level 0... 50 Tabel IV-2 keterangan DFD level 1... 51 Tabel IV-3 Proses pembangkitan kode... 52 Tabel IV-4 Penjelasan modul... 53 Tabel IV-5 Senarai pada C dan Pascal... 55

ix Tabel V-1 Batasan Implementasi... 64 Tabel V-2 Implementasi tabel hash... 65 Tabel V-3 implementasi simbol dan sistem tipe... 66 Tabel V-4 Implementasi fungsi hash... 67 Tabel V-5 Implementasi AST... 67 Tabel V-6 Detail implementasi modul... 68

Daftar Istilah x Istilah / singkatan AST Bison DFA Flex Grammar Hash kompilator Lex Macro NFA Parser Scanner Token Yacc Penjelasan Abstract Syntax Tree Nama salah satu software parser generator Deterministic Finite Automaton Nama salah satu software scanner generator Aturan yang menata rangkaian kalimat atau kata dalam bahasa Teknik identifikasi obyek dengan cara mengubah obyek menjadi kode id unik, sehingga memungkinkan obyek dicari dengan cepat Program yang menerjemahkan bahasa tingkat tinggi menjadi kode assembly Nama salah satu software scanner generator Fasilitas pada bahasa C yang dipakai selama preprocessing Nondeterministic Finite Automaton Program yang melakukan proses parsing Program yang memecah kode sumber menjadi serangkaian token Rangkaian karakter/simbol yang bermakna dalam suatu bahasa Nama salah satu software parser generator