Laporan TBO Praktikum

23
BAB I LANDASAN TEORI Finite automata adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata. Implementasi Finite Automata Sistem dengan state berhingga diterapkan pada: - Sistem elevator - Mesin pengeluar minuman kaleng (vending machine) - Pengatur lampu lalu lintas (traffic light regulator) - Sirkuit penyaklaran (switching) di komputer dan telekomunikasi - Protokol komunikasi (communication protocol) - Analisis Leksikal (Lexical analyzer) - Neuron nets - sistem Komputer Finite State Diagram (FSD) Finite State Automata dapat dimodelkan dengan Finite State Diagram (FSD) dapat juga disebut State Transition Diagram. Finite State Diagram terdiri dari: 1. Lingkaran menyatakan state Lingkaran diberi label sesuai dengan nama state tersebut. Adapun pembagian lingkaran adalah: - Lingkaran bergaris tunggal berarti state sementara - Lingkaran bergaris ganda berarti state akhir 2. Anak Panah menyatakan transisi yang terjadi Label di anak panah menyatakan simbol yang membuat transisi dari 1 state ke state lain Klasifikasi FSA Ada dua jenis FSA : •Deterministic finite automata (DFA) Terdiri dari 1 transisi dari suatu state pada 1 simbol masukan. •Non deterministik finite automata.(NFA) Lebih dari 1 transisi dari suatu state dimungkinkan pada simbol masukan yang sama

Transcript of Laporan TBO Praktikum

Page 1: Laporan TBO Praktikum

BAB I

LANDASAN TEORI

Finite automata adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata.

Implementasi Finite Automata

Sistem dengan state berhingga diterapkan pada:

- Sistem elevator- Mesin pengeluar minuman kaleng (vending machine)- Pengatur lampu lalu lintas (traffic light regulator)- Sirkuit penyaklaran (switching) di komputer dan telekomunikasi- Protokol komunikasi (communication protocol)- Analisis Leksikal (Lexical analyzer)- Neuron nets- sistem Komputer

Finite State Diagram (FSD)

Finite State Automata dapat dimodelkan dengan Finite State Diagram (FSD) dapat juga disebut State Transition Diagram.

Finite State Diagram terdiri dari:

1. Lingkaran menyatakan state Lingkaran diberi label sesuai dengan nama state tersebut.

Adapun pembagian lingkaran adalah:- Lingkaran bergaris tunggal berarti state sementara- Lingkaran bergaris ganda berarti state akhir

2. Anak Panah menyatakan transisi yang terjadi Label di anak panah menyatakan simbol yang membuat transisi dari 1 state ke state lain

Klasifikasi FSAAda dua jenis FSA :

•Deterministic finite automata (DFA) Terdiri dari 1 transisi dari suatu state pada 1 simbol masukan.

•Non deterministik finite automata.(NFA) Lebih dari 1 transisi dari suatu state dimungkinkan pada simbol masukan yang sama

Kedua finite automata tersebut mampu mengenali himpunan reguler secara presisi. Dengan demikian kedua finite automata itu dapat mengenali string-string yang ditunjukkan dengan ekspresi reguler secara tepat.

Page 2: Laporan TBO Praktikum

Posted by Aritha H on Monday, March 29, 2010source : http://kuliahkusayang.blogspot.com/2010/03/finite-state-automata-

fsa.html#ixzz2JjD7LghLBAB II

HASIL PRAKTIKUM

KESIMPULAN

Diagram FSA diatas yang terdiri dari tiga state : q0,q1,q2 . yang dimana state awal berada di q0 dan state akhir di q1 , dengan inisial inputan seperti gambar berikut :

Terbukti bahwa string {aabb},{}, ditolak karena tidak sesuai dengan inisialisasi inputan yang

sudah ditentukan, atau bahkan terbukti tidak berakhir di state akhir, dengan demikian suatu

