Teori Komputasi dan Bahasa Formal Pertemuan ke-1
Jul 24, 2015
Teori Komputasi dan Bahasa Formal
Pertemuan ke-1
Referensi :1. Brookshear, J. Glen, “Theory of Computation, Formal
Languages, Automata and Complexity”, The Benjamin-Cummings Publishing Company Inc., 1989
2. Hariyanto, Bambang, “Teori Bahasa, Otomata, dan Komputasi”, Informatika Bandung, 2004
3. Hopcroft, Jhon E dan Jeffrey D.Ullman, “Introduction to Automata Theory, Languages, and Computation”, Addisson-Wesley Publishing, 1979
4. Martin, Jhon C. , “Introduction to Languages, and The Theory of Computation”, McGraw-Hill Inc. Publishing, 1991
5. Utdirartatmo, Firar, “Teori Bahasa dan Otomata”, J&J Learning Yogyakarta, 2001
Ilmu Komputer
Ahli Biologi (neural network)
Ahli Bahasa(natural language)
Matematikawan(Logika)
Ahli Elektro(Switching)
Kedudukan Teori Bahasa
Teknik Rekayasa
Sistem Komputasi
Model dan Gagasan
Komputasi
Hardware
Software
Ilmu Komputer
Teori Bahasa
Otomata
Teori Komputasi
Apa yang bisa dilakukan oleh
Komputer ?
1. Bagaimana cara memberikan instruksi kepada komputer ?
2. Bagaimana Komputer memproses instruksi yang anda berikan ?
3. Sebetulnya apa yang dipahami oleh komputer ?
Answer this questions :
Teori Komputasi
2+3 =5
2 + 3 = ?
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.
Sejarah :
Pembangunan Kompilator
Hard Code
Otomatis
Scanner
Parser Tree Walker
A N T L RAnother Tool for Language
Recognition
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).
Kompilator :
Bahasa Pemrograman Translator Model Kompilator
Konsep dasar :
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.
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.
Tujuan 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.
Tingkatan Bahasa pemrograman :
Back
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.
Translator :
Assembler :
Source code berupa file
.ASM
Object code berupa file
.EXE /.COM Assembler
assembly adalah bahasa sederhana yang mudah diterjemahkan ke bahasa mesin.
Tools untuk menerjemahkannya adalah assembler, dan Prosessnya namanya assembling.
Kompilator :
Source Code
Compiler Object Code
Eksekusi
Hasil
Data
Interpreter :
Source Code Hasil
Data
Interpreter
Back
Model kompilator :SourceCode
Error Handler
Symbol Table
ObjectCode
LexicalAnalyzer(Scanner)
SyntacticAnalyzer(Parser)
SemanticAnalyzer
Inter-mediate
Code
CodeOptimizer
CodeGenerator
A N A L Y S I S
F R O N T E N D
S Y N T H E S I S
B A C K E N D
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).
Lexical Analyzer :
1. Melakukan scanning (proses pembacaan) terhadap karakter.
2. Mengidentifikasi karakter yang dibaca untuk membentuk besaran leksik.
3. Mentransformasi besaran leksik menjadi bentuk yang lebih ringkas.
4. Membuang komentar, pembatas garis, dan karakter white space, yang sudah tidak dibutuhkan.
5. Menangani kesalahan.6. Mengelola tabel informasi.
Tugas Scanner :
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.
Syntactic Analyzer :
1. Melakukan parsing (proses pembentukkan parse tree) dari token-token yang dihasilkan oleh scanner.
2. Memeriksa kebenaran sintak dari kode sumber sesuai dengan tata bahasanya.
3. Menangani kesalahan sintaks.
4. Mengelola tabel informasi.
Tugas Parser :
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.
Semantic Analyzer :
1. Menentukan makna dari serangkaian instruksi yang terdapat dalam program sumber,
2. Memeriksa apakah variabel yang ada telah didefinisikan sebelumnya,
3. Memeriksa apakah variabel-variabel tersebut bertipe sama,
4. Memeriksa apakah operan yang akan dioperasikan tersebut ada nilainya,
5. Menangani kesalahan semantik,6. Menangani tabel simbol.
Tugas Analisis Semantik :
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.
Intermediate Code :
Melakukan optimasi terhadap kode objek yang dihasilkan oleh code generator,
Menghasilkan kode objek yang berukuran lebih kecil, sehingga proses eksekusi bisa lebih cepat.
Code Optimizer :
Mentranslasikan kode antara menjadi kode assembly atau kode mesin,
Menghasilkan kode objek.
Code Generator :
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.
Symbol Table :
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
Error Handler :