Anda di halaman 1dari 30

Teori Komputasi dan Bahasa Formal

Pertemuan ke-1

Referensi :
1.

2. 3.

4.

5.

Brookshear, J. Glen, Theory of Computation, Formal Languages, Automata and Complexity, The BenjaminCummings Publishing Company Inc., 1989 Hariyanto, Bambang, Teori Bahasa, Otomata, dan Komputasi, Informatika Bandung, 2004 Hopcroft, Jhon E dan Jeffrey D.Ullman, Introduction to Automata Theory, Languages, and Computation, Addisson-Wesley Publishing, 1979 Martin, Jhon C. , Introduction to Languages, and The Theory of Computation, McGraw-Hill Inc. Publishing, 1991 Utdirartatmo, Firar, Teori Bahasa dan Otomata, J&J Learning Yogyakarta, 2001

Ilmu Komputer
Ahli Bahasa (natural language) Ahli Biologi (neural network)

Ahli Elektro (Switching)


Matematikawan (Logika)

Kedudukan Teori Bahasa


Ilmu Komputer

Model dan Gagasan Komputasi

Teknik Rekayasa Sistem Komputasi

Teori Bahasa

Otomata

Hardware

Software

Teori Komputasi

Apa yang bisa dilakukan oleh Komputer ?

Answer this questions :


1.

2.

3.

Bagaimana cara memberikan instruksi kepada komputer ? Bagaimana Komputer memproses instruksi yang anda berikan ? Sebetulnya apa yang dipahami oleh komputer ?

Teori Komputasi
2+3=?

2+3 =5

Sejarah :

Perkembangan kompilator sudah dimulai sejak ditemukannya komputer yaitu awal tahun 1950-an. Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN, yang dikembangkan oleh sejumlah tenaga ahli. Awalnya kompilator merupakan proses penerjemahan suatu bahasa sumber ke bahasa mesin, tetapi terdapat beberapa aplikasi lain yang pengembangannya dilakukan dengan menggunakan konsep pengembangan kampilator. Perkembangannya sangat cepat, sudah banyak program bantu yang dapat digunakan untuk membuat suatu kompilator, sehingga pembentukkannya dapat dilakukan dengan cepat. Salah satu program bantu tersebut adalah ANTLR.

Pembangunan Kompilator

Otomatis

Hard Code

Scanner

Parser

Tree Walker

ANTLR
Another Tool for Language Recognition

Kompilator :

Kompilator merupakan salah satu jenis translator, yaitu program penerjemah untuk menterjemahkan bahasa sumber (source language) ke dalam bahasa sasaran (target language). Bahasa pemrograman yang memiliki kompilator pada umumnya adalah bahasa pemrograman tingkat tinggi seperti Pascal, C, Fortran, dan Cobol.
Proses penerjemahan yang dilakukan oleh kompilator disebut dengan proses kompilasi (compiling).

Konsep dasar :

Bahasa Pemrograman Translator Model Kompilator

Bahasa pemrograman :

dibentuk oleh aturan yang dapat direpresentasikan dengan struktur sintaks. Sintaks bahasa pemrograman mengikuti tata bahasa bebas koteks (Context Free grammar), bisa berasal dari bahasa alami untuk kejelasan dan kemudahan pembacaan, matematika untuk ekspresi aritmetika, dan bahasa pemrograman yang telah ada.

Tujuan Bahasa Pemrograman :


Komunikasi dengan manusia, Pencegahan dan deteksi kesalahan, Usability, mudah dipelajari dan diingat, Efektifitas pemrograman, Compilability, Efisiensi, membuat bahasa lebih sederhana, sehingga mudah untuk menghasilkan kode yang efisien, Machine independent, Kesederhanaan (Simplicity), pendefinisian yang baik dan konsep yang sederhana Uniformity, mengerjakan hal yang sama dengan cara yang sama, Orthogonality, setiap fungsi bekerja tanpa harus mengetahui stuktur yang lain, Generalisasi dan spesialisasi, jika kita diperbolehkan melakukan sesuatu , maka lakukan hal lain dengan cara serupa.

Tingkatan Bahasa pemrograman :

Bahasa mesin, bentuk terendah dari bahasa komputer, berupa deretan angka 0 dan 1. Bahasa assembly, bentuk simbolik dari bahasa mesin, Bahasa tingkat tinggi, memberikan fasilitas yang lebih banyak, kontrol program yang terstruktur, kalang(nested), blok dan prosedur. Bahasa yang problem oriented, memungkinkan penyelesaian suatu masalah atau aplikasi yang spesifik.
Back

Translator :