string dikatakan diterima oleh suatu mesin FSA apabila dia berakhir di state akhir.

Page 3: Laporan TBO Praktikum

BAB I

LANDASAN TEORI

Push Down Automata (PDA) merupakan mesin otomata dari bahasa bebas

konteks. PDA di gambarkan sebagai tempat penyipanan yang tidak terbatas berupa

stack/tumpukan.

Stack ialah kumpulan dari elemen-elemen sejenis dengan sifat penambahan elemen dan

pengambilan elemen melalui suatu tempat yang disebut top of stack (puncak stack). Prinsip

pada stack adalah LIFO. Pengambilan elemen dari stack dinyatakan dengan operasi pop,

sedang memasukkan elemen ke dalam stack dengan operasi push.

Contoh s

stack :

A

D

E

Jika dilakukan operasi pop :

Jika dilakukan operasi push B, maka kondisi stack akan menjadi :

Menjadi top stack karena dimasukkan elemen B

Menjadi top stack, karena elemen A diambil (pop)

Top stack

D

E

B

D

E

Page 4: Laporan TBO Praktikum

Definisi : PDA adalah pasangan 7 tuple

M = (Q, , q0 , F, , , Z0 ), dimana :Q : himpunan hingga state, : alfabet input, : alfabet/simbol stack,

q0 : state awal, q0 Q

Z0 : simbol awal stack, Z0 F : himpunan state penerima, F Q

: fungsi transisi , : Q ( {}) 2Q × Γ∗¿ ¿ (himpunan bagian dari Q *)

(q0 , a, Z0 ) = (q0 , AZ0 ). Push/insert

(q0 , a, A) = (q1, ). Pop /delete

Untuk state q Q, simbol input a , dan simbol stack X , (q, a, X) = (p, ) berarti : PDA bertransisi ke state p dan mengganti X pada stack dengan string .

Konfigurasi PDA pada suatu saat dinyatakan sebagai triple (q, x, ), dimana : q Q : state pada saat tersebut, x * : bagian string input yang belum dibaca, dan * : string yang menyatakan isi stack dengan karakter terkiri menyatakan top of stack.

Misalkan (p, ay, X) adalah sebuah konfigurasi, dimana : a , y *, X , dan *. Misalkan pula (p, a, X) = (q, ) untuk q Q dan *. Dapat kita tuliskan bahwa : (p, ay, X) (q, y, ).

Source : toko-elektronika.com/kuliah/pda.doc

Page 5: Laporan TBO Praktikum

BAB II

HASIL PRAKTIKUM

Setelah step ke-1 Setelah step a ke n step setelah nilai b ke-1 step ketika beres

KESIMPULANPada praktikum ini saya mencoba diagram PDA dan inisialisasi nilai inputannya seperti yang ada

di modul (gambar diatas) , terbukti bahwa diagram tersebut berjalan dan berakhir di state akhir yaitu q3

yang dimana state awal yaitu q0, terlihat ada beberapa notasi yang baru seperti : Z yang berfungsi untuk

menjadikan nilai inputan menjadi top of stack sedangkan λ memungkinkan mesin

berjalan/berpindah state tanpa adanya suatu inputan.

Page 6: Laporan TBO Praktikum

BAB I

LANDASAN TEORI

Mesin Turing adalah model komputasi teoritis yang ditemukan oleh Alan Turing,

berfungsi sebagai model ideal untuk melakukan perhitungan matematis. Walaupun model ideal

ini diperkenalkan sebelum komputer nyata dibangun, model ini tetap diterima kalangan ilmu

komputer sebagai model komputer yang sesuai untuk menentukan apakah suatu fungsi dapat

selesaikan oleh komputer atau tidak (menentukan computable function). Mesin Turing terkenal

dengan ungkapan " Apapun yang bisa dilakukan oleh Mesin Turing pasti bisa dilakukan oleh

komputer."

