Laporan TBO Praktikum
-
Upload
ghienz-ichwaniadi-ginanjar -
Category
Documents
-
view
176 -
download
20
Transcript of 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.
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.
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
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
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.
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.
Source : Kamis, 24 Maret 2011 @ http://iryanaichwani.blogspot.com/2011/03/mesin-turing.html
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 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
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
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 :
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 :
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)
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;
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.
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
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
(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 :
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
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