Assembler, source code bahasa assembly dan object code-nya adalah bahasa mesin. Kompilator, Souce code bahasa tingkat tinggi dan object code-nya bahasa mesin atau assembly. Source code dan data diproses pada saat yang berbeda. Interpreter, tidak membangkitkan object code, hasil translasi dalam bentuk internal.

Assembler :

Source code berupa file .ASM

Assembler

Object code berupa file .EXE /.COM

assembly adalah bahasa sederhana yang mudah diterjemahkan ke bahasa mesin. Tools untuk menerjemahkannya adalah assembler, dan Prosessnya namanya assembling.

Kompilator :
Data

Source Code

Compiler

Object Code

Eksekusi

Hasil

Interpreter :
Data

Source Code

Interpreter

Hasil

Back

Model kompilator :
Source Code Error Handler A N A L Y S I S
Lexical Analyzer (Scanner) Syntactic Analyzer (Parser)

SYNTHESIS
Intermediate Code

Semantic Analyzer

Code Optimizer

Code Generator

FRONT

END Symbol Table

BACK

END

Object Code

Lexical Analyzer :

Analisis leksikal (scanner) melakukan pemeriksaan terhadap sebuah kode sumber dengan cara membaca satu per satu karakter yang ada pada kode sumber tersebut, kemudian dikelompokkan menjadi token/leksik. Dengan kata lain memecah kode sumber menjadi satuan terkecilnya (token/leksik). Token/leksik adalah satuan terkecil dari kode sumber yang memiliki arti. Scanner berperan sebagai antar muka antara kode sumber dengan proses analisis sintaksis (parser).

Tugas Scanner :
1.

2.

3.

4.

5. 6.

Melakukan scanning (proses pembacaan) terhadap karakter. Mengidentifikasi karakter yang dibaca untuk membentuk besaran leksik. Mentransformasi besaran leksik menjadi bentuk yang lebih ringkas. Membuang komentar, pembatas garis, dan karakter white space, yang sudah tidak dibutuhkan. Menangani kesalahan. Mengelola tabel informasi.

Syntactic Analyzer :

Analisis Sintak (Parser) menerima masukan dari scanner (dalam bentuk token) dan membentuk parse tree sesuai dengan sintaks dan tata bahasanya. Dengan kata lain memeriksa kebenaran sintak dari kode sumber tersebut. Secara umum terdapat dua metode parsing, yaitu Top Down Parsing dan Bottom Up Parsing.

Tugas Parser :
1.

2.

3. 4.

Melakukan parsing (proses pembentukkan parse tree) dari tokentoken yang dihasilkan oleh scanner. Memeriksa kebenaran sintak dari kode sumber sesuai dengan tata bahasanya. Menangani kesalahan sintaks. Mengelola tabel informasi.

Semantic Analyzer :

Merupakan bagian terakhir dari tahapan analisis, Melakukan pengecekan pada struktur akhir yang telah diperoleh, dan memeriksa kesesuaiannya dengan komponen program yang ada, Memanfaatkan pohon sintaks yang dihasilkan oleh parser.

Tugas Analisis Semantik :


1.

2.

3.

4.

5. 6.

Menentukan makna dari serangkaian instruksi yang terdapat dalam program sumber, Memeriksa apakah variabel yang ada telah didefinisikan sebelumnya, Memeriksa apakah variabel-variabel tersebut bertipe sama, Memeriksa apakah operan yang akan dioperasikan tersebut ada nilainya, Menangani kesalahan semantik, Menangani tabel simbol.

Intermediate Code :

Merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi. Mempermudah pembangkitan kode objek, Mempermudah proses optimasi, Lebih mudah dipahami, jika dibandingkan dengan kode assembly atau kode mesin.

Code Optimizer :

Melakukan optimasi terhadap kode objek yang dihasilkan oleh code generator, Menghasilkan kode objek yang berukuran lebih kecil, sehingga proses eksekusi bisa lebih cepat.

Code Generator :

Mentranslasikan kode antara menjadi kode assembly atau kode mesin, Menghasilkan kode objek.

Symbol Table :

Mempermudah pembuatan dan implementasi dari analisis semantik, Membantu dalam pemeriksaan kebenaran semantik dari program sumber, Membantu dan mempermudah dalam pembuatan kode antara dan proses pembangkitan kode.

Error Handler :

Penanganan Kesalahan dilakukan bila terjadi kesalahan dalam penulisan program sumber, baik kesalahan penulisan besaran leksik, kesalahan sintaksis, maupun kesalahan semantik. Kesalahan leksikal terjadi jika adanya suatu rangkaian karakter yang tidak memenuhi spesifikasi leksikal. Kesalahan sintaks terjadi jika terdapat pelanggaran aturan sintaks. Kesalahan semantik terjadi bila suatu operator digunakan terhadap operand yang tidak sesuai dengan tipe datanya

Anda mungkin juga menyukai