Sebuah mesin turing terdiri atas barisan sel tersusun berupa pita yang dapat bergerak

maju mundur, komponen aktif baca/tulis pita yang memiliki status perhitungan serta dapat

mengubah/menulisi sel aktif yang ada di pita tadi, dan suatu kumpulan instruksi bagaimana

komponen baca/tulis ini harus melakukan modifikasi terhadap sel aktif pada pita, serta

bagaimana menggerakkan pita tersebut. Pada setiap langkah dalam komputasi, mesin ini akan

dapat mengubah isi dari sel yang aktif, mengubah status dari komponen baca/tulis, dan

mengubah posisi pita kekiri atau kekanan.

Mesin Turing dijelaskan oleh 7-tupleM = (Q, S, G, d, q0, B, F)

Komponen-komponennya adalah:

• Q: Himpunan berhingga dari state dari finite control. • S: himpunan berhingga dari simbol-simbol input. • G: Himpunan dari tape symbol. S merupakan subset dari G. • d: Fungsi transisi. Argumen d(q, X) adalah sebuah state q dan sebuah tape symbol X. Nilai dari d(q,

X), jika nilai tersebut didefinisikan, adalah triple (p, Y, D), dimana: • p adalah next state dalam Q• Y adalah simbol, dalam G, ditulis dalam sel yang sedang di-scan, menggantikan simbol apapun yang

ada dalam sel tersebut.• D adalah arah, berupa L atau R, berturut-turut menyatakan left atau right, dan menyatakan arah

dimana head bergerak.• q0: start state, sebuah anggota dari Q, dimana pada saat awal finite control ditemukan.• B: simbol blank. Simbol ini ada dalam G tapi tidak dalam S, yaitu B bukan sebuah simbol input.• F: himpunan dari final state, subset dari Q.

Page 7: Laporan TBO Praktikum

Source : Kamis, 24 Maret 2011 @ http://iryanaichwani.blogspot.com/2011/03/mesin-turing.html

BAB II

HASIL PRAKTIKUM

Page 8: Laporan TBO Praktikum

BAB I

LANDASAN TEORI

Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis dalam

suatu bahasa sumber (source language) dan menterjemah-kannya ke dalam suatu bahasa sasaran

(target language).

Proses kompilasi dikelompokan ke dalam dua kelompok besar:

1. Tahap Analisa (Front-end)

Menganalisis source code dan memecahnya menjadi bagian-bagian dasarnya. Menghasilkan kode

level menengah dari source code input yang ada.

2. Tahap Sintesa (Back-end)

Membangun program sasaran yang diinginkan dari bentuk antara.

Tahap-tahap yang harus dilalui pada saat mengkompilasi program, yaitu:

1. Analisa Leksikal

2. Analisa Sintaks 1-4 Tahap analisa (front-end)

3. Analisa Semantik

4. Pembangkit Kode Antara

Page 9: Laporan TBO Praktikum

5. Code optimization 5-6 Tahap sintesa (back-end)

6. Object code generation

Keterangan :

Analisa Leksikal (scanner)

Berfungsi memecah teks program sumber menjadi bagian-bagian kecil yang mempunyai satu

arti yang disebut token, seperti : konstanta, nama variabel, keyword, operator.

Analisa Sintaks(parser)

Berfungsi mengambil program sumber (sudah dalam bentuk barisan token) dan menentukan

kedudukan masing-masing token berdasarkan aturan sintaksnya dan memeriksa kebenaran dan urutan

kemunculan token.

Analisa Semantik

Berfungsi menentukan validitas semantiks/keberartian program sumber. Biasanya bagian ini

digabung dengan Pembangkit kode antara (intermediate code generator).

Pembangkit Kode Antara

Berfungsi membangkitkan kode antara.

Code optimation

Berfungsi mengefisienkan kode antara yang dibentuk.

Code generator

Berfungsi membangkitkan kode program target dalam bahasa target yang ekivalen dengan

