Teori Komputasi Dan Bahasa Formal1
Transcript of Teori Komputasi Dan Bahasa Formal1
![Page 1: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/1.jpg)
Teori Komputasi dan Bahasa Formal
Pertemuan ke-1
![Page 2: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/2.jpg)
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
![Page 3: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/3.jpg)
Ilmu Komputer
Ahli Biologi (neural network)
Ahli Bahasa(natural language)
Matematikawan(Logika)
Ahli Elektro(Switching)
![Page 4: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/4.jpg)
Kedudukan Teori Bahasa
Teknik Rekayasa
Sistem Komputasi
Model dan Gagasan
Komputasi
Hardware
Software
Ilmu Komputer
Teori Bahasa
Otomata
![Page 5: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/5.jpg)
Teori Komputasi
Apa yang bisa dilakukan oleh
Komputer ?
![Page 6: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/6.jpg)
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 :
![Page 7: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/7.jpg)
Teori Komputasi
2+3 =5
2 + 3 = ?
![Page 8: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/8.jpg)
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 :
![Page 9: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/9.jpg)
Pembangunan Kompilator
Hard Code
Otomatis
Scanner
Parser Tree Walker
A N T L RAnother Tool for Language
Recognition
![Page 10: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/10.jpg)
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 :
![Page 11: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/11.jpg)
Bahasa Pemrograman Translator Model Kompilator
Konsep dasar :
![Page 12: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/12.jpg)
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 :
![Page 13: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/13.jpg)
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 :
![Page 14: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/14.jpg)
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
![Page 15: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/15.jpg)
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 :
![Page 16: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/16.jpg)
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.
![Page 17: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/17.jpg)
Kompilator :
Source Code
Compiler Object Code
Eksekusi
Hasil
Data
![Page 18: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/18.jpg)
Interpreter :
Source Code Hasil
Data
Interpreter
Back
![Page 19: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/19.jpg)
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
![Page 20: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/20.jpg)
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 :
![Page 21: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/21.jpg)
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 :
![Page 22: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/22.jpg)
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 :
![Page 23: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/23.jpg)
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 :
![Page 24: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/24.jpg)
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 :
![Page 25: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/25.jpg)
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 :
![Page 26: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/26.jpg)
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 :
![Page 27: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/27.jpg)
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 :
![Page 28: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/28.jpg)
Mentranslasikan kode antara menjadi kode assembly atau kode mesin,
Menghasilkan kode objek.
Code Generator :
![Page 29: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/29.jpg)
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 :
![Page 30: Teori Komputasi Dan Bahasa Formal1](https://reader033.fdocuments.us/reader033/viewer/2022052411/557201fb4979599169a2bdbf/html5/thumbnails/30.jpg)
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 :