teori komputasi dan bahasa formal1

30
Teori Komputasi dan Bahasa Formal Pertemuan ke-1

Upload: tinjenk

Post on 24-Jul-2015

453 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Teori Komputasi Dan Bahasa Formal1

Teori Komputasi dan Bahasa Formal

Pertemuan ke-1

Page 2: Teori Komputasi Dan Bahasa Formal1

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

Ilmu Komputer

Ahli Biologi (neural network)

Ahli Bahasa(natural language)

Matematikawan(Logika)

Ahli Elektro(Switching)

Page 4: Teori Komputasi Dan Bahasa Formal1

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

Teori Komputasi

Apa yang bisa dilakukan oleh

Komputer ?

Page 6: Teori Komputasi Dan Bahasa Formal1

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

Teori Komputasi

2+3 =5

2 + 3 = ?

Page 8: Teori Komputasi Dan Bahasa Formal1

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

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

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

Bahasa Pemrograman Translator Model Kompilator

Konsep dasar :

Page 12: Teori Komputasi Dan Bahasa Formal1

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

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

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

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

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

Kompilator :

Source Code

Compiler Object Code

Eksekusi

Hasil

Data

Page 18: Teori Komputasi Dan Bahasa Formal1

Interpreter :

Source Code Hasil

Data

Interpreter

Back

Page 19: Teori Komputasi Dan Bahasa Formal1

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

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

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

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

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

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

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

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

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

Mentranslasikan kode antara menjadi kode assembly atau kode mesin,

Menghasilkan kode objek.

Code Generator :

Page 29: Teori Komputasi Dan Bahasa Formal1

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

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 :