bahasa sumber .

Symbol table management

Berfungsi mengelola tabel simbol selama proses kompilasi. Tabel simbol adalah struktur data

yang memuat record untuk tiap identifier dengan atribut-atribut identifier itu.

Penangan Kesalahan (Error handler)

Berfungsi menangani kesalahan yang berlangsung selama proses kompilasi.

KESIMPULAN

Page 10: Laporan TBO Praktikum

pernyataan pemberian nilai (assignment) :

position := initial + rate * 60

Lexical analysis

Mengelompokkan pernyataan tersebut menjadi token-token sebagai berikut :

1. Token identifier position

2. Token simbol assignment :=

3. Token identifier initial

4. Token tanda plus +

5. Token identifier rate

6. Token tanda perkalian *

7. Token konstanta angka 60

Ketika identifier pada program sumber ditemukan lexical analyzer, identifier dimasukkan ke tabel

simbol.

position := initial + rate * 60 diubah menjadi id1 := id2 + id3 * 60

Syntax analysisMemparsing atau membentuk pohon sintaks pernyataan, yaitu :

Page 11: Laporan TBO Praktikum

Semantic analysis

Memeriksa kebenaran arti program sumber, mengumpulkan informasi tipe bagi tahap

berikutnya. Tahap ini menggunakan pohon sintaks tahap syntax analysis untuk identifikasi

operator dan operand suatu ekspresi dan kalimat. Komponen penting analisis semantik adalah

pemeriksaan tipe, memeriksa operator yang harus mempunyai operand yang diijinkan oleh

spesifikasi bahasa sumber.

Karena misal adanya pernyataan deklarasi di awal :

var

position, initial, rate : real                                                                       

Maka konstanta 60 dikonversi menjadi real dengan fungsi inttoreal(60) menjadi konstanta

bilangan real.

Intermediate Code Generator

Intermediate code adalah representasi perantara antara bentuk bahasa tingkat tinggi

dengan bahasa mesin. Karena pada level berikutnya masih akan dilakukan optimasi, maka perlu

dibuat representasi yang memudahkan optimasi, yang bukan merupakan bahasa mesin.

temp1 := inttoreal(60)

temp2 := id3 * temp1

temp3 := id2 + temp2

id1 := temp3

Code Optimization

Tahap code optimization proses identifikasi dan membuang operasi-operasi yang tidak

perlu dari intermediate code generation untuk penyederhanaan sehingga nantinya kode mesin

hasil menjadi lebih cepat. Kode-kode tersebut dioptimasi menjadi :

Page 12: Laporan TBO Praktikum

Temp1 := id3 * 60.0

Id1 := id1 + temp1

Code Generator

Tahap akhir kompilator adalah pembangkitan kode target/objek dan biasanya kode mesin

atau assembly yang dapat direlokasi. Pembangkitan kode sangat bergantung pada mesin yang

dipakai, misal :

MOVF id3, R2

MULF #60.0, R2

MOVF id2, R1

ADDF R2, R1

MOVF R1, id1

Diposkan oleh Syaiful Anwar di 09.22

Source : http://semutuyet.blogspot.com/2012/11/makalah-tehnik-kompilasi.html

BAB I

LANDASAN TEORI

Lexical Analysis sering disebut dengan scanner, bertugas sebelum proses syntax Analyzer dan Intermediate Code dilakukan dimana tugas Lexical Analysis ini mendekomposisi program sumber menjadi bagian-bagian kecil.

Tugas-tugas Aturan Lexical atau Lexical Analysis secara detil adalah :

a. mengidentifikasi semua besaran yang membangun suatu bahasab. mentransformasikan ke token-token (symbol terminal dari teori bahasa automata)c. menentukan jenis dari token-tokend. menangani kesalahane. menangani tabel symbolf. scanner di desain untuk mengenali keyword, operator, identifier

contoh :

Besaran Lexical : (tergantung program)

Page 13: Laporan TBO Praktikum

Identifier dapat berupa keyword seperti if, else, begin .. end (pada Pascal) , integer (Pascal), int float (pada C)Konstanta : besaran yang berupa bilangan bulat (integer), bilangan pecahan(float / real), Boolean (true/false), string, dllOperator : operator aritmatika (+, -, *, /), operator logika(< = >)Delimiter : berguna bagi pemisah atau pembatas, seperti kurung buka, kurung tutup, titik, koma, titik dua, titik koma, white_spaceWhite_space : pemisah yang diabaikan oleh program, seperti : enter, spasi, ganti baris dan akhir file

Program sumber merupakan input dari penganalis leksikal ala scanner. Analisis leksikal mempunyai tujuan untuk memisahkan naskah program sumber yang masuk menjadi bagian leksikografis terkecil atau Token seperti konstanta, nama varibel, reserved word dan operator.

Scanner biasanya berinteraksi dengan parser melalui salah satu dari 2 cara berikut. Yang pertama, scanner dapat mengolah program sumber secara terpisah, sebagai satu fasa sebelum Parser mulai bekerja. Kemudian token disimpan dalam sebuah file atau dalam sebuah file besar. Cara kedua melibatkan antara Parser dan Scanner yang saling berinteraksi, scanner dipanggil oleh parser bila token berikut dalam program sumber diperlukan.

Token hasil pekerjaan scanner biasanya disajikan dalam bentuk Bilangan Penyajian internal berupa bilangan bulat (integer) yang unik.

Kamis, 27 Oktober 2011Source : http://putragoz.blogspot.com/2011/10/lexical-analysis-sering-disebut-dengan.html

BAB II

HASIL PRAKTIKUM

program Scan;Uses crt;

Varx : text;y : Char;

token,Ttoken : String;

procedure input;begin

read(x,y);end;

procedure output;begin

writeln(token:10,' ',Ttoken);end;

procedure scan;begin

if (y in['0'..'9']) thenbeginrepeatbegin

token := token + y;input;end;

until (not(y in['0'..'9']));Ttoken := 'Tbulat';

output;token := '';

end;if (y in[':','=',';','.']) then

beginrepeatbegin

token := token + y;

Page 14: Laporan TBO Praktikum

clrscr;assign(x,'contoh.txt');

reset(x);repeatinput;

if (y in['A'..'Z','a'..'z']) thenbeginrepeatbegin

token := token + y;input;end;

until (not(y in['A'..'Z','a'..'z']));Ttoken := 'Tpengenal';if token = 'Mulai' then

Ttoken := 'Tmulai';if token = 'Jika' then

Ttoken:='Tjika';if token='maka' then

Ttoken := 'Tmaka';if token = 'div' then

Ttoken := 'Tdiv';if token ='Beda' then

Ttoken := 'Tbeda';if token ='mod' then

Ttoken :='Tmod';if token = 'Selesai' then

Ttoken := 'Tselesai';output;

token := '';end;

input;end;

until (not(y in[':','=',';','.']));if token =':=' then

Ttoken := 'Tmasuk';if token ='=' then

Ttoken := 'Tsama';if token ='.' thenTtoken := 'Ttitik';if token =';' then

Ttoken := 'Ttkoma';output;

token := '';end;

until y = '#';end;beginscan;

readln;end.

KESIMPULAN

Jadi, program yang coba saya terapkan pada bab Scanner ini, terlihat jelas bahwa

apabila ada suatu string (untaian kata) yang equal dengan kondisi dari listing program diatas,

maka program akan otomatis menganalisa string tersebut sebagai pernyataan yang sudah di

sesuaikan berdasarkan listing diatas.

Page 15: Laporan TBO Praktikum

Note : syntax program Scanner diatas hanya akan menganalisa file bernama dan berekstensi assign(x,'contoh.txt');

BAB I

LANDASAN TEORI

Parsing adalah suatu cara memecah-mecah suatu rangkaian masukan (misalnya dari berkas

atau keyboard) yang akan menghasilkan suatu pohon uraian (parse tree) yang akan digunakan pada

tahap kompilasi berikutnya yaitu analisis semantik.

Penganalisa sintaks : memeriksa kesesuaian pola deretan token dengan aturan sintaks yang

ditentukan dalam bahasa sumber. Sederetan token yang tidak mengikuti aturan sintaks akan

dilaporkan sebagai kesalahan sintaks (sintax error). Secara logika deretan token yang bersesuaian

dengan sintaks tertentu akan dinyatakan sebagai pohon parsing (parse tree).

A. Metode Parsing.

ada beberapa metode Paring antara Lain

Page 16: Laporan TBO Praktikum

a) Waktu eksekusi

b) Penanganan Masalah

c) Penanganan Code

B. golongan Parsing

a) Top-dwon

b) Bottom-dwon

c) dan satu lagi mengenai parsing dengan Metode brute force.

Posisi Penganalisa Sintaks (Parser) dalam proses kompilasi adalah sebagai berikut :

- Deretan token : dihasilkan oleh Penganalisa Leksikal (Scanner)

- Pohon parse : suatu pohon dimana akarnya (root) adalah simbol awal grammar (starting symbol),

setiap node dalam (inner node) adalah simbol nonterminal, dan daunnya (leaf) dibaca dari kiri ke

kanan adalah deretan token masukan. Pohon parse ini dibentuk berdasarkan aturan grammar yang

ditetapkan untuk parser.

- Kesalahan sintaks : terjadi jika pola deretan token tidak memenuhi ketentuan pola yang

telah ditentukan grammar untuk parser.

Grammar yang dipilih untuk scanner adalah Regular Grammar (RG) sedangkan untuk parser

adalah Grammar Context Free (CFG). Penting diketahui perbedaan cara pandang RG dengan CFG

terhadap sebuah token yang mengalir antara scanner dan parser. Bagi RG (scanner) sebuah token

Page 17: Laporan TBO Praktikum

(kecuali reserve word) adalah sebuah kalimat dimana setiap karakter pembentuk token tersebut adalah

simbol terminal. Sebaliknya bagi CFG (parser) sebuah token adalah sebuah simbol terminal dimana

sederetan tertentu token akan membentuk sebuah kalimat.

Source : ajuarna.staff.gunadarma.ac.id/Downloads/files/580/Gabungan.pdf

BAB II

HASIL PRAKTIKUM

BAB I

LANDASAN TEORI

Kompilator (compiler) adalah sebuah program yang membaca suatu program yang

ditulis Dalam suatu bahasa sumber (source language) dan menterjemahkannya kedalam suatu

bahasa sasaran (target language) Proses kompilasi dapat digambarkan melalui sebuah blok

diagram sebagai berikut :

Page 18: Laporan TBO Praktikum

Proses Kompilasi dikelompokkan kedalam dua kelompok besar :

1. Analisa : Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara

(Intermediate Representation )

2. Sintesa : Membangun program sasaran yang diinginkan dari bentuk antara

Posted: November 6, 2012

Source : http://indrasuprayitno.wordpress.com/2012/11/06/materi-kompilator/

BAB II

HASIL PRAKTIKUM

Page 19: Laporan TBO Praktikum

KESIMPULAN & SARAN

Program Kompilator yang ada dimodul terbukti berjalan, namun ada beberapa hal yang

harus dilakukan agar step by step dari pembelajaran praktikum ini lebih mudah dan jelas.

Beberapa Hal-hal yang harus dilakukan sebelumnya :

- mempersiapkan file berekstensi .txt dengan nama file pas (pas.txt)

- menghapus baris syntax typedef enum bool {false=0,true=1};

- mengisi file pas.txt dengan string misal : then , begin , end , else ... dst